Documentation
Errors & billing
You only pay for calls that succeed. Everything else returns a typed error and charges nothing.
Status codes
| Status | Meaning |
|---|---|
400 bad_request | Params failed the action’s schema. The response lists the exact issues. |
401 invalid_token | Missing or revoked key. Check /api-keys. |
402 | Out of credit, the price exceeded your max_cost_cents ceiling, or the key reached its spend ceiling. Top up at /balance; ceilings live on /api-keys. |
404 unknown_service_action | No such {service}/{action}. Check GET /api/run or vaaya/discover. |
429 | Too many concurrent jobs, or the LLM router’s daily cap. Retry after the Retry-After header. |
503 upstream_not_configured | The vendor behind this action is not provisioned right now. Nothing is charged. Try an alternative from the same service page. |
What gets billed
- Success (
ok: true): you pay the action’s price.charged_centsreports it. - Upstream failure (vendor 4xx/5xx): nothing is charged.
- Rejected calls (schema, credit,
max_cost_cents): nothing ran, nothing is charged. - Free actions (status polling,
vaaya/discover): always 0¢.
Seeing your spend
Every call appears with its price and result on your transactions, whether it succeeded or failed. The transaction_id in each response links the API result to that ledger row.