Docs
API reference
Base URL http://localhost:3456/api/v1. Authenticate with Authorization: Bearer YOUR_API_KEY.
List models
GET/api/v1/models
{
"object": "list",
"data": [
{
"id": "seedance-2.5",
"object": "model",
"name": "Seedance 2.5",
"kind": "video",
"pricing": {
"cinematic": {
"credits": 597,
"unit": "about 10 seconds",
"available": true
}
}
}
]
}Create a video
POST/api/v1/videos
| Field | Type | Notes |
|---|---|---|
character_id | string | Required. A character with a bible. |
story | string | Required. A story type or a one-line premise. |
duration | integer | 4 to 30. Default 5. |
resolution | string | 720p today. |
outfit | string | Optional wardrobe override for this clip. |
setting | string | Optional place override for this clip. |
dry_run | boolean | Validate and price without rendering or charging. |
{
"character_id": "your-character-id",
"story": "Show the product, then the offer",
"duration": 8,
"setting": "A yacht deck at dusk"
}{
"id": "vid_mufa1b2c9f3e",
"object": "video",
"status": "processing",
"stage": "Queued",
"progress": 0.02,
"model": "seedance-2.5",
"character_id": "your-character-id",
"story": "Show the product, then the offer",
"duration": 8,
"resolution": "720p",
"cost_credits": 362,
"hook": null,
"spoken_line": null,
"caption": null,
"output_url": null,
"error": null,
"created_at": "2026-09-24T06:28:52.362Z",
"balance_credits": 1638
}Get a video
GET/api/v1/videos/{id}
status is one of processing, succeeded, failed.
{
"id": "vid_mufa1b2c9f3e",
"object": "video",
"status": "succeeded",
"stage": "Ready",
"progress": 1,
"model": "seedance-2.5",
"character_id": "your-character-id",
"story": "Show the product, then the offer",
"duration": 8,
"resolution": "720p",
"cost_credits": 362,
"hook": "He booked the suite to impress me",
"spoken_line": "He booked the suite to impress me. I was already bored before the door shut.",
"caption": "He booked the suite.\nI was already bored.",
"output_url": "http://localhost:3456/api/videos/vid_mufa1b2c9f3e/file",
"error": null,
"created_at": "2026-09-24T06:28:52.362Z"
}List videos
GET/api/v1/videos?limit=20&character_id=your-character-id
{
"object": "list",
"data": [
{
"id": "vid_mufa1b2c9f3e",
"object": "video",
"status": "processing",
"stage": "Seedance 2.5 is rendering",
"progress": 0.4,
"model": "seedance-2.5",
"character_id": "your-character-id",
"story": "Show the product, then the offer",
"duration": 8,
"resolution": "720p",
"cost_credits": 362,
"hook": "He booked the suite to impress me",
"spoken_line": "He booked the suite to impress me. I was already bored before the door shut.",
"caption": "He booked the suite.\nI was already bored.",
"output_url": null,
"error": null,
"created_at": "2026-09-24T06:28:52.362Z"
}
],
"has_more": false
}List characters
GET/api/v1/characters
{
"object": "list",
"data": [
{
"id": "your-character-id",
"object": "character",
"name": "Your character",
"niche": "Ultra luxury wealth",
"city": "Monaco",
"age": 24,
"bible": "…"
}
]
}Create a character
POST/api/v1/characters
Send name and bible, or "design": true with niche, city, age, glam, hair, wardrobe, and setting. Returns 201 with the character.
Chat completions
POST/api/v1/chat/completions
OpenAI-compatible. See OpenAI-compatible chat.
Next