Skip to content
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

EndpointReturns
GET /api/gpusEvery free model with hosts, units, regions and hourly price in USD and ETH
GET /api/gpus?model=RTX%204090Individual offers for one model
GET /api/configChain, treasury, checkout readiness, lease options, token status
GET /api/templatesTemplate ids, images, ports and disk sizes
GET /api/benchmarksReference figures joined with live prices
GET /api/networkMarket depth, platform totals, activity, leaderboard
GET /api/market/listingsActive 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 cookie

Account endpoints

EndpointBody
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/workspacesYour workspaces with live SSH details
DELETE /api/workspaces/:idDestroys 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/:actioncheckin, 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.