Retrieve a video generation task

Use GET /v1/videos/{id}?model={model}. The model query parameter must match creation. New task IDs are signed handles beginning with ioa_v1., bound to the model and the provider that accepted the task. The model parameter is still required.

Request fields

id: the complete task ID from creation, preserved as an opaque string and URL encoded; do not replace it with a provider-side task ID. model: required public InOneAPI model ID used at creation. Authorization: a valid key owned by the same user with model access. No request body or pagination fields. Example IDs below are placeholders; replace them with the actual creation response.

curl --get 'https://api.inoneapi.com/v1/videos/ioa_v1.REPLACE_WITH_RETURNED_TASK_ID' \
  --header "Authorization: Bearer $INONEAPI_API_KEY" \
  --data-urlencode 'model=YOUR_MODEL_ID'

Response fields

{
  "id":"ioa_v1.REPLACE_WITH_RETURNED_TASK_ID",
  "status":"succeeded",
  "created_at":"2026-09-05T08:30:00Z",
  "completed_at":"2026-09-05T08:31:12Z",
  "video_url":"https://example.com/output.mp4",
  "error":null
}
FieldTypeResponse fields
idstringTask identifier, not the gateway trace ID.
statusstringqueued: waiting; running: processing; succeeded: completed; failed: unsuccessful; cancelled: cancelled; expired: expired. Reported states follow the provider response.
created_atstringCreation time in the provider's format (often ISO 8601), only when the provider returns it. The platform does not synthesize or convert timestamps.
completed_atstring/nullCompletion time in the provider's format; omitted or null while unfinished.
video_urlstring/nullSuccessful output URL; usually absent or null otherwise. Expiration and signed URL behavior depend on the provider; permanent hosting is not guaranteed.
errorobject/nullError object or null. code is machine-readable; message is human-readable. Availability depends on the provider.
{"id":"ioa_v1.REPLACE_WITH_RETURNED_TASK_ID","status":"failed","error":{"code":"GENERATION_FAILED","message":"Generation could not be completed"}}

Polling and errors

Poll every 2–5 seconds with an overall deadline. Continue only for queued/running; stop for every terminal status. Respect Retry-After for 429 and use bounded backoff for 5xx. Check credentials for 401/403; verify model, ID and provider route for 404. HTTP 200 alone does not indicate success. Do not recreate a task because a polling request failed.

Current limitations

New signed handles validate user ownership and public model, and pin retrieval to the provider that accepted the task. Invalid signatures or user/model mismatches return 404 VIDEO_TASK_NOT_FOUND. If that provider is unavailable, the lookup is not moved to another provider and may return 503 UPSTREAM_UNAVAILABLE. Legacy raw IDs lack the same binding guarantees; keep using their original lookup path. Universal cancellation is not provided. Only supporting providers dispatch callbacks.

Try in the playground

The console Playground and model detail “Try now” panel support text-to-video generation and poll every 3 seconds for up to 10 minutes per waiting window. After stopping or a query error, “Resume checking” retrieves the original task without creating another. Stopping the wait does not cancel upstream generation. Successful results appear in a video player. Saved console conversations retain the task and result URL; external URLs may still expire.