nsizequalitybackgroundmoderationoutput_formatoutput_compressionBy default the router tries our listings in routing order and fails over before the first byte — never mid-answer. Uptime is our own 24h measurement; a dash means too few requests to measure yet. Open the row for the provider's specs and policies.
curl --max-time 480 https://dev-api.routerplus.com/v1/images/generations \
-H "Authorization: Bearer $TM_API_KEY" -H "content-type: application/json" \
-d '{"model":"gpt-image-1","prompt":"a red dot","size":"1024x1024","quality":"low"}'# OpenAI SDK — only the base URL changes import base64, os from openai import OpenAI client = OpenAI(base_url="https://dev-api.routerplus.com/v1", api_key=os.environ["TM_API_KEY"], timeout=480.0, max_retries=0) r = client.images.generate(model="gpt-image-1", prompt="a red dot", size="1024x1024", quality="low") image_bytes = base64.b64decode(r.data[0].b64_json)
import OpenAI from "openai"; const client = new OpenAI({ baseURL: "https://dev-api.routerplus.com/v1", apiKey: process.env.TM_API_KEY, timeout: 480000, maxRetries: 0 }); const r = await client.images.generate({ model: "gpt-image-1", prompt: "a red dot", size: "1024x1024", quality: "low" }); const imageBytes = Buffer.from(r.data[0].b64_json, "base64");
| prompt | $5 |
| completion | $40 |
| per image, at most | 6,240 tokens · $0.25 |
Every billed response carries usage.cost — recompute your bill from the wire.
Values outside these are refused with a 400 that names the field.