SEEAPISEEAPI
Developer CenterDocs
Get API Key
  • Getting Started
  • Authentication
  • List Model Prices
  • Create a Generation
  • Get Task Details
Image Models
Alibaba
Black Forest Labs
ByteDance
Google
Grok
OpenAI
SeeAPI
Video Models
Alibaba
ByteDance
Google
Grok
Kling
Lightricks
MiniMax
PixVerse
Runway
SeeAPI
Vidu
Music Models
Text Models

Templates

  • Alors on Danse API
  • Enzo Fernandez Celebration API
  • Hotel Lobby AI API
  • Neon Duo Dance API
  • Rap Video API
  • Rumpelstiltskin AI Dance API

Policies

  • Data Handling & Privacy
  • Terms of Service
  • Privacy Policy
  • Commercial Use Policy
www.seeapi.com

One AI API for every leading model. Create images, videos, music, and multimodal AI assets online, or build with one unified API.

Explore
  • AI Model Collections
  • AI Tool Alternatives
Developers
  • AI Models
  • API Pricing
  • AI Integrations
  • API Keys
  • Documentation
Support
  • Pricing
  • [email protected]
Legal
  • Privacy Policy
  • Refund Policy
  • Terms & Conditions

Copyright 2026 © SeeAPI. All rights reserved.

GROWCRAFT PTE. LTD.

·5 RAFFLES PLACE, #06-00, RAFFLES PLACE MRT STATION, SINGAPORE 048618

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_imagebackground_image
Image
reference_imagesreference_images
Image

Output 1

Result 1

These examples are saved API results. Actual generated results may vary.

Request

POST/v1/templates/rap-video/generations
AuthorizationSend your API key in the Authorization header using the Bearer scheme.Authorization: Bearer ****************

Header Params

stringrequired

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/json
stringrequired

Public provider identifier. Always send "seeapi".

  • Other provider values are rejected.
Allowed:seeapi
Default:
seeapi
Example:
seeapi
objectrequired

Template inputs.

  • Use only the fields listed here.
stringrequired

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.
Allowed:singledou
Example:
single
string <url>required

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
array <url>required

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.
min items: 1max items: 2
Example:
["https://example.com/two-person-photo.jpg"]
stringoptional

Output video aspect ratio. Defaults to adaptive when omitted.

  • Choose an explicit ratio when you need a landscape, portrait or square layout.
Allowed:16:99:161:14:33:421:9adaptive
Default:
adaptive
Example:
adaptive
numberoptional

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.
min: 4max: 15
Default:
5
Example:
5
stringoptional

Output video resolution. Defaults to 480p.

  • Allowed values are 480p, 720p, 1080p and 4k. Resolution affects the template estimate.
Allowed:480p720p1080p4k
Default:
480p
Example:
480p
numberoptional

Generation seed, from 0 to 999999. Defaults to 0.

  • Using the same seed does not guarantee an identical generated performance.
min: 0max: 999999
Default:
0
Example:
0
stringrequired

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.
Allowed:randomthemelyrics
Example:
random
stringoptional

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.
min length: 0max length: 2000
stringoptional

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.
min length: 0max length: 5000
string <uri>optional

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.
Bodyapplication/json
objectrequired
stringrequired
Example:
task_example
stringrequired

Public template ID.

Example:
rap-video
stringrequired
Allowed:seeapi
Example:
seeapi
objectrequired

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":""}
stringrequired
Allowed:processing
numberrequired

Request-specific template estimate in customer credits; obtain an estimate with Quote Template. The example value is illustrative, not this template's price.

Example:
10
numberrequired
Example:
0
numberrequired
Example:
0
string <date-time>required
Example:
2026-01-01T00:00:00.000Z
string <date-time>required
Example:
2026-01-01T00:00:00.000Z
booleanrequired
Allowed: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.
Bodyapplication/json
objectrequired
stringrequired
stringrequired

Public template ID.

