Skip to main content
Circuit REST endpoints are grouped by resource: /v1/{resource}/{operation}. Account operation endpoints live under /v1/operations/. Account operations let you create and manage reviewed money operations — swaps, sends, perp opens, and prediction orders — without any chat or UI surface. The lifecycle has two steps:
  1. Create quotes your intent live and stores an inert operation in the awaitingApproval state. Creation never moves money.
  2. Approve admits that exact reviewed operation for execution. Approval is the only step that moves money.
The passkey-derived bearer token from authentication is the only credential these endpoints need — there is no separate API key or signing secret.

Create Operation

Create a reviewed operation from a structured intent. The server resolves the wallet, obtains a live quote, and returns the operation in awaitingApproval. Nothing executes until you approve it. Endpoint: POST /v1/operations Request The operation body is a discriminated union. Every arm names the paying/signing wallet by walletId from GET /v1/wallets/list; the server verifies ownership and eligibility.
cURL Example
Response The operation resource, in awaitingApproval. Every operation endpoint returns this same shape.
List and read responses can also contain direct action and existing workflow operations. Direct Kraken actions omit their server-side credentialRef. Workflow requests expose only { kind: "workflow", operationKind }; stored workflow payloads and credential references never cross the account interface. Common errors: 400 when the intent fails validation or the wallet cannot fund it, 409 when the idempotencyKey was already used with a different request. See API Errors.

Get Operation

Read one operation. This is the canonical poll address: after approving, poll here until the state is terminal (done, failed, failed_before_effect, canceled, or dismissed). Endpoint: GET /v1/operations/{operationId} Request cURL Example
Response The operation resource — the same shape as Create Operation. 404 when the operation does not exist or is not yours.

Approve Operation

Admit an awaitingApproval operation for execution. This is the only endpoint that moves money. Re-approving the same operation converges on the same execution — it never runs twice. Endpoint: POST /v1/operations/{operationId}/approve Request cURL Example
Response The updated operation resource, normally in working. Repeating approval after admission, including after the operation becomes terminal, returns the current resource with 200; it never executes twice. Poll GET /v1/operations/{operationId} until terminal. Errors: 400 when the operation does not use review approval or its pending source wallet is archived or missing, 404 when the operation does not exist, and 409 when a dismissed operation is no longer approvable.

Discard Operation

Retire an awaitingApproval operation without executing it. Discarding is idempotent: repeating it returns the same dismissed resource. Endpoint: POST /v1/operations/{operationId}/discard Request cURL Example
Response The operation resource in dismissed. 409 when the operation already executed and can no longer be discarded.