Buyer Endpoints

All require authentication (API key or session cookie).

Keys

# Create a new key (up to 25 per wallet)

POST /v1/buyer/keys

{ "label": "Cursor" }

List all keys (prefix, label, timestamps, revoked status)

GET /v1/buyer/keys

Revoke a key

DELETE /v1/buyer/keys/{id}

Profile

# Balance, allowance, usage stats, per-model breakdown

GET /v1/buyer/me

Savings vs direct provider pricing (all-time)

GET /v1/buyer/savings

Savings bucketed by day or week

GET /v1/buyer/savings?period=daily

GET /v1/buyer/savings?period=weekly

USDC approval status for settlement contract

GET /v1/buyer/approve-status

Usage Export

# CSV export of all usage records

GET /v1/buyer/usage/export?format=csv&from=2026-01-01&to=2026-04-13

Columns: timestamp, model, input_tokens, output_tokens, 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

POST /v1/buyer/providers

{ "model": "claude-opus-4.6", "api_key": "sk-...", "base_url": "https://api.venice.ai/api/v1" }

Register a catch-all fallback (used when all marketplace sellers fail)

POST /v1/buyer/providers

{ "model": null, "api_key": "sk-...", "base_url": "https://api.venice.ai/api/v1" }

List providers

GET /v1/buyer/providers

Remove

DELETE /v1/buyer/providers/{id}

Routing order: model-scoped priority provider → marketplace sellers → catch-all (model: null) provider → universal fallback.