Example:
rap-video
stringrequired
Allowed:seeapi
Example:
seeapi
objectrequired

Normalized customer input only.

stringrequired
Allowed:processingsucceededfailedcanceledrefundedexpired
numberrequired

Estimate recorded on the original task in customer credits.

numberrequired
numberrequired
objectoptional
array <object>required
stringrequired
stringrequired
Allowed:imagevideo
string <uri>required
stringrequired
integerrequired
stringoptional
stringoptional
string <date-time>required
string <date-time>required
string <date-time>optional
booleanrequired
Allowed:true
Example:
true
400

Invalid request or public template input

401

Invalid API key

402

Insufficient credits

403

API key scope or access denied

404

Template or task not found or unavailable

409

Template configuration changed, idempotency conflict, or request still being created

413

Request body too large

429

Rate limit exceeded

503

Service temporarily unavailable

Query Task Status

After submitting a task, use the unified query endpoint to check progress and retrieve results:

Get Task DetailsLearn how to query task status and retrieve generation 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.

Webhook signing key
Code Examples
Request
const response = await fetch("https://api.seeapi.com/v1/templates/rap-video/generations", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Idempotency-Key": "template-order-001",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
  "provider": "seeapi",
  "input": {
    "mode": "single",
    "background_image": "https://example.com/background.jpg",
    "reference_images": [
      "https://example.com/two-person-photo.jpg"
    ],
    "aspect_ratio": "adaptive",
    "duration_seconds": 5,
    "resolution": "480p",
    "seed": 0,
    "rap_mode": "random",
    "lyrics": "",
    "theme": ""
  }
})
});

const result = await response.json();
ResponseHTTP 202
{
  "generation": {
    "id": "task_example",
    "template_id": "rap-video",
    "provider": "seeapi",
    "input": {
      "mode": "single",
      "background_image": "https://example.com/background.jpg",
      "reference_images": [
        "https://example.com/two-person-photo.jpg"
      ],
      "aspect_ratio": "adaptive",
      "duration_seconds": 5,
      "resolution": "480p",
      "seed": 0,
      "rap_mode": "random",
      "lyrics": "",
      "theme": ""
    },
    "status": "processing",
    "estimated_credits": 10,
    "consumed_credits": 0,
    "refunded_credits": 0,
    "created_at": "2026-01-01T00:00:00.000Z",
    "updated_at": "2026-01-01T00:00:00.000Z"
  },
  "idempotent": false
}
PreviousNeon Duo Dance APINextRumpelstiltskin AI Dance API
Request
const response = await fetch("https://api.seeapi.com/v1/templates/rap-video/generations", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Idempotency-Key": "template-order-001",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
  "provider": "seeapi",
  "input": {
    "mode": "single",
    "background_image": "https://example.com/background.jpg",
    "reference_images": [
      "https://example.com/two-person-photo.jpg"
    ],
    "aspect_ratio": "adaptive",
    "duration_seconds": 5,
    "resolution": "480p",
    "seed": 0,
    "rap_mode": "random",
    "lyrics": "",
    "theme": ""
  }
})
});

const result = await response.json();
ResponseHTTP 202
{
  "generation": {
    "id": "task_example",
    "template_id": "rap-video",
    "provider": "seeapi",
    "input": {
      "mode": "single",
      "background_image": "https://example.com/background.jpg",
      "reference_images": [
        "https://example.com/two-person-photo.jpg"
      ],
      "aspect_ratio": "adaptive",
      "duration_seconds": 5,
      "resolution": "480p",
      "seed": 0,
      "rap_mode": "random",
      "lyrics": "",
      "theme": ""
    },
    "status": "processing",
    "estimated_credits": 10,
    "consumed_credits": 0,
    "refunded_credits": 0,
    "created_at": "2026-01-01T00:00:00.000Z",
    "updated_at": "2026-01-01T00:00:00.000Z"
  },
  "idempotent": false
}