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

# Seedance raw API

> Seedance video generation over the Aurous Labs API — provider-shape bodies with Aurous-native identifiers. Point the Ark SDK at Aurous by changing two lines.

The **raw Seedance API** is a passthrough to the Seedance video generation surface, mounted on the Aurous Labs V1 API. Request and response bodies are **shape-identical to the native Seedance video API** — the same `content[]` items, the same task object — with the task **identifiers Aurous-native** (the create echo is `{"id": "vid_…"}`), so tutorial code and the official Ark SDK run unchanged. The only thing that changes is where the request goes and how it is billed:

* **Base URL** — `https://api.aurous-labs.com/v1` instead of the provider's host.
* **Key** — your Aurous Labs API key (`al_live_…`) instead of a provider token.
* **Billing** — in Aurous **credits**, metered on the render and settled at success. See [Models & pricing](/api-reference/seedance/models-and-pricing).

Everything else — the model names (`seedance-2.0`, `seedance-2.0-fast`, `seedance-2.0-mini`), the parameters, the polling loop, the error bodies — is the Seedance contract you already know.

<Note>
  Looking for identity-consistent video from your own reference footage, managed
  characters, or a first/last-frame helper with server-side asset handling? That
  is the value-add [`POST /v1/videos`](/api-reference/videos/create-video) surface,
  a different product. The raw API documented here forwards your body verbatim to
  Seedance and returns its response verbatim.
</Note>

## Authentication

Pass your key either way — both are accepted on every raw endpoint:

```text theme={null}
X-Api-Key: al_live_<your-key>
# or, what the Ark SDK sends by default:
Authorization: Bearer al_live_<your-key>
```

The `Authorization: Bearer` form is the Ark SDK default, so pointing the SDK at Aurous Labs needs no auth changes. Get a key from the [dashboard](https://app.aurous-labs.com/dashboard).

## Endpoints

| Method   | Path                                  | Purpose                                                                             |
| -------- | ------------------------------------- | ----------------------------------------------------------------------------------- |
| `POST`   | `/v1/contents/generations/tasks`      | [Create a task](/api-reference/seedance/create-task)                                |
| `GET`    | `/v1/contents/generations/tasks/{id}` | [Retrieve a task](/api-reference/seedance/retrieve-task) (poll for status + result) |
| `GET`    | `/v1/contents/generations/tasks`      | [List tasks](/api-reference/seedance/list-tasks)                                    |
| `DELETE` | `/v1/contents/generations/tasks/{id}` | [Cancel or delete a task](/api-reference/seedance/cancel-delete)                    |

Tasks are identified by a `vid_…` id returned on create. The raw surface speaks `vid_…` ids only.

## 60-second quickstart

Submit a text-to-video task, then poll until it succeeds.

<CodeGroup>
  ```python Ark SDK (Python) theme={null}
  # Install the Ark SDK (its Python import is `byteplussdkarkruntime`),
  # then point it at Aurous Labs by setting base_url + api_key.
  from byteplussdkarkruntime import Ark

  client = Ark(
      base_url="https://api.aurous-labs.com/v1",
      api_key="al_live_…",
  )

  task = client.content_generation.tasks.create(
      model="seedance-2.0",
      content=[{"type": "text", "text": "A kitten yawns at the camera"}],
  )
  print(task.id)  # vid_01J9Z3K7Q0XY2ABCDEFGHJKMNP
  ```

  ```bash cURL theme={null}
  curl https://api.aurous-labs.com/v1/contents/generations/tasks \
    -H "X-Api-Key: al_live_…" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "seedance-2.0",
      "content": [{"type": "text", "text": "A kitten yawns at the camera"}]
    }'
  # → HTTP 200  {"id": "vid_01J9Z3K7Q0XY2ABCDEFGHJKMNP"}
  ```
</CodeGroup>

The create response is **HTTP 200** with the body `{"id": "vid_…"}` — provider parity, not a `201`. Your credit hold for the task is reported on the `Aurous-Credits-Held` response header; the body is never touched.

### Poll until it is done

Generation is asynchronous. Retrieve the task on an interval until `status` reaches a terminal state (`succeeded`, `failed`, `expired`, or `cancelled`):

<CodeGroup>
  ```python Ark SDK (Python) theme={null}
  import time

  while True:
      t = client.content_generation.tasks.get(task_id=task.id)
      if t.status in ("succeeded", "failed", "expired", "cancelled"):
          break
      time.sleep(10)

  if t.status == "succeeded":
      print(t.content["video_url"])
  ```

  ```bash cURL theme={null}
  curl https://api.aurous-labs.com/v1/contents/generations/tasks/vid_01J9Z3K7Q0XY2ABCDEFGHJKMNP \
    -H "X-Api-Key: al_live_…"
  # → {"id":"vid_01J9Z3K7Q0XY2ABCDEFGHJKMNP","status":"succeeded","content":{"video_url":"https://…"}, …}
  ```
</CodeGroup>

A comfortable poll interval is \~10–15 seconds. Prefer fewer polls? Pass a `callback_url` on create and Aurous relays an event to it when the task finishes — but the relayed callback is **unsigned** and best-effort, so treat it as a prompt to fetch authoritative status with a `GET`, not as trusted data. See [Differences → Callbacks](/api-reference/seedance/differences#callbacks).

<Warning>
  The `video_url` (and `last_frame_url`, if you requested it) **expires 24 hours
  after the video is generated** — a provider constraint. Download and store
  anything you want to keep. The task record itself stays queryable on Aurous well
  past that (see [Retrieve a task](/api-reference/seedance/retrieve-task#read-through-and-retention)).
</Warning>

## Next steps

* [Create a task](/api-reference/seedance/create-task) — the full request reference: content items, modes, and every parameter.
* [Retrieve a task](/api-reference/seedance/retrieve-task) — the task object, the status enum, and how the final charge settles.
* [Models & pricing](/api-reference/seedance/models-and-pricing) — the per-model rate card, the token formula, and the exact-price guarantee.
* [Differences](/api-reference/seedance/differences) — the honest delta list vs. the native Seedance API (limits, retention, callbacks, error envelope).
