Tīrtha is still being built, so some features and models may not work as expected yet. Billing always follows the prices shown. Something broken? Email [email protected].

Tīrtha
Tīrtha router

One model id. Each tool call checked.

Send tirtha/auto. With tirtha/auto, Tīrtha picks the model for each task by price, speed and accuracy, checks each tool call against your schema before serving it, and moves up a level when the check fails.

Tīrtha is still in internal testing. Keys, limits and prices may change.

Try it

A tool call through the router

Your tools go in the request as usual. The router checks the call the model makes against the schema you sent.

curl https://api.tirtha.ai/v1/chat/completions \ -H "Authorization: Bearer $TIRTHA_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "tirtha/auto", "messages": [{"role": "user", "content": "What is the weather in Lisbon?"}], "tools": [{"type": "function", "function": { "name": "get_weather", "parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]}}}] }'
// Example response (an example, not a live call), in part "tool_calls": [{"type": "function", "function": { "name": "get_weather", "arguments": "{\"city\": \"Lisbon\"}"}}], "tirtha": { "served_by": "frontier-value", "checked": true, "checked_by": "schema", "schema_check": "passed", "escalated": true } // the Base attempt failed the check, so the // request moved up a level: Plus answered and passed

To use one level for every request, pin it: "tirtha": {"mode": "value"} for Base, "quality" for Plus, "max" for Max. Details in the API reference.

Levels

Base, Plus and Max

With tirtha/auto a request starts at Base and moves up only when a tool call fails the check. Prices per 1M tokens, input / output, read live from billing.

Base

$0.14 / $0.44per 1M tokens, input / output

Fast, low-cost everyday calls.

Plus

$0.266 / $0.756per 1M tokens, input / output

Long agent sessions and multi-step work.

Max

$2.043 / $6.09per 1M tokens, input / output

The most accurate single calls, for when a mistake is expensive.

When auto moves a request up a level, you pay the level that answered, plus the first Base attempt at Base rates. Pinned prices and the full price list are on Pricing.

The check

What it checks, and what it does not

It checks

  • Each tool call is checked against your schema: the tool is one you offered and its arguments fit the schema you sent.
  • With tirtha/auto, a call that fails moves the request up a level.
  • On a pinned level, a failing call is handled as Pricing describes for that level.

It does not

  • Code and prose are not tested; the response's label says what was checked.
  • A call that fits your schema can still be the wrong call for the task. The check confirms its shape, not its judgement.
  • Tīrtha does not run code you send.
The label

Every response says what was checked

A tirtha object sits beside the standard OpenAI fields.

FieldMeaning
served_byWhich path answered: the Base model, frontier-value (Plus) or frontier-max (Max), or cache-exact.
checked, checked_bychecked: true means every tool call in this response passed the schema check; false means a call failed it or no check applied. checked_by names the check that passed, for example schema, and is null when checked is false.
schema_checkpassed or failed on every tool-call answer from tirtha/auto or a pinned level; null when no schema check ran (for example a text or chat answer).
escalatedtrue only if the request moved up a level (with tirtha/auto). A pinned level reads false.
Router docs

Capabilities

For every path through the router: what good means on that path, whether a real check decided it or nothing did, what we measured, and whether that measurement still describes the system serving your request. The page is generated from the configuration we run.