BETTERTOKEN · AI VIDEO API

Video Generation API

One API key. Four model families. Pay per second. Choose Seedance, Kling, MiniMax H3 or WAN and build with the same asynchronous API.

Seedance 2.516:9
Kling 3.016:9
MiniMax H316:9
WAN 3.016:9
One key: 4 video models + text & images
Pay as you go, no subscription
Failed generations are not charged
Stripe + USDT
First top-up: pay $3.00, get $5.00 balance

Choose the video model for your application

Compare all ten on-sale SKUs. Prices are the lowest output rate for each SKU, separate from the sample settings.

Choose by capability
ModelSeconds per clipResolutionSupported inputsAudioBest for
Seedance 2.5 seedance-2.5-cn$0.176 / s480p4–30 s480p / 720p / 1080p1080pText · first/first+last frames · ≤30 images · video/audio referencesNative audio · on / off30-second narratives
Inputs & audio
Model
seedance-2.5-cn
Supported inputs
Text · first/first+last frames · ≤30 images · video/audio references
Audio
Native audio · on / off
Seconds per clip
4–30 s
Resolution
480p / 720p / 1080p
Seedance 2.0 seedance-2.0-cn$0.097 / s480p4–15 s480p / 720p / 1080p / 4K4KText · first/first+last frames · ≤9 images · Video/audio references; audio references require an image or video.Native audio · on / off4K output
Inputs & audio
Model
seedance-2.0-cn
Supported inputs
Text · first/first+last frames · ≤9 images · Video/audio references; audio references require an image or video.
Audio
Native audio · on / off
Seconds per clip
4–15 s
Resolution
480p / 720p / 1080p / 4K
Seedance Fast seedance-2.0-fast-cn$0.078 / s480p4–15 s480p / 720p720pText · first/first+last frames · ≤9 images · Video/audio references; audio references require an image or video.Native audio · on / offLower-resolution drafts
Inputs & audio
Model
seedance-2.0-fast-cn
Supported inputs
Text · first/first+last frames · ≤9 images · Video/audio references; audio references require an image or video.
Audio
Native audio · on / off
Seconds per clip
4–15 s
Resolution
480p / 720p
Seedance Mini seedance-2.0-mini-cn$0.048 / s480p4–15 s480p / 720p720pText · first/first+last frames · ≤9 images · Video/audio references; audio references require an image or video.Native audio · on / offLower-cost drafts
Inputs & audio
Model
seedance-2.0-mini-cn
Supported inputs
Text · first/first+last frames · ≤9 images · Video/audio references; audio references require an image or video.
Audio
Native audio · on / off
Seconds per clip
4–15 s
Resolution
480p / 720p
Kling 3.0 kling-3.0$0.099 / sStandard 720p · Audio off3–15 sStandard 720p / Pro 1080p / 4K4KText · first/first+last frames · ≤6 custom shotsNative audio · on / offStructured storyboards
Inputs & audio
Model
kling-3.0
Supported inputs
Text · first/first+last frames · ≤6 custom shots
Audio
Native audio · on / off
Seconds per clip
3–15 s
Resolution
Standard 720p / Pro 1080p / 4K
MiniMax H3 minimax-h3$0.050 / s768p4–15 s768p / 2K2KText · first / last / both · ≤9 images · video/audio referencesIncluded (always on)2K · independent last frame
Inputs & audio
Model
minimax-h3
Supported inputs
Text · first / last / both · ≤9 images · video/audio references
Audio
Included (always on)
Seconds per clip
4–15 s
Resolution
768p / 2K
WAN 3.0 wan-3.0$0.047 / s480p2–30 s480p / 720p / 1080p1080pText · first/first+last frames · ≤10 images · video/audio referencesNative audio · on / off30-second reference-led clips
Inputs & audio
Model
wan-3.0
Supported inputs
Text · first/first+last frames · ≤10 images · video/audio references
Audio
Native audio · on / off
Seconds per clip
2–30 s
Resolution
480p / 720p / 1080p
WAN 3.0 Prime wan-3.0-prime$0.067 / s480p2–30 s480p / 720p / 1080p1080pText · first/first+last frames · ≤10 images · video/audio referencesNative audio · on / offVendor high-speed positioning
Inputs & audio
Model
wan-3.0-prime
Supported inputs
Text · first/first+last frames · ≤10 images · video/audio references
Audio
Native audio · on / off
Seconds per clip
2–30 s
Resolution
480p / 720p / 1080p
WAN 2.7 T2V wan-2.7-t2v$0.094 / s720p2–15 s720p / 1080p1080pText · optional driving audio · five fixed ratiosIncluded (always on)Fixed text-to-video workflow
Inputs & audio
Model
wan-2.7-t2v
Supported inputs
Text · optional driving audio · five fixed ratios
Audio
Included (always on)
Seconds per clip
2–15 s
Resolution
720p / 1080p
WAN 2.7 I2V wan-2.7-i2v$0.098 / s720p2–15 s720p / 1080p1080pFirst / first+last frames · optional driving audio · follows input ratioIncluded (always on)Fixed image-to-video workflow
Inputs & audio
Model
wan-2.7-i2v
Supported inputs
First / first+last frames · optional driving audio · follows input ratio
Audio
Included (always on)
Seconds per clip
2–15 s
Resolution
720p / 1080p

