Documentation
One base URL, two API shapes. Anything that speaks OpenAI or Anthropic works.
Quickstart
Create an account, copy the key from the dashboard, and point a client at the base URL.
Base URL
/v1
OpenAI SDK (Python)
from openai import OpenAI
client = OpenAI(base_url="https://voidox.cc/v1", api_key="sk-voidox-...")
client.chat.completions.create(model="MODEL_ID", messages=[{"role": "user", "content": "hi"}])Anthropic SDK (Python)
from anthropic import Anthropic
client = Anthropic(base_url="https://voidox.cc", api_key="sk-voidox-...")
client.messages.create(model="MODEL_ID", max_tokens=256, messages=[{"role": "user", "content": "hi"}])Claude Code
export ANTHROPIC_BASE_URL="https://voidox.cc" export ANTHROPIC_API_KEY="sk-voidox-..." export ANTHROPIC_MODEL="gemini-flash-3.8"
Cursor, Cline or any OpenAI-compatible client
Base URL https://voidox.cc/v1, the key from your dashboard, and a model id from the table below.
Endpoints
POST /v1/chat/completions— OpenAI shape, streaming and JSONPOST /v1/messages— Anthropic shape, streaming and JSONGET /v1/models— OpenAI list envelope; validates a presented key
Send the key as Authorization: Bearer sk-voidox-... or as x-api-key.
Models and pricing
Live from the registry. Prices are per 1M tokens. You are billed on the prompt and completion tokens actually used.
| Model | Input / 1M | Output / 1M | Official in | Official out |
|---|---|---|---|---|
| Loading... |
Errors
Errors come back in the shape of the surface you called.
OpenAI surface
{"error":{"message":"...","type":"authentication_error","param":null,"code":"401"}}Anthropic surface
{"type":"error","error":{"type":"api_error","message":"..."}}401missing, invalid or revoked key402balance cannot cover the request404unknown or disabled model413request body too large429per-key rate limit, honourRetry-After502upstream unavailable
Limits
- Request body up to 32 MB, so images and long prompts fit.
- Per-key rate limit with a burst allowance; a 429 carries
Retry-After. max_tokensabove 8192 is clamped for the pre-authorization check.- Balance is checked before any upstream call, so a request either fits or is refused.