Seller Quickstart
Monetize your unused API capacity. Set your price, get paid per token in USDC.
1. Sign In
Go to surplusintelligence.ai and sign in. Navigate to the Sell page.
2. Add an Offer
Click "Add Offer" and fill in:
- Provider - select from the dropdown (Venice, OpenRouter, Together, etc.)
- API Key - paste a dedicated provider API key. It is encrypted at rest with AES-256-GCM under AWS KMS envelope encryption (ciphertext stored in a private S3 bucket); use provider-side caps/scopes where available and revoke the provider key if you remove an offer.
- Base URL - auto-filled based on provider (e.g.
https://api.venice.ai/api/v1) - Price - set a
cost_multiplier(e.g. 0.5 = 50% of the reference price). Per-token pricing is retired for text models and now returns400 per_token_pricing_retired - Cap - optional daily spending limit (
cap_daily_usd) in USD
Or click "Discover Models" - paste your API key and the marketplace auto-detects available models and pricing from your provider.
3. Start Earning
Once your offer is live, buyers are automatically routed to you when you're the cheapest healthy seller. Your earnings accrue in USDC as each response completes, and are paid out to your wallet (or a custom payout address) in batches once a payout group reaches its threshold or age trigger. See the settlement and payout lifecycle for how earning differs from being paid.
Key Points
- Your endpoint must be OpenAI-compatible - standard
/v1/chat/completionsformat in and out - Earnings accrue per request; payouts are batched. You earn USDC as each response completes, and payouts are grouped by recipient and sent automatically once a group reaches 5 USDC or its oldest earning reaches 72 hours. A per-request CSV row can stay
accruedafter it has been paid in a batch, so confirm payment from your payout history and its Base transaction hash - Health is passive - no uptime pings burning your quota. If a request fails, you're temporarily marked unhealthy and traffic routes to the next seller
- One offer per key, per model, per base URL. The same API key can back as many different models as you like - that is the normal case. What you cannot do is list the same model twice on the same key and base URL; a second attempt returns
409 duplicate_offer_for_credential. To list a model twice, use a different provider key. - Payout address - optionally direct settlement to a different wallet (e.g. Bankr wallet for auto top-up)
Programmatic Setup (CLI / Agents)
No browser needed - get a seller API key with just a wallet.
# 1. Get SIWE challenge curl $SURPLUS_BASE_URL/seller/auth/challenge?address=0xYourWallet # 2. Sign the message and get a seller API key curl -X POST $SURPLUS_BASE_URL/seller/auth/keys \ -H "Content-Type: application/json" \ -d '{"message": "<SIWE message>", "signature": "0x..."}' # Returns si_seller_xxx — save it, shown only once # 3. Create an offer curl -X POST $SURPLUS_BASE_URL/seller/offers \ -H "Authorization: Bearer si_seller_xxx" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-opus-4.6", "api_key": "your-provider-key", "seller_base_url": "https://api.venice.ai/api/v1", "pricing_mode": "cost_multiplier", "cost_multiplier": 0.50 }'
Works from any environment: scripts, AI agents (OpenClaw, Bankr), MCP tools, CLI.
Manage Offers
# Create offer curl -X POST .../v1/seller/offers \ -H "Authorization: Bearer si_seller_xxx" \ -d '{ "model": "claude-opus-4.6", "api_key": "***", "seller_base_url": "https://api.venice.ai/api/v1", "pricing_mode": "cost_multiplier", "cost_multiplier": 0.50 }' # List my offers curl .../v1/seller/offers -H "Authorization: Bearer si_seller_xxx" # Update price curl -X PATCH .../v1/seller/offers/{id} \ -H "Authorization: Bearer si_seller_xxx" \ -d '{ "cost_multiplier": 0.45 }' # View earnings curl .../v1/seller/earnings -H "Authorization: Bearer si_seller_xxx" # Check health log curl .../v1/seller/health-log -H "Authorization: Bearer si_seller_xxx"