Model pricing
Inspect effective model prices and understand cost accounting in Orca Agent Engine.
A model price converts a model's token usage into USD for cost accounting and
cost guardrails. Registry prices usage when it
acknowledges each delta. The public pricing.runorca.ai/v1 API returns the effective price for the
caller's organization; an unpriced model returns 404 instead of a zero rate.
Registry endpoint
Examples on this page target your registry endpoint - the deployment host root, with no path
suffix. For CLI, set ORCA_REGISTRY_URL and exactly one of ORCA_ACCESS_TOKEN (Bearer) or
ORCA_API_KEY (x-api-key). For TypeScript SDK, set ORCA_BASE_URL / ORCA_API_KEY (Bearer).
To find the endpoint, see Connect to the registry.
Price fields
| Field | Type | Required | Description |
|---|---|---|---|
provider, model_id | string | Yes | Together identify the model. The item read defaults provider to anthropic. |
input_per_million_tokens | number | Yes | Non-cached input token rate in USD. |
output_per_million_tokens | number | Yes | Output token rate in USD, including reasoning tokens. |
cache_read_per_million_tokens | number | Returned | Effective cache-read rate. |
cache_write_per_million_tokens | number | Returned | Effective five-minute cache-write rate. One-hour cache writes have a separate derived rate in accounting. |
The public response contains effective rates, whether supplied directly or derived. An absent cache
rate derives from the input rate: read at 0.1× and five-minute write at 1.25×. One-hour write is
2× input when no five-minute rate is stored, or 1.6× the stored five-minute rate otherwise. An
explicitly stored zero cache rate stays zero. Base input and output rates must be positive;
operator writes allow at most three decimal places per million tokens.
Read an effective price
Use the model ID the session sends, and pass provider when it is not anthropic:
import Orca from '@runorca/orca-sdk';
const orca = new Orca({
apiKey: process.env['ORCA_API_KEY'],
baseURL: process.env['ORCA_BASE_URL'],
});
const price = await orca.modelPrices.retrieve('claude-sonnet-4-6', {
provider: 'anthropic',
});GET /apis/pricing.runorca.ai/v1/modelprices lists effective prices with data and next_page.
Resolution tries exact model ID, then a dated snapshot suffix, then a model family. At each level,
organization operator rates outrank an upstream catalog, which outranks the bundled seed. A more
specific seed match wins over a less specific operator family match. Ambiguous family rates leave the
model unpriced.
Change an operator price
The Workspace API is read-only. Organization operators write to the separate admin listener at
/v1/organizations/modelprices with org:admin or model_prices:write. You set
$ORCA_ADMIN_URL to that listener's host root. You supply $ORCA_ADMIN_API_KEY from an
organization admin API key:
curl -fsS "$ORCA_ADMIN_URL/v1/organizations/modelprices" \
-H "x-api-key: $ORCA_ADMIN_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"provider": "anthropic",
"model_id": "claude-sonnet-4-6",
"input_per_million_tokens": 3,
"output_per_million_tokens": 15
}'POST creates an organization override; PATCH /v1/organizations/modelprices/{model_id} changes
its rates and DELETE removes it. The item routes accept ?provider=. Removing an override falls
back to upstream or seed pricing if one exists. The admin list returns individual operator,
upstream, and seed entries; the Workspace list returns one effective rate per model.
Registry prices each reported usage delta at the rate in effect when that usage occurred, so later
price changes do not recalculate past spend. An unknown model or incomplete usage remains unpriced;
the public Session usage contains token counters, while Registry's usage acknowledgments are the
authority for budget totals.