Documentation
Generate Seedance video through one asynchronous REST API.
Send a prompt with your key. The call answers 202 at once with a queued generation. This example creates a Seedance video.
curl
curl https://loopling.ai/v1/video/generations \
-H "Authorization: Bearer $LOOPLING_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5",
"prompt": "A paper lantern drifting over a night harbour, slow dolly in",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 5
}'Node
const res = await fetch('https://loopling.ai/v1/video/generations', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.LOOPLING_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'seedance-2.5',
prompt: 'A paper lantern drifting over a night harbour, slow dolly in',
aspect_ratio: '16:9',
resolution: '1080p',
duration: 5,
}),
})
const generation = await res.json() // { id: 'vgen_…', status: 'queued', ink_reserved, … }Python
import os, requests
res = requests.post(
"https://loopling.ai/v1/video/generations",
headers={"Authorization": f"Bearer {os.environ['LOOPLING_API_KEY']}"},
json={
"model": "seedance-2.5",
"prompt": "A paper lantern drifting over a night harbour, slow dolly in",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 5,
},
)
generation = res.json() # {"id": "vgen_…", "status": "queued", "ink_reserved": …}{
"id": "vgen_01J9X6K3M8Q2",
"object": "video.generation",
"status": "queued",
"model": "seedance-2.5",
"created_at": "2026-10-04T08:12:44Z",
"ink_reserved": 245,
"usd_payg_reserved": 2.45,
"request": {
"model": "seedance-2.5",
"prompt": "A paper lantern drifting over a night harbour, slow dolly in",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 5,
"generate_audio": true
}
}Every generation takes three calls.
| Step | Call | Returns |
|---|---|---|
| Submit | POST /v1/video/generations | 202 with status: "queued" |
| Poll | GET /v1/video/generations/{id} | The generation, until status is succeeded or failed |
| Download | GET /v1/video/generations/{id}/content | 302 to the MP4 |
Status moves from queued to running, then to succeeded or failed. Submit holds credit; delivery settles it. See Billing.
https://loopling.ai/v1. HTTPS only.Content-Type: application/json, up to 64 KiB.X-Request-Id. Errors repeat it as error.request_id; quote it to support.vgen_.snake_case./v1 path answers JSON 404 not_found.loopling.ai · hello@loopling.ai · for agents · community · pricing · API · terms · privacy