Build on the Topo network.
One OpenAI-compatible API for 120+ models, served by staked GPU nodes in 40+ regions and settled per token in USDT, ETH or SOL. Change the base URL, keep your SDK.
Base URL
https://api.topolabs.ai/v1Start here
- 01QuickstartCreate a key, claim $5 of free credit and make your first request in five minutes.
- 02API referenceChat, streaming, embeddings and images. Every parameter, field and error code.
- 03ModelsFrontier and open models behind one price list, with IDs, context and prices.
- 04PaymentsFund a wallet in USDT, ETH or SOL, read on-chain receipts and save 20% with TOPO.
- 05Run a nodeServe verified inference from an H100 or a single 4090 and earn up to 85% of every token.
- 06SDKsUse the OpenAI SDKs you have, or the Topo SDKs for receipts and agent wallets.
Make your first request
Every request is a standard OpenAI request. Topo adds a topo object to the response with the serving node, the verification result and the on-chain receipt.
curl https://api.topolabs.ai/v1/chat/completions \ -H "Authorization: Bearer $TOPO_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-5.5", "messages": [{ "role": "user", "content": "Explain zk proofs in 3 lines" }], "pay_with": "usdt" }'import osfrom openai import OpenAI client = OpenAI( base_url="https://api.topolabs.ai/v1", api_key=os.environ["TOPO_API_KEY"],) response = client.chat.completions.create( model="claude-sonnet-5.5", messages=[{"role": "user", "content": "Explain zk proofs in 3 lines"}],) print(response.choices[0].message.content)import OpenAI from "openai"; const client = new OpenAI({ baseURL: "https://api.topolabs.ai/v1", apiKey: process.env.TOPO_API_KEY,}); const response = await client.chat.completions.create({ model: "claude-sonnet-5.5", messages: [{ role: "user", content: "Explain zk proofs in 3 lines" }],}); console.log(response.choices[0].message.content);response.json
json
{ "id": "chatcmpl_7Hq2kf91", "object": "chat.completion", "created": 1792142596, "model": "claude-sonnet-5.5", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "A zk proof shows a statement is true without revealing why. ..." }, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 18, "completion_tokens": 406, "total_tokens": 424 }, "topo": { "request_id": "req_7Hq2kf91", "node": "eu-west-2", "gpu": "B200", "ttft_ms": 182, "attestors": "3/3", "receipt": { "amount": "0.0041", "currency": "USDT", "chain": "base", "tx": "0x51c4…9ab2" } }}How a request flows
Four hops, one round trip. Each step has its own page.
- 01Your appOpenAI-compatible SDKs, REST, or an agent framework. Change one line: the base URL.
- 02Topo RouterAuthenticates the key or wallet, picks the fastest eligible node, enforces spend limits.
- 03Node networkStaked GPU operators in 40+ regions serve the request and attest to the output.
- 04SettlementThe bill is split between the node and the network and settled on-chain with a receipt.