voidox

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 JSON
  • POST /v1/messages — Anthropic shape, streaming and JSON
  • GET /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.

ModelInput / 1MOutput / 1MOfficial inOfficial 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":"..."}}
  • 401 missing, invalid or revoked key
  • 402 balance cannot cover the request
  • 404 unknown or disabled model
  • 413 request body too large
  • 429 per-key rate limit, honour Retry-After
  • 502 upstream 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_tokens above 8192 is clamped for the pre-authorization check.
  • Balance is checked before any upstream call, so a request either fits or is refused.