Reference
Public API
The dashboard runs on the same JSON API you can call from scripts. Read endpoints need no auth; account endpoints use the session cookie from wallet sign-in.
Read endpoints
| Endpoint | Returns |
|---|---|
GET /api/gpus | Every free model with hosts, units, regions and hourly price in USD and ETH |
GET /api/gpus?model=RTX%204090 | Individual offers for one model |
GET /api/config | Chain, treasury, checkout readiness, lease options, token status |
GET /api/templates | Template ids, images, ports and disk sizes |
GET /api/benchmarks | Reference figures joined with live prices |
GET /api/network | Market depth, platform totals, activity, leaderboard |
GET /api/market/listings | Active listings, filter with ?kind= and ?q= |
Sign in from a script
// viem + a local account
const { nonce, message } = await post('/api/auth/challenge', { address: account.address })
const signature = await account.signMessage({ message })
await post('/api/auth/verify', { nonce, signature }) // sets the kiln_session cookieAccount endpoints
| Endpoint | Body |
|---|---|
POST /api/workspaces | { gpuModel, gpuCount, hours, templateId, sshKey, image?, repoUrl?, repoRef?, region? } → quote |
POST /api/workspaces/:id/confirm | { hash } → verifies payment and boots the machine |
GET /api/workspaces | Your workspaces with live SSH details |
DELETE /api/workspaces/:id | Destroys the machine or cancels the quote |
POST /api/market/listings | { title, kind, summary, priceEth, deliveryUrl, image?, tags? } |
POST /api/market/listings/:id/buy | { hash } |
POST /api/points/:action | checkin, spin, quiz, handle, claim, mission |
Errors come back as { "error": "message" } with a matching HTTP status. A 409 on confirm with “not mined yet” means retry in a few seconds.