Start with a product and resolution already enabled for your tenant. The following example calls native Seedance 2.5; the Production quick start is in section 7.3.
curl --request POST \
'https://ai-api.lightspeedfuture.com/v1/videos' \
--header 'Authorization: Bearer <LSF_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"model": "<YOUR_SEEDANCE_2_5_MODEL_ALIAS>",
"prompt": "A ceramic cup on a desk in soft daylight.",
"metadata": {
"duration": 5,
"resolution": "720p",
"generate_audio": false,
"client_request_id": "demo-native-001"
}
}'
Store the returned public task identifier with the exact submitted request and client_request_id. Retrieve that task using the same authorized key:
curl 'https://ai-api.lightspeedfuture.com/v1/videos/<YOUR_TASK_ID>' \
--header 'Authorization: Bearer <LSF_API_KEY>'
| Situation | Action |
|---|---|
| Accepted / still processing | Poll the same task every 30 seconds or longer. Production continues automatically between stages even if you do not poll. |
| Completed | Read the documented result URL and copy the media to your own storage promptly. |
| Failed or expired | Read the error details and reconcile any reservation adjustment. A corrected, intentionally new job uses a new request ID. |
| GET timeout or connection loss | Resume GET on the same task. Do not create another job. |
| POST outcome unknown | Keep the original request ID and payload. If you have a task ID, use GET. Do not create a fresh request ID merely because the response was lost; contact LSF if the original task cannot be established. |
| Identical idempotent replay | Reuse the original client_request_id only with the same logical request and unchanged payload. A changed URL or output setting is not an identical replay. |
A reservation is an estimate, not a guarantee of final duration or a maximum charge. Leave sufficient available allowance for reconciliation after completion.