> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xingchaoyiqing.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Seedance 1.5 Video Generation — Query Task and Status

> GET /v1/result/{id} — Poll for Seedance 1.5 video status. Returns video_url on completion. Status can also be cancelled. Results expire after 1 day.

After you create a Seedance 1.5 video generation task, use this endpoint to check its status and retrieve the download URL once generation is complete. Pass the `id` returned by the [Create Video Task](/api-reference/video/seedance-create) endpoint as the path parameter, and keep polling until `status` reaches a terminal state.

<Note>
  Video generation is **asynchronous**. Continue polling at the recommended interval until `status` is `"completed"`, `"failed"`, or `"cancelled"`.
</Note>

## Endpoint

```
Base URL:  https://zcbservice.aizfw.cn/kyyReactApiServer
Endpoint:  GET /v1/result/{id}
Full URL:  https://zcbservice.aizfw.cn/kyyReactApiServer/v1/result/{id}
```

All requests must include your API key as a Bearer token:

```
Authorization: Bearer YOUR_API_KEY
```

## Path Parameters

<ParamField path="id" type="string" required>
  The unique task identifier returned by the [Create Video Task](/api-reference/video/seedance-create) endpoint (e.g. `video_abc123def456`).
</ParamField>

## Response Fields

<ResponseField name="id" type="string">
  Unique identifier of the video generation task.
</ResponseField>

<ResponseField name="object" type="string">
  Object type. Always `"video"`.
</ResponseField>

<ResponseField name="created" type="integer">
  Unix timestamp (seconds) of when the task was created.
</ResponseField>

<ResponseField name="model" type="string">
  The Seedance 1.5 model used for generation (e.g. `"seedance_1_5_pro_720p"`).
</ResponseField>

<ResponseField name="status" type="string">
  Current task status:

  * `queued` — task is in the queue, waiting to be processed
  * `processing` — the model is actively generating the video
  * `completed` — generation succeeded; `video_url` is populated
  * `failed` — generation failed; see `error` for details
  * `cancelled` — task was cancelled before completion
</ResponseField>

<ResponseField name="video_url" type="string">
  A direct download URL for the generated MP4 video. Only present when `status` is `"completed"`. Valid for **1 day** after generation — download and store the video promptly.
</ResponseField>

<ResponseField name="actualDuration" type="number">
  The actual output duration of the video in seconds. Only present when `status` is `"completed"`. Useful when you used `duration: -1` (auto).
</ResponseField>

<ResponseField name="error" type="string">
  Error message describing why the task failed. Only present when `status` is `"failed"`.
</ResponseField>

## Status Flow

| Step | Status       | Meaning                                        |
| ---- | ------------ | ---------------------------------------------- |
| 1    | `queued`     | Task created and added to the processing queue |
| 2    | `processing` | Seedance 1.5 model is generating the video     |
| 3    | `completed`  | Video is ready; retrieve it via `video_url`    |
| —    | `failed`     | An error occurred; inspect the `error` field   |
| —    | `cancelled`  | Task was cancelled before generation finished  |

## Polling Recommendations

Choose your polling interval based on the model resolution you used:

| Model                             | Recommended Interval | Estimated Generation Time |
| --------------------------------- | -------------------- | ------------------------- |
| `seedance_1_5_pro_480p` (preview) | every 10–20 s        | 30 s – 2 min              |
| `seedance_1_5_pro_720p`           | every 30–60 s        | 2–5 min                   |
| `seedance_1_5_pro_1080p`          | every 30–60 s        | 3–8 min                   |

<Tip>
  Start with a **480p preview** (`seedance_1_5_pro_480p`) to validate your prompt and composition before generating at 720p or 1080p. This saves time and cost.
</Tip>

* Stop polling immediately when `status` is `"completed"`, `"failed"`, or `"cancelled"`.
* Avoid polling more frequently than every 10 seconds to prevent rate limiting.

## Video & Task Retention

<Warning>
  Both the task record **and** the generated video file are retained for only **1 day**. After 24 hours, both are permanently deleted and cannot be recovered. Download and save the video to your own storage as soon as generation completes.
</Warning>

* Format: **MP4**
* Retention: **1 day** (task ID and video file)

## Code Examples

<CodeGroup>
  ```bash cURL theme={null}
  curl --request GET \
    --url https://zcbservice.aizfw.cn/kyyReactApiServer/v1/result/video_abc123def456 \
    --header 'Authorization: Bearer YOUR_API_KEY'
  ```

  ```python Python theme={null}
  import time
  import requests

  BASE_URL = "https://zcbservice.aizfw.cn/kyyReactApiServer"
  API_KEY = "YOUR_API_KEY"
  TASK_ID = "video_abc123def456"

  headers = {"Authorization": f"Bearer {API_KEY}"}

  # Adjust interval based on model: 15s for 480p, 30s for 720p/1080p
  POLL_INTERVAL = 30

  while True:
      response = requests.get(
          f"{BASE_URL}/v1/result/{TASK_ID}",
          headers=headers,
      )
      data = response.json()
      status = data["status"]
      print(f"Status: {status}")

      if status == "completed":
          print(f"Video URL: {data['video_url']}")
          print(f"Actual duration: {data.get('actualDuration')}s")
          break
      elif status in ("failed", "cancelled"):
          print(f"Task ended with status '{status}': {data.get('error')}")
          break

      time.sleep(POLL_INTERVAL)
  ```
</CodeGroup>

**Example response — processing:**

```json theme={null}
{
  "id": "video_abc123def456",
  "object": "video",
  "created": 1761635478,
  "model": "seedance_1_5_pro_720p",
  "status": "processing",
  "video_url": null,
  "error": null
}
```

**Example response — completed:**

```json theme={null}
{
  "id": "video_abc123def456",
  "object": "video",
  "created": 1761635478,
  "model": "seedance_1_5_pro_720p",
  "status": "completed",
  "video_url": "https://cdn.example.com/videos/video_abc123def456.mp4",
  "actualDuration": 5,
  "error": null
}
```
