Skip to main content
This reference is generated from the spend control OpenAPI specification. Each endpoint page shows the request, parameters, response schema, and live examples.

Base URL

Two credentials

An agent key can never write policy, and a dashboard token can never authorize an action as an agent. See authentication.

Response envelope

Single resources wrap the object in data:
The two authorize endpoints add the decision alongside it, and a cosignature when one was issued:
The cosignature key is absent, not null, when no signature was issued.
Control-plane responses carry no livemode and no request_id. The ledger API includes both. If you are building one client for both, do not assume a shared envelope.

Pagination

Workspace lists take limit (default 50, clamped 1..200) and starting_after, which is the id of the last record on the previous page rather than an opaque cursor.
Three things differ from the ledger’s pagination:
  • The parameter is starting_after, not cursor.
  • has_more is true whenever a page filled to the limit, so a final page that exactly fills it still reports true. Fetch until you get an empty page rather than trusting the flag alone.
  • An unknown or foreign starting_after is ignored and returns the first page rather than an error.
GET /control/v1/workspaces and GET /control/v1/workspaces/{slug}/funds are not paginated. Most lists are newest first. Memberships, invitations and policy modules are ascending, and policy modules paginate by name rather than by id.

Idempotency

Keys are scoped per agent. A replay returns the original intent and the original decision, at the original status.

Errors

See the errors reference for every code, and for the rules that can appear in decision.rule.

Next steps

Authorize an agent action

The five-minute path through these endpoints.

Ledger API reference

The other API on this host.