Skip to content

API reference

Base URL https://api.tovano.ai/v1. Authenticate with Authorization: Bearer tvn_live_.... Optional headers: Idempotency-Key, X-Tovano-Customer. The machine-readable version is /openapi.json.

Endpoints

MethodPathWhat it does
GET/v1/modelsList models with type, unit and price
GET/v1/models/{id}One model, with its input schema
POST/v1/chat/completionsText models. OpenAI-compatible, with streaming
POST/v1/tasksRun any other model
GET/v1/tasks/{id}Task status, output, units and charge
GET/v1/tasksList tasks. Filter by status, model, customer
GET/v1/balanceCurrent balance
GET/v1/usageUsage and spend, group_by=model, customer or day

GET /v1/models

Returns { "data": [Model] }.

FieldTypeDescription
idstringtype/name
typestringimage, video, audio, text or agent
namestringDisplay name
unitstringimage, second, minute, 1k_chars, 1m_input_tokens, 1m_output_tokens
price_microintegerPrice per unit in micro-dollars
pricesarrayText models: one price per unit (input and output)

POST /v1/tasks

Body: model, input, optional customer and webhook_url. Returns a task.

GET /v1/tasks/{id}

Returns the task. 404 not_found if it isn't in your organisation.

GET /v1/tasks

Query: status, model, customer, limit (max 100), offset. Returns { "data": [Task], "has_more": boolean }.

POST /v1/chat/completions

The OpenAI chat completions request. See Chat.

GET /v1/balance

{ "balance_micro": 2539815213, "currency": "usd" }

GET /v1/usage

Query: group_by (model, customer or day), from and to as YYYY-MM-DD.

{
  "group_by": "customer",
  "from": "2026-11-01",
  "to": "2026-11-13",
  "data": [
    { "key": "client-0482", "tasks": 4120, "charged_micro": 384370000 },
    { "key": "client-0117", "tasks": 2870, "charged_micro": 267890000 }
  ]
}
Questions? support@tovano.ai Machine-readable: openapi.json · llms.txt