Price locks
Sellers publish blocks of capacity at a fixed price. Buyers prepay into them and get routed there first, at that price, until the funds run out or the term ends.
Buying
GET/v1/market/locks
lock
{
"id": "lock_…", "model": "deepseek/deepseek-v4.1-flash", "seller": "s_7f3a",
"input_price_micro": 50000, "output_price_micro": 200000, "discount_pct": 66.7,
"available_micro": 50000000, "min_purchase_micro": 5000000, "duration_days": 30,
"verification": "verified", "region": "eu", "zdr": true, "created_at": "…"
}POST/v1/locks/{lock_id}/purchase
body
{ "amount_micro": 10000000 }The amount moves from your balance into a holding:
holding
{
"id": "hold_…", "lock_id": "lock_…", "model": "deepseek/deepseek-v4.1-flash",
"input_price_micro": 50000, "output_price_micro": 200000,
"prepaid_micro": 10000000, "remaining_micro": 10000000,
"expires_at": "…", "status": "active | exhausted | expired"
}GET/v1/holdings
How routing uses a holding
- Calls for the lock's model go to the lock's offer first, billed at the locked price from the holding.
- If that offer is unhealthy or excluded by your policy, the call routes to the market as usual.
- At expiry, whatever remains returns to your balance (
lock_refundin your ledger).
Selling
Sellers publish locks from their offers in the dashboard:
POST /api/locks
{ "offer_id": "off_…", "input_price_micro": 50000, "output_price_micro": 200000,
"available_micro": 50000000, "min_purchase_micro": 5000000, "duration_days": 30 }Unsold capacity can be withdrawn with DELETE /api/locks/{id}.