Image, video, and audio generations
Create asynchronous media jobs and retrieve their outputs.
POST /generations creates media. GET /generations/{id} retrieves its status and outputs. Both paths are relative to https://app.verbatik.com/api/v1.
Request
Required fields are mode, model, and prompt.
| Field | Meaning |
|---|---|
mode | image, video, or audio |
model | Exact model ID from GET /models |
prompt | Non-empty direction, up to 10,000 characters; model-specific limits can be lower |
persona_id | Optional reusable persona resource ID |
input | Model-supported reference inputs |
parameters | Supported count, size, aspect ratio, quality, duration, resolution, voice, speed, looping, lyrics, or language boost |
delivery | public_url (default) or signed_url |
Discover the model's capabilities and defaults first. duration, speed, and other enumerated settings are strings in this API. Not every field is valid for every model.
Supported input slots include reference_images, start_frame, end_frame, image_refs, video_refs, audio_refs, video, character, and motion_video. They hold arrays of HTTPS URLs. Supply only the slots accepted by the selected model.
Example request body
Replace example media URLs with actual reachable assets or use the upload flow. Individual models impose stricter reference and output limits than the general request schema.
Lifecycle
Creation returns 202 and reserves the quoted credits before queuing work. Poll GET /generations/{id} with generations:read.
| Status | What to do |
|---|---|
queued | Wait and poll with backoff |
completed | Read outputs |
partially_completed | Keep successful outputs and inspect errors |
failed | Inspect errors before submitting another operation |
Each successful output includes an id, url, and media_type. Signed URLs also include expires_at. Retrieve the resource again for a fresh signed link.
List generations
GET /generations?limit=20 returns API generations with has_more and next_cursor. Pass the returned cursor as cursor to continue. The maximum limit is 100.
For event-driven completion, subscribe to generation.completed and generation.failed webhooks. Use idempotency on creation requests and check partial results before retrying a batch.