response_formatBy default the router tries our listings in routing order and fails over before the first byte — never mid-answer. Pin, exclude or order providers with a routing policy. Each provider charges its own price: name one with provider.only and you pay its price; otherwise you pay the price of the provider that serves the request ($0.037 in / $0.17 out per 1M where routing starts, unless it fails over). provider.sort: "price" tries the provider with the lowest input + output price first, and provider.max_price leaves out a provider above your limit. Uptime is our own 24h measurement; a dash means too few requests to measure yet. Open a row for its specs, parameters and policies.
Phala: Phala serves a request that names it with provider.only or provider.order. Where Phala is the last provider still serving a model, it also serves requests that do not name it, at its own price.
Phala's capacity is smaller than other providers'. A long prompt, or one without max_tokens, can be refused with a 429 that waiting will not fix: shorten the prompt, set max_tokens, or allow another provider.
Phala runs the model in a hardware-isolated enclave (TEE) on one of several third-party TEE backends that Phala picks; RouterPlus neither chooses nor sees which one serves a call. Your prompt passes through the RouterPlus gateway before it reaches Phala, so the enclave protects it at Phala, not on our side. Zero data retention is requested from Phala on every call: it is Phala's commitment, not something RouterPlus measures. Phala publishes an attestation report and signs a receipt for each answer; RouterPlus does not check them per request.
curl -N https://api.routerplus.com/v1/chat/completions \
-H "Authorization: Bearer $TM_API_KEY" -H "content-type: application/json" \
-d '{"model":"openai/gpt-oss-120b","stream":true,"max_tokens":256,
"messages":[{"role":"user","content":"hi"}]}'# OpenAI SDK — only the base URL changes from openai import OpenAI client = OpenAI(base_url="https://api.routerplus.com/v1", api_key=os.environ["TM_API_KEY"]) client.chat.completions.create(model="openai/gpt-oss-120b", stream=True, messages=[{"role":"user","content":"hi"}])
import Anthropic from "@anthropic-ai/sdk"; // the Anthropic surface serves every chat model, not just Claude const client = new Anthropic({ baseURL: "https://api.routerplus.com", apiKey: process.env.TM_API_KEY }); await client.messages.create({ model: "openai/gpt-oss-120b", max_tokens: 256, messages: [{ role: "user", content: "hi" }] });
| prompt | $0.037 |
| completion | $0.17 |
Every billed response carries usage.cost — recompute your bill from the wire.