Skip to content
This is the staging documentation, where Katara rehearses releases. Live and Test both settle on Avalanche Fuji in test USDC here.

Read funded budgets in an environment

GET
/katara/v1/orgs/{org_id}/environments/{environment_id}/budgets
curl --request GET \
--url https://api.staging.katara.com/katara/v1/orgs/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/environments/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/budgets \
--header 'Authorization: Bearer <token>'
org_id
required
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
environment_id
required
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
after
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
limit
integer
>= 1 <= 100
X-Katara-Account-ID
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/

Optional for reads after sign-in. Use the UUID of the account that loaded the application. A different current cookie account returns account_changed before the handler runs. Session bearer and API key clients do not require this header.

Successful request

Media typeapplication/json
object
data
required
Array<object>
<= 100 items unique items
object
org_id
required
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
environment_id
required
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
id
required
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
consent_id
required
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
payer_id
required
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
usage_class
required
Allowed values: simulation test_compute live
limit
required
One of:
object
ledger_kind
required
Allowed values: simulation real
asset
required
Allowed value: CREDIT_ATOMIC
scale
required
Allowed value: 9
amount
required
string
/^[1-9][0-9]{0,17}$/
charged
required
object
ledger_kind
required
Allowed values: simulation testnet real
asset
required
Allowed values: USD_MICRO CREDIT_ATOMIC USDC_ATOMIC
amount
required
string
/^(0|[1-9][0-9]{0,37})$/
scale
required
Allowed values: 6 9
chain_id
Allowed values: 0 43113 43114
token
string
/^0x[0-9a-f]{40}$/
held
required
object
ledger_kind
required
Allowed values: simulation testnet real
asset
required
Allowed values: USD_MICRO CREDIT_ATOMIC USDC_ATOMIC
amount
required
string
/^(0|[1-9][0-9]{0,37})$/
scale
required
Allowed values: 6 9
chain_id
Allowed values: 0 43113 43114
token
string
/^0x[0-9a-f]{40}$/
purpose_caps
required
object
inference
required
string
/^(0|[1-9][0-9]{0,17})$/
tool
required
string
/^(0|[1-9][0-9]{0,17})$/
service
required
string
/^(0|[1-9][0-9]{0,17})$/
sandbox
required
string
/^(0|[1-9][0-9]{0,17})$/
evaluation
required
string
/^(0|[1-9][0-9]{0,17})$/
workspace

Workspace time. Only a Live budget may set a cap above 0; budgets report it with the other purposes.

string
/^(0|[1-9][0-9]{0,17})$/
state
required
Allowed values: open closed
purpose_usage
required

Usage against each purpose cap. Evaluation includes its judge inference; use the root charged field for the total, without summing overlapping purpose rows.

object
inference
required
object
charged
required
string
/^(0|[1-9][0-9]{0,17})$/
reserved
required
string
/^(0|[1-9][0-9]{0,17})$/
tool
required
object
charged
required
string
/^(0|[1-9][0-9]{0,17})$/
reserved
required
string
/^(0|[1-9][0-9]{0,17})$/
service
required
object
charged
required
string
/^(0|[1-9][0-9]{0,17})$/
reserved
required
string
/^(0|[1-9][0-9]{0,17})$/
sandbox
required
object
charged
required
string
/^(0|[1-9][0-9]{0,17})$/
reserved
required
string
/^(0|[1-9][0-9]{0,17})$/
evaluation
required
object
charged
required
string
/^(0|[1-9][0-9]{0,17})$/
reserved
required
string
/^(0|[1-9][0-9]{0,17})$/
workspace
object
charged
required
string
/^(0|[1-9][0-9]{0,17})$/
reserved
required
string
/^(0|[1-9][0-9]{0,17})$/
funding

What pays for a budget. A wallet budget is paid from the named wallet; an x402 budget is paid by each run’s own x402 payment. A budget without it is paid with credits.

object
source
required
Allowed values: wallet x402
network
required
Allowed values: live test
wallet
string
/^0x[0-9a-f]{40}$/
owner
Allowed values: person
next_cursor
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
Example
{
"data": [
{
"usage_class": "simulation",
"limit": {
"ledger_kind": "testnet",
"asset": "USDC_ATOMIC",
"scale": 6,
"chain_id": 43113
},
"charged": {
"ledger_kind": "simulation",
"asset": "USD_MICRO",
"scale": 6,
"chain_id": 0
},
"held": {
"ledger_kind": "simulation",
"asset": "USD_MICRO",
"scale": 6,
"chain_id": 0
},
"state": "open",
"funding": {
"source": "wallet",
"network": "live",
"owner": "person"
}
}
]
}

Account_changed: reload and review with the signed-in account.

Request error

Media typeapplication/json
object
error
required
object
message
required
string
>= 1 characters <= 500 characters
type
required
string
>= 1 characters <= 100 characters
code
required

Stable; branch on it. Any operation can answer invalid_request, with param naming the refused field when there is one; human_session_required, when an API key, service account or workload calls an operation only a signed-in person may perform; reauthentication_required, when a person’s sign-in is too old for the operation; permission_denied; route_not_found and method_not_allowed, when no operation matches the path or method; and feature_unavailable, when the operation’s service is not enabled on this deployment.

string
>= 1 characters <= 100 characters
param
required

The request field a refusal is about, such as the agent_id or run_id query parameter; null when the refusal is not about one field.

string | null
request_id
required
string
>= 1 characters <= 100 characters
upstream_status
required
integer | null
action
Allowed values: sign_in reauthenticate request_access review fund retry reconcile refresh support
operation_id
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
snapshot_ref
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
Example
{
"error": {
"action": "sign_in"
}
}