Private preview · invite-only
One API for the leading image and video models.
One key, one request shape and one prepaid balance for models from ByteDance, Google, OpenAI, xAI, MiniMax, Black Forest Labs, Alibaba, Runway, Luma, Recraft, Stability AI, Ideogram and Meta. You pay only for what's produced.
- REST /v1 · OpenAPI 3.1
- TypeScript + Python SDKs
- Webhooks + SSE
Why RawFrame
Ship generative media without the integration tax.
Every provider has its own auth, request format, job model and bill. We put one contract in front of all of them and handle the parts that are easy to get wrong.
One request shape for every model
POST /v1/generationstakes the same fields for images and video, and we map them to each provider.GET /v1/modelslists every model's modes, durations, resolutions, aspect ratios, reference limits and price, so you can validate before you send. Requests a model can't do are rejected, never silently changed.- model
- prompt
- references
- params.aspect_ratio
- params.duration_seconds
- params.resolution
- params.seed
- provider_options
Pay for what's produced
Prepaid credits are held when you submit and settled for the seconds or images actually delivered, never more than the estimate.
Failed generations and blocked requests cost nothing.
Results by webhook, stream or SDK
Signed webhooks (Standard Webhooks, HMAC-SHA256) retried with backoff for about a day, a Server-Sent Events stream per generation, and TypeScript and Python SDKs with wait-for-completion helpers.
Per-model availability and fallback routing
List up to three fallback models and, if one is down or rate-limited, the request runs on the next. You pay for the model that ran. Each model has a circuit breaker, and its availability shows in
GET /v1/models. Fallback routing- Moderation soon
Safety and provenance
Anything a provider's safety filter blocks comes back as
content_rejected, uncharged. Outputs are stored exactly as delivered, so embedded C2PA provenance isn't stripped. Our own prompt and output moderation is on the way.
Models
Every model, one request shape
27 models from 13 providers, listed live from GET /v1/models with their modes, availability and starting price.
Video9
ByteDance
Seedance 2.5
bytedance/seedance-2.5
- Text to video
- Image to video
- References to video
Availablefrom $0.08 / secondByteDance
Seedance 2.0
bytedance/seedance-2.0
- Text to video
- Image to video
- References to video
Availablefrom $0.09 / secondMiniMax
MiniMax H3
minimax/minimax-h3
- Text to video
- Image to video
- References to video
Unavailablefrom $0.10 / secondMiniMax
MiniMax H3 Max
minimax/minimax-h3-max
- Text to video
- Image to video
- References to video
Unavailablefrom $0.065 / secondBlack Forest Labs
FLUX 3 Video
bfl/flux-3-video
- Text to video
- Image to video
Unavailablefrom $0.19 / secondAlibaba
Wan 3.0
alibaba/wan-3.0
- Text to video
- Image to video
- References to video
Unavailablefrom $0.065 / secondRunway
Runway Gen-4.5
runway/gen-4.5
- Text to video
- Image to video
Unavailablefrom $0.15 / secondRunway
Runway Gen-4 Turbo
runway/gen-4-turbo
- Image to video
Unavailablefrom $0.0625 / secondLuma
Luma Ray 3.2
luma/ray-3.2
- Text to video
- Image to video
Unavailablefrom $0.075 / request
Image18
ByteDance
Seedream 5.0 Pro
bytedance/seedream-5.0-pro
- Text to image
- Image editing
Availablefrom $0.0563 / imageGoogle
Gemini 2.5 Flash Image
google/gemini-2.5-flash-image
- Text to image
- Image editing
Availablefrom $0.045 / imageGoogle
Gemini Nano Banana 2.1
google/gemini-nano-banana-2.1
- Text to image
- Image editing
Availablefrom $0.042 / imageOpenAI
GPT Image 2.5 Sunburst
openai/gpt-image-2.5-sunburst
- Text to image
- Image editing
Availablefrom $0.30 / imageOpenAI
GPT Image 2.5 Flare
openai/gpt-image-2.5-flare
- Text to image
- Image editing
Availablefrom $0.30 / imageOpenAI
GPT Image 2
openai/gpt-image-2
- Text to image
- Image editing
Availablefrom $0.30 / imagexAI
Grok Imagine Image 2.0
xai/grok-imagine-image-2.0
- Text to image
- Image editing
Unavailablefrom $0.05 / imageBlack Forest Labs
FLUX 3 Image
bfl/flux-3-image
- Text to image
- Image editing
Unavailablefrom $0.06 / imageLuma
Luma Uni-1
luma/uni-1
- Text to image
Unavailablefrom $0.0525 / imageLuma
Luma Uni-1 Max
luma/uni-1-max
- Text to image
Unavailablefrom $0.1275 / imageRecraft
Recraft V4.1
recraft/recraft-v4.1
- Text to image
Unavailablefrom $0.0438 / imageRecraft
Recraft V4.1 Pro
recraft/recraft-v4.1-pro
- Text to image
Unavailablefrom $0.2625 / imageStability AI
Stable Image Ultra
stability/stable-image-ultra
- Text to image
Unavailablefrom $0.10 / imageStability AI
Stable Image Core
stability/stable-image-core
- Text to image
Unavailablefrom $0.0375 / imageStability AI
Stable Diffusion 3.5 Large
stability/sd-3.5-large
- Text to image
Unavailablefrom $0.0813 / imageIdeogram
Ideogram 4.5
ideogram/ideogram-4.5
- Text to image
Unavailablefrom $0.075 / imageIdeogram
Ideogram 3.0
ideogram/ideogram-3.0
- Text to image
Unavailablefrom $0.075 / imageMeta
Muse Image 1.0
meta/muse-image-1.0
- Text to image
- Image editing
Unavailablefrom $0.0125 / image
Models are in preview: access to each depends on its provider's terms and can change, and prices may change before launch. Availability and prices on this page come from the live catalog.
Developers
From key to video in a few lines.
The SDKs are generated from the same OpenAPI spec as the API, and every sample in the docs runs in CI.
- 1
Create a key
Scoped, shown once, stored hashed and prefixed for secret scanning.
- 2
Send a generation
Images and video share one async job model. Idempotency keys make retries safe.
- 3
Get the result
Poll, stream Server-Sent Events, or receive a signed webhook. Outputs come back as signed URLs.
import { RawFrame } from "@rawframe/sdk";
const rf = new RawFrame(); // reads RAWFRAME_API_KEY
const video = await rf.generations.createAndWait({
model: "bytedance/seedance-2.5",
prompt: "A paper boat drifting down a rainy gutter, golden hour",
params: { duration_seconds: 5, aspect_ratio: "16:9", resolution: "720p" },
});
console.log(video.outputs?.[0]?.url, video.charge_micros);Pricing
Prepaid credits. Pay for output, not attempts.
Top up by card and spend across every model. Each model has its own price list, per second of video or per image, and every generation is billed on what it actually produced.
01
Estimate
Your request's maximum price comes back as price_estimate_micros.
02
Hold
That amount is reserved from your balance. If it can't be covered, nothing is queued.
03
Charge
On success you pay for what was delivered, never more than the hold. The rest is released.
You're not charged for
- Failed generations, including provider outages
- Prompts or references blocked before rendering
- Outputs blocked by a provider's or our checks (by default)
- Canceling a generation that's still queued
Canceling a running generation follows the model's cancel policy.
- Auto-recharge below a threshold you set
- A paid invoice for every top-up
- Usage by day or model, with CSV export
- Exact integer micro-USD amounts
Make your first generation.
Access is invite-only during the preview. If you've been invited, sign in with that email.