Anthropic, OpenAI, Google, Runway and HeyGen behind a single credential and a single bill. Change provider by changing one field — nothing else about your request moves.
curl https://api.genzoai.com/v1/generate/text \ -H "Authorization: Bearer $GENZO_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "prompt": "Explain vector databases in two sentences.", "provider": "anthropic", "model": "claude-sonnet-5" }' # same request, different vendor — one field # "provider": "openai", "model": "gpt-5" # "provider": "google", "model": "gemini-3.6-flash"
import os, requests r = requests.post( "https://api.genzoai.com/v1/generate/text", headers={"Authorization": f"Bearer {os.environ['GENZO_API_KEY']}"}, json={ "prompt": "Explain vector databases in two sentences.", "provider": "anthropic", "model": "claude-sonnet-5", }, timeout=120, ) print(r.json()["result"])
const res = await fetch("https://api.genzoai.com/v1/generate/text", { method: "POST", headers: { Authorization: `Bearer ${process.env.GENZO_API_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify({ prompt: "Explain vector databases in two sentences.", provider: "anthropic", model: "claude-sonnet-5", }), }); const { result } = await res.json();
$res = Http::withToken(env('GENZO_API_KEY')) ->timeout(120) ->post('https://api.genzoai.com/v1/generate/text', [ 'prompt' => 'Explain vector databases in two sentences.', 'provider' => 'anthropic', 'model' => 'claude-sonnet-5', ]); $text = $res->json('result');
Models
Reference list rates per million tokens. Your credit cost derives from these — call
/v1/credits/estimate for the exact figure before you commit.
| Model | Provider | In / 1M | Out / 1M | Context | Status |
|---|---|---|---|---|---|
| claude-haiku-4-5 | Anthropic | $1.00 | $5.00 | 200K | Live |
| claude-sonnet-5 | Anthropic | $3.00 | $15.00 | 1M | Live |
| claude-opus-5 | Anthropic | $5.00 | $25.00 | 1M | Live |
| gpt-5 | OpenAI | — | — | — | Live |
| gpt-5-mini | OpenAI | — | — | — | Live |
| gemini-3.6-flash | — | — | 1M | New | |
| gemini-3.5-flash | — | — | 1M | New | |
| gen4.5 | Runway | per second | — | Live | |
| tts-1 | VoiceNom | per 1K chars | — | Live | |
Full catalogue and capabilities in the model reference,
or fetch it live from GET /v1/providers.
Why route through us
Four invoices, four key rotations, four rate-limit regimes, and no single view of what you actually spent. One integration collapses all of it.
A single key reaches every provider. Rotate in one place, scope per project, and cap what each key may spend.
A fixed, published cost per modality and provider, deducted up front. You always know the price before the call runs, and failures are refunded in full.
Image, video and speech run through the same key and the same balance. Most gateways stop at text.
Control
Set a monthly credit ceiling and a request rate on every key. A leaked key is bounded to that number, not to your balance.
The estimate is held, then released in full if the provider errors. You are billed only for work that completed.
A request that would exceed your balance is refused before it reaches the provider. You cannot go negative.
One subscription covers the API and the Studio, on one credit balance. No separate developer plan, no free tier to compete with.