Neon Duo Dance API
Turn two individual portraits into a dance duet with coordinated choreography and moving camera shots. Each portrait defines one dancer’s appearance; choose the output resolution to suit your app.
Developer API pricing
Provider: SeeAPI
USD estimate: $0.0037 / credit · Estimated equivalent, not an additional charge.
480p: 310 credits/gen (≈ $1.16/gen)
720p: 670 credits/gen (≈ $2.51/gen)
1080p: 1,660 credits/gen (≈ $6.22/gen)
4k: 3,430 credits/gen (≈ $12.85/gen)
API examples
These examples were generated through real calls to the SeeAPI API. In each case, the two portraits, request parameters, and output video come from the same successful task. Select a case to compare the inputs and generated result.
Example 3
Two individual portraits used for a 480p dance duet. Task ID: task_8a4c257f67da4d43b76f0e1054b32ba5.
Input
reference_images
Opening solo dancer; left in the first two-person shot.
reference_images_2
Right dancer in the first two-person shot.
Output 1
Generated dance duet
Actual video generated from the two portraits shown above.
Request JSON
{
"provider": "seeapi",
"input": {
"resolution": "480p",
"reference_images": [
"https://static.seeapi.com/files/2fggdixmz7nk.jpg"
],
"reference_images_2": [
"https://static.seeapi.com/files/dajom8k61qsc.jpg"
]
}
}These examples are saved API results. Actual generated results may vary.
Request
/v1/templates/neon-duo-dance/generationsHeader Params
Identifies one generation request.
- Use a new key for each new generation.
- Retry the same request with the original key and unchanged request body.
- Example:
template-order-001
Body Params
application/jsonThe public provider identifier.
- Always send "seeapi".
seeapi- Default:
seeapi- Example:
seeapi
objectrequiredThe portrait references and output settings for the dance duet.
- Use only the public input fields listed below.
- Replace sample URLs with accessible HTTPS links to your own images.
The portrait references and output settings for the dance duet.
- Use only the public input fields listed below.
- Replace sample URLs with accessible HTTPS links to your own images.
Appearance reference for the first dancer.
- Supply one portrait URL for the opening solo dancer, who appears on the left in the first two-person shot.
- Use a clear photo containing one person, with the face, hairstyle, and desired clothing visible.
- The URL must link directly to an image accessible without login, credentials, or URL fragments.
- Accepted formats: JPEG, PNG, WebP, BMP, TIFF, and GIF.
- Each image must be smaller than 30 MB.
- Width and height must each be 301–5,999 pixels.
- The width-to-height ratio must be greater than 0.4 and less than 2.5.
- Example:
["https://customer.example.com/input-1.jpg","https://customer.example.com/input-2.jpg"]
The requested output video resolution.
- Resolution affects the template price.
- Use the exact lowercase value "4k" when requesting 4K output.
480p720p1080p4k- Default:
720p- Example:
720p
The URL that receives terminal generation events.
- Supply an absolute HTTPS URL to receive generation.succeeded or generation.failed.
- Verify webhook signatures before trusting event data.
- If omitted, query the task using generation.id.
Responses
202Generation accepted. Save generation.id and poll GET /v1/generations/{task_id}; HTTP 202 does not mean the video is complete.
objectrequired
The generation ID to use as task_id when querying status and retrieving the finished video.
- Example:
task_example
Public template ID.
- Example:
neon-duo-dance
seeapi- Example:
seeapi
Normalized customer input only.
- Example:
{"reference_images":["https://customer.example.com/input-1.jpg","https://customer.example.com/input-2.jpg"],"resolution":"720p"}
processingRequest-specific template estimate in customer credits; obtain an estimate with Quote Template. The example value is illustrative, not this template's price.
- Example:
10
- Example:
0
- Example:
0
- Example:
2026-01-01T00:00:00.000Z
- Example:
2026-01-01T00:00:00.000Z
false- Example:
false
200Idempotent replay of the same request. Returns the existing task and its current status, including a result or public error when available.
objectrequired
The generation ID to use as task_id when querying status and retrieving the finished video.
Public template ID.
- Example:
neon-duo-dance
seeapi- Example:
seeapi
Normalized customer input only.
processingsucceededfailedcanceledrefundedexpiredEstimate recorded on the original task in customer credits.
objectoptional
array <object>required
imagevideotrue- Example:
true
Invalid request or public template input
Invalid API key
Insufficient credits
API key scope or access denied
Template or task not found or unavailable
Template configuration changed, idempotency conflict, or request still being created
Request body too large
Rate limit exceeded
Service temporarily unavailable
Query Task Status
After submitting a task, use the unified query endpoint to check progress and retrieve results:
Save generation.id from the creation response. Query GET /v1/generations/{task_id} to track progress and retrieve the final video, or receive terminal events at your HTTPS callback_url.
Note
- On success, retrieve the video URL from generation.result.assets. On failure, inspect the public error_code and error_message.
- HTTP 202 confirms acceptance only. Wait for the terminal task status before displaying a completed video.
- An unchanged request retried with its original Idempotency-Key may return HTTP 200 and an already-completed task.
Callbacks
Manage the secret used to verify generation webhook signatures. Callback URLs are supplied when you create each generation.
Webhook flow
Callback URL per generation.