Starting prices use the lowest resolution; Kling starts with audio off.

Choose by what you want to create

Match each model’s supported capabilities to your use case.

DEVELOPER QUICKSTART

One asynchronous API for every video model

Quote → create → poll → download.202 means accepted, not completed. Keep the same idempotency key and body after uncertain acceptance. Download only after completed.These are minimal examples — in production, persist the Idempotency-Key and task ID so you can resume after a restart.

Show the AI agent instructions
Integrate the BetterToken video API in the user's application.
Read BETTERTOKEN_API_KEY only from the environment; never log or send it to analytics.
Base: https://bettertoken.ai/v1
Request JSON (replace the I2V source with your own accessible image):
{
  "model": "wan-3.0",
  "operation": "text_to_video",
  "prompt": "A rainy city street at night, slow forward camera move",
  "duration": {
    "mode": "fixed",
    "seconds": 5
  },
  "output": {
    "format": "mp4",
    "resolution": "480p",
    "aspect_ratio": "16:9"
  },
  "audio": {
    "mode": "on"
  }
}
H3 and WAN 2.7 generate native audio by default with no on/off switch. When switching model, adapt resolution, operation, aspect ratio, media and audio. Kling uses provider_options.kling.mode, without output.resolution. H3 image_to_video requires adaptive; reference_to_video allows adaptive or a fixed ratio. WAN 2.7 I2V requires a first frame and omits aspect_ratio.
POST /videos/quote with the same JSON for a non-reserving estimate; requires authentication and may probe input media. It is not a public guest API.
BEFORE POST /videos persist an Idempotency-Key and exact body outside the process; load that saved state after a restart. Persist the task ID after acceptance and resume that task. After a timeout/503 or uncertain acceptance, reuse BOTH; never create a replacement task. Handle 409 video_idempotency_conflict / video_acceptance_pending, 402 balance and 422 validation errors.
202 means accepted only; response has root id/status. GET /videos/{id} every 5 seconds: queued, in_progress, completed, failed, canceled. Uncertain acceptance stays in_progress with stage=reconciliation. On 429 honor the full Retry-After seconds or HTTP date. Poll up to 360 times, waiting 5 seconds between requests; network delays and rate-limit backoff can extend the total observation time. Preserve the task ID when stopping; stopping does not cancel or recreate the task.
Only after completed, GET /videos/{id}/content with an authorized owner key. 410 video_artifact_expired is a delivery expiry, not a generation failure. Keep content private.
Inspect billing separately: confirmed failed/canceled generation releases/refunds the original funding source through financial processing; status alone does not prove the refund is committed. Uncertain acceptance and post-generation delivery failures need separate handling. Do not invent a public cancel endpoint.
# Minimal example: persist the Idempotency-Key and task ID in production.
# Requires curl, jq and BETTERTOKEN_API_KEY in your environment.
BASE=https://bettertoken.ai/v1
IDEM="$(uuidgen)"
cat > request.json <<'JSON'
{
  "model": "wan-3.0",
  "operation": "text_to_video",
  "prompt": "A rainy city street at night, slow forward camera move",
  "duration": {
    "mode": "fixed",
    "seconds": 5
  },
  "output": {
    "format": "mp4",
    "resolution": "480p",
    "aspect_ratio": "16:9"
  },
  "audio": {
    "mode": "on"
  }
}
JSON

curl --fail-with-body "$BASE/videos/quote" \
  -H "Authorization: Bearer $BETTERTOKEN_API_KEY" \
  -H 'Content-Type: application/json' --data-binary @request.json || exit 1

TASK=$(curl --fail-with-body "$BASE/videos" \
  -H "Authorization: Bearer $BETTERTOKEN_API_KEY" \
  -H "Idempotency-Key: $IDEM" \
  -H 'Content-Type: application/json' --data-binary @request.json) || exit 1
ID=$(printf '%s' "$TASK" | jq -er '.id') || exit 1
# Poll up to 360 times, waiting 5 seconds between requests.
# Network delays can extend the total time.
for attempt in $(seq 1 360); do
  TASK=$(curl --fail-with-body "$BASE/videos/$ID" \
    -H "Authorization: Bearer $BETTERTOKEN_API_KEY") || exit 1
  STATUS=$(printf '%s' "$TASK" | jq -r '.status')
  case "$STATUS" in
    completed) break ;;
    failed|canceled) printf '%s\n' "$TASK"; exit 1 ;;
  esac
  sleep 5
