AI model API for high-volume teams
Every AI model.
One API. One bill.
One API for image, video, audio and text models. Public unit prices, monthly invoices and hard spend limits, for teams that run AI at volume.
Prepaid credits, one invoice a month. Volume pricing and SLAs on request.
Built for product teams that run many models at volume, and need to know what every call cost.
Models
Four kinds of model behind one key.
Each model has one unit and one public price. You see the price before you run it and the charge after.
Product shots, ads, avatars
Charged per image.
from $0.020 / image
VideoShort ads and social clips
Charged per second of video.
from $0.100 / second
AudioVoice-over and transcription
Text to speech, per 1,000 characters.
from $0.030 / 1K characters
TextChat, captions, prompts
Per 1M input and output tokens.
from $1.00 / 1M input tokens
How it works
From sign-up to first result in three steps.
- 1
Get a key
Sign in with your email, Google or GitHub, add credits and create a key. Your team can share one organisation.
- 2
Send a request
Name a model and its input. Long jobs run as tasks and call your webhook when done.
- 3
Read the charge
Every task shows its units and charge. Tag calls with your customer ID to see who costs what.
# Same request shape for every model. Change "model" to switch. curl https://api.tovano.ai/v1/tasks \ -H "Authorization: Bearer $TOVANO_API_KEY" \ -H "X-Tovano-Customer: client-0482" \ -d '{ "model": "image/demo-1", "input": { "prompt": "Product photo of a blue ceramic mug", "n": 4 } }' # → { "id": "tsk_9f2c…", "status": "completed", "unit": "image", "units": 4, "charged_micro": 80000 }
// npm install tovano import Tovano from "tovano"; const tovano = new Tovano(); // reads TOVANO_API_KEY const task = await tovano.tasks.create({ model: "image/demo-1", input: { prompt: "Product photo of a blue ceramic mug", n: 4 }, customer: "client-0482", }); const done = await tovano.tasks.wait(task.id); console.log(done.output.images, done.charged_micro); // 80000 = $0.080
import os, requests
r = requests.post(
"https://api.tovano.ai/v1/tasks",
headers={"Authorization": f"Bearer {os.environ['TOVANO_API_KEY']}"},
json={
"model": "image/demo-1",
"input": {"prompt": "Product photo of a blue ceramic mug", "n": 4},
"customer": "client-0482",
},
)
task = r.json()
print(task["id"], task["status"])// Text models speak the OpenAI format. Point any OpenAI client at Tovano. import OpenAI from "openai"; const client = new OpenAI({ baseURL: "https://api.tovano.ai/v1", apiKey: process.env.TOVANO_API_KEY, }); const reply = await client.chat.completions.create({ model: "text/demo-chat-1", messages: [{ role: "user", content: "Three captions for a mug ad" }], stream: true, });
Control
The clearest bill in AI.
See spend per model, project and customer. Set hard limits and alerts before the money is spent.
Usage this month
$48,912.40
Prepaid credits
One balance in US dollars for every model. Credits don't expire.
Hard spend limits
Calls stop at your monthly limit instead of surprising you.
Cost per customer
Send X-Tovano-Customer and see usage per end customer.
Failures aren't charged
We hold the estimate, settle the real amount, and release it all on failure.
Pricing
Pay per unit. No subscription.
| Model | Type | Price |
|---|---|---|
Prices in US dollars, excluding tax. Bonus credits on top-ups from $1,000, and committed-volume pricing for high-volume teams.
SDK
A small TypeScript client with no dependencies.
Typed models, tasks, chat and webhooks. Text models also work with any OpenAI client.
npm install tovano
For high-volume teams
Built to carry production traffic.
When AI is a core part of your product, the bill, the limits and the uptime matter as much as the model.
How many AI invoices did your team pay last month?
With Tovano it's one.