Cloud and BYOC for Orca Agent Engine are in Private Preview — request an invite
Docs

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

FieldTypeRequiredDescription
provider, model_idstringYesTogether identify the model. The item read defaults provider to anthropic.
input_per_million_tokensnumberYesNon-cached input token rate in USD.
output_per_million_tokensnumberYesOutput token rate in USD, including reasoning tokens.
cache_read_per_million_tokensnumberReturnedEffective cache-read rate.
cache_write_per_million_tokensnumberReturnedEffective 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.

What's next

On this page