done
[ "$STATUS" = completed ] || { echo "Resume polling task: $ID"; exit 1; }
curl --fail-with-body "$BASE/videos/$ID/content" \
  -H "Authorization: Bearer $BETTERTOKEN_API_KEY" -o video.mp4

What changes when you switch models?

The flow stays the same. Each model has its own supported JSON fields. The code follows your calculator selection below.

ParameterValue & limits
Shared routesPOST /v1/videos/quote → POST /v1/videos → GET /v1/videos/{id} → GET /v1/videos/{id}/content. Bearer key, JSON body; keep Idempotency-Key on create.
Seedance 2.5 / 2.0 / Fast / Mini4–30 / 4–15 / 4–15 / 4–15 s. Resolution (output.resolution): up to 1080p / 4K / 720p / 720p. Audio: on/off (audio). Max 30 / 9 / 9 / 9 reference images. For 2.0 / Fast / Mini only: audio references require an image or video.
Kling 3.03–15 s. Output mode (provider_options.kling.mode): Standard 720p / Pro 1080p / 4K (std / pro / 4k); no output.resolution. Audio: on/off (audio). Text ratios: 16:9 / 9:16 / 1:1; frames follow input. Max 6 shots (shots); no end frame with shots.
MiniMax H34–15 s · 768p / 2K. Native audio by default, with no on/off switch. Omit audio or use {mode:"provider_default"}. Text: fixed ratio; image: adaptive (output.aspect_ratio). Independent last frame. Max 9 reference images, 3 videos (contract limit; full combinations not yet verified) and 3 audio clips; 2–15 s each, max 15 s per type, 12 files total.
WAN 3.0 / Prime2–30 s · 480p / 720p / 1080p. Audio: on/off (audio). Max 10 reference images, 5 videos (contract limit; full combinations not yet verified) and 5 audio clips; 1–15 s each, max 15 s per type, 20 files total. Input video + output: max 30 s. Endpoint frames and references use separate modes.
WAN 2.7 T2V2–15 s · 720p / 1080p. Text to video (text_to_video). Ratios: 16:9 / 9:16 / 1:1 / 4:3 / 3:4. Native audio by default, with no on/off switch. Omit audio or use {mode:"provider_default"}. Optional driving audio (driving_audio): 1 clip.
WAN 2.7 I2V2–15 s · 720p / 1080p. Image to video (image_to_video). First frame required, last frame optional (media: each item must have a unique id and include type, role and source). Ratio follows image (no output.aspect_ratio). Native audio by default, with no on/off switch. Omit audio or use {mode:"provider_default"}. Optional driving audio (driving_audio): 1 clip.

PRICING

Video generation API pricing & calculator

Choose a model and settings for your budget.

Billed on actual output seconds; video references use the selected resolution rate.

Ten on-sale SKUs · one key and one balance

Price snapshot · 2026-11-09

Estimate your video generation API cost

Choose model, resolution, duration and clips.

Model
Resolution
Native audio

Estimated monthly cost$23.50
Per clip
$0.235
Output seconds / month
500
Get API key →

Output-only estimate; reference inputs may add fees

Top-up tiers & offers

WAN 3.0 · 480p · Estimate at the selected settings

Balance creditYou payDiscountVideo seconds · estimateTop up
$5.00First top-up$3.00$2.00≈ 106 sTop up →
$50.00$48.00$2.00≈ 1,063 sTop up →
$100.00$95.00$5.00≈ 2,127 sTop up →
$200.00$185.00$15.00≈ 4,255 sTop up →
$500.00$450.00$50.00≈ 10,638 sTop up →

First-top-up and tier offers are separate. Checkout confirms the applicable offer. Available methods are confirmed at checkout.

VIDEO MODELS

Same prompt, four models

Compare samples from the same prompt and explore each model.

Shared prompt

English original · generation prompt

Night city street after rain, seen from a slow forward dolly shot at low height: wet asphalt reflecting colorful lights, light trails from passing cars, soft steam rising from a street grate, light drizzle. Generic modern architecture. No people, no readable text, signs, logos, license plates, flags or recognizable landmarks. Cinematic, realistic.

FAQ

Video generation API questions

Use Seedance 2.5 or WAN 3.0 for 30-second clips, Kling for up to six structured shots, Seedance 2.0 or Kling for 4K, Mini or WAN 480p for lower output costs, and H3 for an independent last frame or 2K with default native sound.

View API examples

BETTERTOKEN · VIDEO GENERATION API

One key. Your first video API call.

First top-up: pay $3.00, get $5.00 balance