Prompt. Instant URL.
Forever Media.
Generate images, TTS, video, and music from a prompt. Get back a live CDN link that serves a placeholder instantly and automatically updates when generation completes. Regenerate, restyle, or swap the asset later — the URL your users embed never changes, so links in production never break.
Why Permanent Slots Change Everything
No more broken embeds, no polling, and total control over your media's future.
One URL, Forever
Your media sits at a single, extensionless CDN URL. Even if you regenerate or change media type, the link never changes.
Instant Delivery
Call one endpoint, get back live URLs in milliseconds. They serve a clean placeholder while generation happens.
Variant Selection
Generate up to 5 options at once. Pick the best one later, without changing the public URL.
Regenerate On-Demand
Hit regenerate and the old media is replaced with the new one — same URL, no code changes.
Media-Type Agnostic
Start with an image, then swap to a video. Consumers always get the latest content type.
Characters
Define personas with physical traits, personality, voice, and memory. Generate consistent media across any content type.
Embeddable Media
Get embed_markdown and embed_html in every response. Drop into any chat or page — auto-refreshes from placeholder to media.
Stream Enabled
Videos publish to a permanent .m3u8 HLS URL — adaptive playback in any player, epoch-versioned segments that can’t be cache-poisoned, with the raw MP4 always available for downloads.
Auditable, With Full Trace
Every job keeps its complete story: request and response receipts, per-variant model provenance, a step-by-step progress log, and a webhook/poll activity trail — inspectable at any time from the dashboard or API.
builder2 vs Direct Generation
What you get on top of calling raw model APIs yourself.
| Capability | builder2 | Direct fal.ai | Direct Evolink | Direct Suno / Mureka |
|---|---|---|---|---|
| One API for image, video, music, TTS, audiobooks | ✓ | ~ | ~ | ✗ |
| Permanent CDN URL — regenerate without breaking embeds | ✓ | ✗ | ✗ | ✗ |
HLS streaming URL (.m3u8) with cache-poison-proof segments |
✓ | ✗ | ✗ | ✗ |
| Live placeholder while generating — URL works instantly | ✓ | ✗ | ✗ | ✗ |
| Variants + set-default + on-demand regenerate | ✓ | ✗ | ✗ | ✗ |
| Automatic fallback models on provider failures | ✓ | ✗ | ✗ | ✗ |
| Provider retries (billing locks, edge blips, transients) | ✓ | ✗ | ✗ | ✗ |
| Character consistency across images, videos, songs | ✓ | ~ | ✗ | ✗ |
| Full audit trace: receipts, model provenance, progress log | ✓ | ✗ | ✗ | ✗ |
| Prepaid credits — one wallet across every provider | ✓ | ✗ | ✓ | ✓ |
| Bring your own provider account | ✓ | ✓ | ✓ | ✓ |
✓ yes ~ partial / per-model ✗ no — you build and maintain it yourself.
Pay As You Generate
No plans, no slot quotas, no monthly limits. Top up credits and pay per generation — 1 credit = $0.01.
Every account starts with 500 free credits ($5). Unused credits never expire.
See per-model credit pricing on the Models page.
Try the Blackbox — One Call, Permanent URL
Send a prompt and get a permanent CDN URL back instantly.
curl -X POST https://api.builder2.com/api/v1/build-media \
-H "Authorization: Bearer $BUILDER2_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "a minimalist logo for my startup",
"content_type": "image",
"media_slug": "logo",
"count": 2,
"image_size": "landscape_16_9"
}'
# Response (202)
{
"job_id": "job_xyz123",
"media_slug": "logo",
"permanent_url": "https://cdn.builder2.com/w/logo/job_xyz123.jpeg",
"media_url": "https://media.builder2.com/job_xyz123/1.png",
"count": 2,
"status": "generating",
"model": "fal-ai/nano-banana-pro",
"embed_markdown": "",
"embed_html": "<iframe src=\"https://www.builder2.com/embed/job_xyz123\" ...></iframe>"
}
Use the embed_markdown in any chat, or embed_html in web UIs. Auto-refreshes from placeholder to media.