Pricing
What each call costs, live from your account.
How billing works
You top up a balance in advance and each call is taken from it. There’s no subscription. Top up and set alerts in the console, under Usage & Billing.
Jobs place a hold when you start them, usually a little more than the final price, so you need that much available. When the job finishes the difference is settled: the charge is max(minimum, rate × units), measured on the output. A failed job costs nothing.
Sessions check you can cover the block you asked for, then charge on close for the seconds actually streamed. No minimum.
Current rates
Read live from GET /pricing as you look at this page.
/api/v1/pricing[ { "feature": "face_swap_video", "label": "Video Swap", "unit": "second", "unit_price_usd": 0.2, "min_charge_usd": 0.1 }]Match on feature, never on label: feature is the stable key the billing rows use, while label is a display name that changes when we rename a capability.
Reading live rates…
Send your key and you get your own rates
GET /pricing, and it changes the answer. Without one you get the public rates. With one you get the rates on your account, worked out by the same code that bills you.