Skip to main content
GET
/
api
/
v1
/
jobs
/
recordInfo
Get Task Status | Seedance2 API - AI Video Generation
curl --request GET \
  --url https://kinovi.ai/api/v1/jobs/recordInfo
{
  "taskId": "<string>",
  "model": "<string>",
  "status": "<string>",
  "creditsUsed": 123,
  "output": {},
  "error": {},
  "createTime": 123,
  "completeTime": {}
}

Query Parameters

taskId
string
required
The task ID returned when creating a task

Headers

HeaderValueRequired
AuthorizationBearer YOUR_API_KEYYes

Example Request

Try it now with the demo key — no signup required:
curl -s "https://kinovi.ai/api/v1/jobs/recordInfo?taskId=demo_task_t2v_success" \
  -H "Authorization: Bearer zimg_demo_readonly_d2cb4bea56fcc21a9eb106e0"
See Quickstart for more sample task IDs.
curl -X GET "https://kinovi.ai/api/v1/jobs/recordInfo?taskId=task_clxxxxxx" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response Fields

taskId
string
Task identifier
model
string
Model identifier. Returns seedance-20.
status
string
waiting, generating, success, or fail
creditsUsed
number
Credits consumed
output
array | null
Array of result objects when status is success:
  • url (string) — video URL
  • width (number) — video width
  • height (number) — video height
error
object | null
Error details when status is fail, null otherwise.
  • code (string) — error code (e.g. "2038", "4011", "500" for generic errors)
  • message (string) — human-readable error message
See Task Error Messages for all possible values.
createTime
number
Creation timestamp (ms)
completeTime
number | null
Completion timestamp (ms), null if not completed

Task States

Task submitted, waiting for processing. Continue polling.
Video is being generated. Continue polling every 3-5 seconds.
Video generated. Read output array for video URL.
Generation failed. Check error for details.

Example Responses

Generating

{
  "taskId": "task_clxxxxxx",
  "model": "seedance-20",
  "status": "generating",
  "creditsUsed": 200,
  "output": null,
  "error": null,
  "createTime": 1735599634000,
  "completeTime": null
}

Success

{
  "taskId": "task_clxxxxxx",
  "model": "seedance-20",
  "status": "success",
  "creditsUsed": 200,
  "output": [
    {
      "url": "https://static.kinovi.ai/generated/video.mp4",
      "width": 1280,
      "height": 720
    }
  ],
  "error": null,
  "createTime": 1735599634000,
  "completeTime": 1735599754000
}

Failed

{
  "taskId": "task_clxxxxxx",
  "model": "seedance-20",
  "status": "fail",
  "creditsUsed": 0,
  "output": null,
  "error": {
    "code": "2038",
    "message": "Your input text violates platform rules. Please modify and try again."
  },
  "createTime": 1735599634000,
  "completeTime": null
}

Polling Example

async function waitForCompletion(taskId, timeout = 300000) {
  const startTime = Date.now();

  while (Date.now() - startTime < timeout) {
    const response = await fetch(
      `https://kinovi.ai/api/v1/jobs/recordInfo?taskId=${taskId}`,
      { headers: { 'Authorization': `Bearer ${process.env.SEEDANCE_API_KEY}` } }
    );

    const data = await response.json();

    if (data.status === 'success') {
      return { success: true, output: data.output };
    }
    if (data.status === 'fail') {
      return { success: false, error: data.error };
    }

    await new Promise(resolve => setTimeout(resolve, 5000));
  }

  throw new Error('Task timeout');
}

Error Responses

CodeMessageCause
400Invalid taskIdTask ID format incorrect
401Invalid API KeyAPI key invalid or expired
403Access deniedYou can only query your own tasks
404Task not foundTask doesn’t exist

Next Steps

Error Handling

Handle errors in your code