Skip to main content

Usage Commands

See Usage module docs for permissions and data model.

soat list-usage-meters

List usage meters

  • Method: GET
  • Path: /api/v1/usage/meters

Usage

soat list-usage-meters

Options

--agent-id

Filter by agent public ID

  • Source: query
  • Required: no
  • Type: string
--generation-id

Filter by generation public ID

  • Source: query
  • Required: no
  • Type: string
--trace-id

Filter by trace public ID

  • Source: query
  • Required: no
  • Type: string
--actor-id

Filter by the actor (end user) the usage is attributed to. An actor that does not exist in scope yields an empty page.

  • Source: query
  • Required: no
  • Type: string
--session-id

Filter by the session the usage was produced in. A session that does not exist in scope yields an empty page.

  • Source: query
  • Required: no
  • Type: string
--trigger-id

Filter by the trigger that initiated the generation

  • Source: query
  • Required: no
  • Type: string
--action-id

Filter by logical action id

  • Source: query
  • Required: no
  • Type: string
--meter-type

Filter by meter type (e.g. llm_tokens, compute_execution, api_request, storage)

  • Source: query
  • Required: no
  • Type: string
--source

Filter by what the spend was incurred for. eval is an eval run's item generations and eval_judge an llm_judge scorer's own completion, so verification spend is source in (eval, eval_judge). Ordinary agent traffic carries no source and is matched by neither.

  • Source: query
  • Required: no
  • Type: string
  • Example: eval
--limit

  • Source: query
  • Required: no
  • Type: integer
  • Default: 50
--offset

  • Source: query
  • Required: no
  • Type: integer
  • Default: 0

soat get-usage

Get aggregated usage for a project

  • Method: GET
  • Path: /api/v1/usage

Usage

soat get-usage --project-id <string> --group-by <enum("model", "ai_provider", "agent", "run", "day", "meter_type", "actor", "session", "source")>

Options

--project-id

Project public ID to aggregate usage for

  • Source: query
  • Required: yes
  • Type: string
--group-by

Dimension to bucket by. day buckets on the event's UTC calendar day; the others bucket on the matching column. ai_provider buckets on the provider the spend was billed against — a routed generation's serving target, or the agent's pinned provider. model buckets on the model id and the provider that served it, so one model name served by two providers is two groups (see ai_provider_id). source buckets by what the spend was incurred for (eval, eval_judge), which is how verification spend is priced apart from the traffic serving real users; unlabelled traffic collapses into the single null bucket.

  • Source: query
  • Required: yes
  • Type: enum("model", "ai_provider", "agent", "run", "day", "meter_type", "actor", "session", "source")
--from

Inclusive lower bound (ISO-8601 timestamp) on the event created_at. Omit for no lower bound.

  • Source: query
  • Required: no
  • Type: string
--to

Inclusive upper bound (ISO-8601 timestamp) on the event created_at. Omit for no upper bound.

  • Source: query
  • Required: no
  • Type: string
--meter-type

Narrow the rollup to one meter type (e.g. llm_tokens, compute_execution, api_request, storage). Omit to include every meter. An unknown type yields an empty rollup, not an error.

  • Source: query
  • Required: no
  • Type: string

soat list-usage-thresholds

List usage thresholds

  • Method: GET
  • Path: /api/v1/usage/thresholds

Usage

soat list-usage-thresholds

Options

--project-id

Filter by project public ID

  • Source: query
  • Required: no
  • Type: string
--limit

Maximum number of results to return

  • Source: query
  • Required: no
  • Type: integer
  • Default: 50
--offset

Number of results to skip

  • Source: query
  • Required: no
  • Type: integer
  • Default: 0

soat create-usage-threshold

Create a usage threshold

  • Method: POST
  • Path: /api/v1/usage/thresholds

Usage

soat create-usage-threshold --project-id <string> --metric <enum("cost_usd", "tokens")> --window <enum("calendar_month", "rolling_24h")> --threshold <number>

Options

--project-id

  • Source: body
  • Required: yes
  • Type: string
--metric

  • Source: body
  • Required: yes
  • Type: enum("cost_usd", "tokens")
--window

  • Source: body
  • Required: yes
  • Type: enum("calendar_month", "rolling_24h")
--threshold

Must be greater than 0

  • Source: body
  • Required: yes
  • Type: number

soat delete-usage-threshold

Delete a usage threshold

  • Method: DELETE
  • Path: /api/v1/usage/thresholds/{threshold_id}

Usage

soat delete-usage-threshold --threshold-id <string>

Options

--threshold-id

Threshold public ID

  • Source: path
  • Required: yes
  • Type: string

soat get-usage-receipt

Get a generation or run billing receipt

  • Method: GET
  • Path: /api/v1/usage/receipt

Usage

soat get-usage-receipt

Options

--generation-id

Generation public ID. Mutually exclusive with orchestration_run_id.

  • Source: query
  • Required: no
  • Type: string
--orchestration-run-id

Orchestration run public ID. Returns the receipt summed across every generation the run metered. Mutually exclusive with generation_id.

  • Source: query
  • Required: no
  • Type: string

soat get-price-book

Get the price book

  • Method: GET
  • Path: /api/v1/usage/prices

Usage

soat get-price-book

Options

This command has no options.

soat upsert-price-book

Upsert price-book rows

  • Method: PUT
  • Path: /api/v1/usage/prices

Usage

soat upsert-price-book --prices <array<object>>

Options

--prices

  • Source: body
  • Required: yes
  • Type: array<object>