Endpoints
| Mode | Endpoint | Use case |
|---|---|---|
| Magic Video | POST /api/v1/videos/magic | One-click branded video — the default; uses Brand DNA |
| Text-to-Video | POST /api/v1/videos/text-to-video | Raw prompt → AI video using the six-model current roster |
| Image-to-Video | POST /api/v1/videos/image-to-video | Animate a still image with motion + camera direction |
| AI Story | POST /api/v1/videos/ai-story | GPT-written story + AI visuals + voiceover |
| Reddit Story | POST /api/v1/videos/reddit-story | Narrated Reddit post format with karaoke captions |
| Motivational | POST /api/v1/videos/motivational | Quote + hook + stock clips + voiceover |
| News Video | POST /api/v1/videos/news | CNN/Bloomberg-style broadcast graphics from a news topic |
| RSS Video | POST /api/v1/videos/rss | Auto-generate from an RSS feed (one video per item) |
| UGC Ad | POST /api/v1/videos/ugc | Hyper-realistic talking-head ad with Seedance presenter |
| Soothing | POST /api/v1/videos/soothing | Ambient relaxation video with custom music + visuals |
| Fake Chat | POST /api/v1/videos/fake-chat | Simulated text-message conversation with voice |
Quickstart — Magic Video
The fastest path is Magic Video: pass a topic + your brand_id, get back a fully branded video in 2-4 minutes.
curl -X POST https://api.reelsbuilder.ai/api/v1/videos/magic \
-H "Authorization: Bearer $REELSBUILDER_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"topic": "shipping velocity benchmarks Q1 2026",
"brand_id": "brn_01HKZ...",
"duration_target_sec": 30,
"webhook_url": "https://your-app.example.com/webhooks/video"
}'Initial response
{
"success": true,
"data": {
"job_id": "vjob_01HKZ...",
"video_id": "vid_01HKZ...",
"status": "queued",
"estimated_completion_sec": 180,
"websocket_url": "wss://api.reelsbuilder.ai/ws/progress?videoId=vid_01HKZ...&token=..."
},
"meta": { "request_id": "req_...", "credits_used": 15, "credits_remaining": 985 }
}Text-to-Video
Pure AI-generated video from a prompt. No script, no voiceover by default — just video. For social-ready posts, prefer Magic Video.
curl -X POST https://api.reelsbuilder.ai/api/v1/videos/text-to-video \
-H "Authorization: Bearer $REELSBUILDER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Cyberpunk Tokyo at dawn, neon reflections in puddles, slow drone shot",
"model": "google/veo-3.1",
"duration_sec": 5,
"aspect_ratio": "9:16"
}'Live API keys bill prepaid USD (see AI_VIDEO_MODEL_PRICING_USD_CENTS). Approximate list prices for typical 6–10s clips:
| Model | API price | Best for |
|---|---|---|
veo-3.1 / ultra tier | $4.00 | Cinematic + complex motion, native audio |
kling-3-t2v | Current pricing | Realistic human movement + native audio |
fal-ai/wan/v2.7 | $2.25 | Coherent multi-shot motion |
bytedance/seedance-2.0 | $7.50 | Current-generation motion + native audio |
fal-ai/ltx-2.3 | $1.00 | Fast 1080p native-audio output |
fal-ai/pixverse/v6 | $1.75 | Stylized multi-clip generation |
veo-3.1 / high tier | $1.50–$4.00 | Premium quality |
Image-to-Video
Animate a still image into 3-10 seconds of motion. Best for product shots, character animation, and brand stills.
curl -X POST https://api.reelsbuilder.ai/api/v1/videos/image-to-video \
-H "Authorization: Bearer $REELSBUILDER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"image_url": "https://your-cdn.example.com/product.jpg",
"motion_prompt": "slow zoom in, gentle parallax",
"model": "kling_2_5",
"duration_sec": 5
}'News Video
Broadcast-quality news shorts with lower thirds, tickers, and real-time data overlays. Powered by server/lib/services/broadcast-graphics-service.ts.
curl -X POST https://api.reelsbuilder.ai/api/v1/videos/news \
-H "Authorization: Bearer $REELSBUILDER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"headline": "Fed signals rate cut for September",
"source_url": "https://reuters.com/...",
"graphics_style": "cnn",
"ticker_data": "stocks",
"brand_id": "brn_01HKZ..."
}'Graphics styles: cnn, bloomberg, fox, bbc, minimal. Ticker data sources: stocks (Finnhub), crypto (CoinGecko), weather (OpenWeatherMap), news (NewsAPI).
Progress via WebSocket
Every video job returns a websocket_url in its initial response. Open it to receive granular progress events (0-100%) with stage labels like "generating script", "rendering captions", "uploading to CDN".
const ws = new WebSocket(job.websocket_url);
ws.onmessage = (event) => {
const { progress, status, stage, url } = JSON.parse(event.data);
console.log(`[${progress}%] ${stage}`);
if (status === "completed") {
console.log("Done:", url);
ws.close();
}
};Progress history is buffered for 1 hour after completion, so brief network drops don't lose state.
Webhook callback
Alternative to WebSocket. Pass webhook_url in the request body to receive a single video.completed or video.failed event when the job ends. See webhooks.
Captions
All voiceover-bearing modes include karaoke-style captions by default (63 styles available). Disable with captions: false or choose a specific style:
{
"topic": "...",
"captions": "neon_outline_yellow"
}Full caption style catalog returned by GET /api/v1/resources/caption-styles.
Pricing (subscription tokens)
Dashboard/consumer costs use the token scale from packages/config TOKEN_COSTS (not the legacy 1-credit ≈ 100-token display). M2M /api/v1 live keys use prepaid USD (e.g. $0.50 generate_video), not these token rows.
| Mode | Base tokens | Notes |
|---|---|---|
| Magic / Classic branded | 1,000 | Watermark discount may apply |
| AI Video (standard) | 1,000 | Budget models |
| AI Video (premium) | 2,000 | Mid-tier models |
| AI Video (ultra) | 4,000 | Veo / Sora Pro / Master |
| AI Story | 2,000 | Fixed |
| Reddit Story | 1,500 | Fixed |
| Motivational | 1,000 | Fixed |
| News Video | 1,000–1,800 | By duration tier |
| Clip extraction | 1,000 / clip | CLIP_PER_UNIT |
| UGC Ad | 2,500 | Includes presenter path |
| Soothing | 1,000 | Base |
Plan pools (monthly): Starter 10,000, Pro 40,000, Business 150,000. Free tier is fixed starter videos, not a 1,000-token grant.
Performance
- Magic Video p50: 145s | p99: 280s
- Text-to-Video latency varies by current model and provider queue.
- News Video p50: 95s | p99: 200s
- Max job lifetime: 10 minutes (then
PROCESS_TIMEOUTwith refund)
See also
- Generate & Post API — adds multi-platform fan-out
- Transcribe API — captions for existing videos
- Brand DNA API — required input for Magic Video
- Webhooks — async completion delivery