Developers.

One key, every model. The same API the app uses is yours: chat streams over server-sent events, images and video come back as URLs, and every response tells you what it cost.

Quickstart

Create an account (it is just a key), then ask. No email anywhere.

curl -X POST https://YOUR-DOMAIN/api/auth/key
# → { "key": "seek_…", "account": { "balance": 1000, … } }

curl -N https://YOUR-DOMAIN/api/chat \
  -H "Authorization: Bearer seek_…" -H "content-type: application/json" \
  -d '{ "model": "claude-sonnet-5", "message": "Explain Robinhood Chain in two lines." }'
# event: meta  → { chatId, model, live }
# event: delta → { text }   (repeated)
# event: done  → { usage, credits, balance }

Endpoints

MethodPathWhat it does
GET/api/modelsThe catalog with list and holder prices
GET/api/marketsCrypto tickers and the $WONDR price
POST/api/auth/keyCreate an account; returns the key once
GET / POST/api/auth/nonce · /api/auth/walletWallet sign-in: fetch a message, sign it, get a key
GET/api/me · /api/me/historyBalance, tier, allowance, usage and deposits
POST/api/quoteCredits for a request before you send it
POST/api/chatStreamed chat; mode is ask or code, chatId continues a chat, web lets Claude search
POST/api/image · /api/video · /api/tts · /api/sttMedia, charged per image / second / character / minute
GET/api/chats · /api/library · /api/filesWhat you made
POST/api/deposit/verifyCredit a crypto deposit from its transaction id

Errors

Errors are JSON with an error message. 401 means sign in, 402 with code: "insufficient" means top up, 503 means that provider is not configured on the server.

Methodology

Every price on the site is derived from one table in the open: the provider's own published price, times a fixed margin of 5.5%, expressed in credits at $1 = 1,000. Chat is charged on the exact token counts the provider reports; images per image; video per second; speech per character; transcription per minute. $WONDR holders pay 5% of the list price inside a daily allowance of 1,000 credits per 0.01% of supply held, capped at 25,000, reset at 00:00 UTC. Deposits are converted at the live rate when they land, with no fee on the deposit.

Requests in demo mode (a provider without a key on the server) are labelled as such in every response, in the app, and in your history, and are charged like the real thing so the accounting can be tested end to end.