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.