Video generation is asynchronous: receiving a task ID means the request was accepted, not that the video is complete. Submitting a generation or remix request may consume credit; do not resubmit a job just to check its progress.

Submit a task

Use POST /v1/videos with Authorization: Bearer YOUR_API_KEY.
ParameterRequiredMeaning
modelYesExact available video model ID.
promptYesDescription of the video.
input_referenceNoReference image for models supporting image-to-video.
secondsNoDuration supported by the selected model.
sizeNoDimensions supported by the selected model.
Save the returned task ID. Check model availability and supported duration or size in Model Square.

Poll the existing task

Send GET /v1/videos/{task_id} with the same authorization header, for example every 5–10 seconds while the job is pending.
StatusMeaningNext action
queuedAccepted and waiting.Wait, then query this task again.
in_progressGeneration is running.Wait, then query this task again.
completedGeneration finished.Read the returned result or download the content.
failedGeneration failed.Inspect the returned error before deciding whether to retry.
Poll with GET; do not repeat the creation POST, which can create and charge for a second job.

Retrieve or remix the result

  • Download a completed result with GET /v1/videos/{task_id}/content and the authorization header.
  • Where the completed response provides metadata.url, that URL can be used to view the result.
  • Use POST /v1/videos/{video_id}/remix only when the original job and route support remixing.
A graphical walkthrough is available in Apifox video tutorial (Chinese).