Upload reference files
Create a presigned upload, upload bytes, then reference the resulting URL.
Create uploads with files:write scope. The endpoint returns an upload URL; it does not accept file bytes in the initial JSON request.
1. Request an upload
Use the actual byte size of your file. The 201 response includes upload_url, upload_headers, url, and expires_at.
2. Upload the file bytes
Send an HTTP PUT to the returned upload_url, using the exact upload_headers and the file as the request body. This goes to storage; do not attach your Verbatik API key to the storage request.
For a PNG, after assigning the returned upload URL to UPLOAD_URL:
Upload URLs expire after 15 minutes. If an upload URL has expired, create a new upload request with a new idempotency key.
3. Use the media URL
After the PUT succeeds, pass the response's url in the appropriate generation input slot. Do not pass upload_url, which is only for transferring the bytes.
Current limits
| Category | Maximum size | Accepted MIME types |
|---|---|---|
| Images | 15 MiB | PNG, JPEG, WebP, GIF |
| Audio | 25 MiB | MPEG, WAV, WebM, Ogg, MP4, FLAC |
| Video | 50 MiB | MP4, WebM, QuickTime |
The generation model can impose stricter format, duration, or reference limits. Uploaded URLs are public media URLs; do not treat them as private workspace documents.