Buyer Endpoints
All require authentication (API key or session cookie).
Keys
Everything you can do to a key in the dashboard, you can do here over the API. Create, list, read, rename, revoke, and configure per-key routing preferences, with no browser. This is the same API the dashboard itself calls. Authenticate with any active buyer key (inf_…) or a session cookie; the tenant is resolved from your auth, never sent in the body.
Create a key (up to 25 active per wallet). Requires an Idempotency-Key header. The inf_… secret is returned in the key field once. Store it immediately; afterwards only its id and key_prefix are recoverable.
List keys, redacted (id, key_prefix, label, created_at, plus last_used_at / revoked_at when set). Add ?workspace_id= to narrow a team org's keys to one workspace.
Read one key's metadata (never the secret).
Rename a key's label.
Revoke a key. Irreversible; returns 204.
Per-key routing preferences
Read a key's resolved routing preferences and limits.
Configure a key. preferences.allow_untrusted (boolean, nullable) is the routing control: true lets this key route to providers outside the trusted-domain allowlist; null or omitted inherits the account default (trusted-only). limits is reserved for future spend caps; send {}. preferences is replaced wholesale, and the response echoes the resolved values. Set that account-wide default with GET / PUT /v1/buyer/preferences (same { preferences, limits } body); any key without its own override inherits it.
Profile
Balance, allowance, usage stats, per-model breakdown.
Savings vs direct provider pricing (all-time). Add ?period=daily or ?period=weekly for savings bucketed by day or week.
USDC approval status for SettlementV2/API-key usage.
Usage Export
CSV export of all usage records.
Columns: request_id, created_at, model, input_tokens, output_tokens, buyer_cost_usd, direct_cost_usd, settlement_status, tx_hash. Up to 50,000 rows.
Providers (BYOK)
Register your own provider keys as buyer-owned providers. A provider scoped to a specific model is tried first for that model (priority — the marketplace is overflow only). A provider with model: null is a catch-all fallback used for any model when all marketplace sellers fail.
Register a priority provider for a specific model, or a catch-all fallback (used when all marketplace sellers fail).
List providers.
Read one provider (health, active, masked key hint).
Update a provider: rotate its api_key, change base_url or label, or enable/disable it with active.
Remove a provider.
Routing order: model-scoped priority provider → marketplace sellers → catch-all (model: null) provider → universal fallback.