Sellers
UberLLM is a two-sided marketplace. If you run inference capacity — open-weight models on your own GPUs, a self-hosted endpoint, or authorized provider capacity — you can list it as an offer and earn when buyers route to you. Your offer sits in the same candidate list as curated providers and wins traffic when it is cheap and healthy.
All seller endpoints are on the dashboard API and require your account JWT
(Authorization: Bearer <jwt>), obtained by signing in at
uberllm.dev. Manage everything visually under
Dashboard → Seller.
1. Register as a seller
curl https://api.uberllm.dev/api/v1/seller/register \
-H "Authorization: Bearer $JWT" \
-H "Content-Type: application/json" \
-d '{"display_name": "Acme Compute"}'
Your seller starts in pending and becomes active automatically once your first offer passes validation.
2. List an offer
An offer binds one catalog model to your endpoint, with a price and an encrypted key. The endpoint must be an OpenAI-compatible chat completions URL served over https.
curl https://api.uberllm.dev/api/v1/seller/offers \
-H "Authorization: Bearer $JWT" \
-H "Content-Type: application/json" \
-d '{
"model_id": "deepseek/deepseek-v3.1",
"endpoint_url": "https://compute.acme.com/v1",
"api_key": "sk-your-endpoint-key",
"pricing_mode": "multiplier",
"multiplier": 0.8,
"daily_cap_usd": 200
}'
- model_id must exist in the UberLLM catalog.
- endpoint_url must be
httpsand speak the OpenAI chat-completions API. - api_key is stored encrypted (AES-256-GCM) and never returned. It is bound to this specific offer, so a stored ciphertext cannot be reused elsewhere.
- daily_cap_usd (optional) — once your offer has served this much in a day it drops out of routing until the next day.
List and update your offers with GET /api/v1/seller/offers and
PATCH /api/v1/seller/offers/{id}.
Pricing modes
| Mode | Fields | Rule |
|---|---|---|
absolute |
input_usd_per_mtok, output_usd_per_mtok |
Both required, each > 0. You set exact per-million-token prices. |
multiplier |
multiplier |
0 < multiplier ≤ 1.5. Your price = multiplier × the model's curated reference price. |
Use multiplier to stay a fixed fraction below the market anchor without
re-pricing every time the reference moves. Use absolute for full control.
The validation probe
When you create an offer — or resume a paused one, or change its endpoint / key / model — UberLLM sends one non-streaming test completion to your endpoint (10s timeout). It must:
- return an OpenAI-shaped response (
choices[0].message), - respond in under 15 seconds,
- authenticate with the key you provided.
Pass → the offer goes active and starts receiving traffic. Fail → the offer
stays paused and the reason is stored (visible on the offer as
last_probe_error). Fix the issue and PATCH the offer back to active to
re-probe. The probe runs once per mutation — UberLLM never ping-burns your
quota.
Health & passive scoring
After activation, your offer's health is measured passively from real traffic only:
- A rolling 5-minute window tracks success rate, 5xx / 429 rates, latency, time-to-first-token, and throughput.
- A significant outage (≥3 failures in the last 30s) deprioritizes your offer — it moves behind healthy providers but is not delisted; it recovers automatically as traffic succeeds again.
- Buyers who sort by
price,latency, orthroughput, or set amax_price, are matched against these live percentiles.
Public uptime and rankings are published at uberllm.dev/rankings and per-provider uptime pages.
Status
Offers move between active, paused, and delisted:
active⇄paused— pause to take capacity offline temporarily; resume re-probes.delisted— terminal. A delisted offer cannot be resumed; create a new offer instead.
Payouts
Earnings from served requests accrue to your payable balance in the UberLLM ledger. View it and your payout history:
curl https://api.uberllm.dev/api/v1/seller/payouts \
-H "Authorization: Bearer $JWT"
# → {"payable_usd": "42.1900", "payouts": [ ... ]}
Payouts are processed manually at launch (an admin marks each payout paid); automated payouts follow. Buyers pay no platform markup on your offers.
Prohibited: reselling frontier-lab API access
You may only list capacity you are allowed to resell:
- ✅ Open-weight / self-hosted models you run.
- ✅ Provider capacity you are contractually authorized to resell.
- ❌ Reselling frontier-lab API access (e.g. proxying a consumer or first-party API key for OpenAI, Anthropic, Google, etc.) is prohibited — it violates those providers' Terms of Service, and offers found doing so are delisted.
If you are unsure whether your capacity is eligible, ask before listing.