Videos · API reference

Videos

Submit a generation job, check its status, and fetch the result.

All requests need Authorization: Bearer tf_…; see Authentication. Bodies are JSON. Errors use the same envelope as the chat API: { "error": { "message", "type", "code" } }.

Submit a job

POST /v1/videos
FieldTypeDescription
modelstring, requiredA routable model, for example minimax/h3. List them with GET /v1/models.
taskstring, requiredt2va, fl2va, or ref2va. See Tasks and inputs.
promptstringRequired for t2va; optional for fl2va and ref2va.
secondsinteger, 4 to 15Length of the clip.
targetobject{ "short_edge": 768, "aspect_ratio": "16:9" }. Only 768 is accepted for short_edge. The set of supported aspect ratios is not final.
qualitystringlossless or turbo at launch. See Quality and output.
conditionsarrayRequired for fl2va (1 or 2 frames) and ref2va. Entry shape depends on the task.
num_outputs_per_promptinteger, 1 to 10Number of takes. Fetch each by variant.
seedintegerStarting noise, for repeatable runs.

Returns 201. The request is validated first; nothing is queued if it is invalid. Defaults for fields you omit are not final.

201 Created
{
  "id": "vid_9f2a...",
  "status": "queued",
  "model": "minimax/h3",
  "created_at": "2026-10-17T18:04:02Z",
  "eta_seconds": 60
}

Get a job

GET /v1/videos/{id}
200 OK
{
  "id": "vid_9f2a...",
  "status": "processing",
  "progress": null,
  "created_at": "2026-10-17T18:04:02Z",
  "started_at": "2026-10-17T18:04:20Z",
  "completed_at": null
}
FieldDescription
statusqueued · processing · completed · failed · canceled. See Jobs.
progressAlways null. There is no mid-generation progress.
created_atWhen the job was accepted.
started_atWhen a worker claimed it; null while queued.
completed_atWhen it finished; null until then.

Download a result

GET /v1/videos/{id}/content?variant=0

302 to a short-lived signed URL for the MP4. 404 if the job is not completed. variant picks among the outputs when num_outputs_per_prompt was more than 1; it defaults to the first.

List models

GET /v1/models

Lists the model values that are routable right now, so a client does not need to hard-code availability. A model that is documented but not yet live is reported as not yet available, not as a generic 404.

Errors

typeWhen
authentication_errorMissing or revoked key (code: invalid_api_key, HTTP 401).
invalid_request_errorUnknown model or task; seconds or num_outputs_per_prompt out of range; missing prompt for t2va; missing or malformed conditions. Rejected before queueing (HTTP 400).
content_policy_violationThe prompt or an input was rejected by moderation. No GPU time was used.
api_errorA server-side failure.

A note on status codes

400 and 401 follow the chat API. The HTTP status for content_policy_violation is not specified yet; branch on error.type, not on the status.