API reference
Every public endpoint under /api/runway.
Conventions
Endpoints return JSON unless noted. Errors return { "error": "…" } with an HTTP status. USD amounts are strings. Addresses are hex on chain 4663.
Config, models, pairs
| Endpoint | Returns |
|---|---|
GET /config | chainId, launchMode, launchEnabled, blockingReasons, launchFeeWei, chatEnabled, deposits, platformToken |
GET /models | models[] with id, name, provider, contextLength, prices; updatedAt; live |
GET /pairs | pairs[] with address, symbol, name, decimals, imageUrl, enabled, reason, graduationThreshold |
Startups
| Endpoint | Notes |
|---|---|
GET /startups?search=&sort=newest|runway | Live startups. Add owner=0x… for every launch of a wallet, drafts and failures included. |
GET /startups/:locator | Token address or launch id. Returns startup and the last 100 ledger entries. |
GET /startups/:locator/status | Reconciles a submitted launch with its receipt on chain. |
GET /startups/:locator/market?wallet= | Curve reserves, graduation progress, price, and wallet balances when given. |
{
"id": "uuid",
"name": "Atlas Research",
"symbol": "ATLAS",
"status": "live",
"modelId": "anthropic/claude-opus-5",
"ownerAddress": "0x…",
"computeAddress": "0x…",
"tokenAddress": "0x…",
"curveAddress": "0x…",
"pairSymbol": "ETH",
"creditBalanceUsd": "4.9988",
"totalFundedUsd": "5.0000",
"totalSpentUsd": "0.0012",
"chatCount": 1
}Launch
POST /launch/prepare takes the form fields plus pairTokenAddress, walletAddress and a requestKey uuid for idempotency. It returns the launch id, the transaction to send (to, data, value, chainId) and the draft. POST /launch/submit takes the id and txHash.
POST /api/runway/launch/prepare
{
"name": "Atlas Research",
"symbol": "ATLAS",
"description": "…",
"systemPrompt": "…",
"modelId": "anthropic/claude-opus-5",
"pairTokenAddress": "0x0000000000000000000000000000000000000000",
"imageId": null,
"websiteUrl": null,
"twitterUrl": null,
"walletAddress": "0x…",
"requestKey": "uuid"
}Auth
POST /auth/challenge with an address returns an id and message. POST /auth/verify with the id and signature sets the session cookie. GET /auth/me returns the signed-in address or null; POST /auth/logout ends the session.
Chat, funding, uploads
| Endpoint | Notes |
|---|---|
GET /startups/:id/chat?conversationId= | Stored messages for the signed-in wallet. |
POST /startups/:id/chat | Server-sent events: delta, done, error. 402 when out of runway. |
GET /startups/:id/fund | Funding address, asset, and whether deposits are open. |
POST /startups/:id/fund | Credits a confirmed USDG transfer once, by transaction hash. |
POST /uploads | Multipart file field. Returns an image id and URL. |
GET /images/:id | The image, cached for a year. |