Rap Video API
Turn your photos into a two-person rap video with vocals and a custom background. Create an original rap from a theme or use your own lyrics.
Developer API pricing
Provider: SeeAPI
USD estimate: $0.0037 / credit · Estimated equivalent, not an additional charge.
480p: 26 credits/sec (≈ $0.097/sec)
720p: 55 credits/sec (≈ $0.21/sec)
1080p: 137 credits/sec (≈ $0.51/sec)
4k: 278 credits/sec (≈ $1.04/sec)
API examples
These examples were generated through real calls to the SeeAPI API. Choose a case to explore the inputs and actual generated results.
Examples 1
Input
background_image
reference_images
Output 1
Result 1
These examples are saved API results. Actual generated results may vary.
Request
/v1/templates/rap-video/generationsHeader Params
Use a unique key for each new generation. Retry the same request with the same key and unchanged request body.
- Example:
template-order-001
Body Params
application/jsonPublic provider identifier. Always send "seeapi".
- Other provider values are rejected.
seeapi- Default:
seeapi- Example:
seeapi
objectrequiredTemplate inputs.
- Use only the fields listed here.
Template inputs.
- Use only the fields listed here.
Select the performer-photo layout: single = one photo containing both performers; dou = two individual portraits. Both modes generate a two-person rap video.
- single requires 1 performer photo plus 1 background image (2 images total). dou requires 2 performer portraits plus 1 background image (3 images total).
- Use the exact value "dou", not "duo". Both modes feature two performers; the setting controls how their photos are supplied.
singledou- Example:
single
One image for the scene or background. Send one HTTPS image URL.
- Provide a clean, clear photo of the environment.
- The image URL must be publicly accessible without login or authentication and link directly to the image file, not a webpage.
- Here are a few sample background images: https://static.seeapi.com/files/pgg9qtbtkaqm.jpeg、https://static.seeapi.com/files/tn4olrbls58n.jpeg、https://static.seeapi.com/files/ejgei4i4ja9l.jpeg、https://static.seeapi.com/files/3hb5dmqeg5y9.jpeg
- Example:
https://example.com/background.jpg
Performer references. With mode=single, send exactly one image containing both people. With mode=dou, send an array of exactly two individual portraits
- When mode=single, provide exactly one image containing two people.
- When mode=dou, provide exactly two images, each containing one person.
- Use accessible HTTPS image URLs without credentials or fragments.
- Example:
["https://example.com/two-person-photo.jpg"]
Output video aspect ratio. Defaults to adaptive when omitted.
- Choose an explicit ratio when you need a landscape, portrait or square layout.
16:99:161:14:33:421:9adaptive- Default:
adaptive- Example:
adaptive
Requested video duration in seconds, from 4 to 15. Defaults to 5.
- Duration and resolution affect the template estimate.
- Keep the lyrics length appropriate for the selected duration; otherwise, some lyrics may not be fully sung.
- Default:
5- Example:
5
Output video resolution. Defaults to 480p.
- Allowed values are 480p, 720p, 1080p and 4k. Resolution affects the template estimate.
480p720p1080p4k- Default:
480p- Example:
480p
Generation seed, from 0 to 999999. Defaults to 0.
- Using the same seed does not guarantee an identical generated performance.
- Default:
0- Example:
0
Select the rap content source:
- When rap_mode=random, neither theme nor lyrics is required; the model generates an original, upbeat English rap at random.
- When rap_mode=theme, theme is required, and the model generates original lyrics based on the provided theme.
- When rap_mode=lyrics, lyrics is required, and the model performs the provided lyrics.
randomthemelyrics- Example:
random
The lyrics to perform. Required and non-blank when rap_mode=lyrics; optional otherwise. Maximum 2,000 characters.
- The supplied wording, language and order are used for the performance. Generated delivery and lip sync may vary.
- When rap_mode=lyrics, an empty or whitespace-only value is invalid. Keep the lyrics short enough for duration_seconds. Omit this field when using random or theme.
Describe the rap topic and, if desired, its mood, language, style or energy. Required and non-blank when rap_mode=theme; optional otherwise. Maximum 5,000 characters.
- For example: "A playful Christmas party rap about friends, gifts and dancing, in English."
- When rap_mode=theme, an empty or whitespace-only value is invalid. Omit this field when using random or lyrics.
Optional absolute HTTPS URL for generation.succeeded and generation.failed webhooks.
Responses
202Generation accepted. Poll GET /v1/generations/{task_id} for results; acceptance is not completion.
objectrequired
- Example:
task_example
Public template ID.
- Example:
rap-video
seeapi- Example:
seeapi
Normalized customer input only.
- Example:
{"mode":"single","background_image":"https://customer.example.com/input-1.jpg","reference_images":["https://customer.example.com/input-1.jpg"],"aspect_ratio":"adaptive","duration_seconds":5,"resolution":"480p","seed":0,"rap_mode":"random","lyrics":"","theme":""}
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 with the task's current status, recorded credits, and available result or public error. The task may already be completed.
objectrequired
Public template ID.
- Example:
rap-video
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:
Keep generation.id from the creation response. Use it as task_id when querying the generation, or receive terminal events at your HTTPS callback_url.
Note
- HTTP 202 confirms acceptance only. Wait for the terminal task status before showing a completed video.
- On success, read the output URLs from generation.result.assets. On failure, inspect the public error_code and error_message.
- Retries of an unchanged creation request should reuse the original Idempotency-Key. An idempotent replay can return 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.