Developers

Developer API

OpenAI-compatible. Point any SDK at https://your-host/api/v1 with a sov_ key and it works.

Get a free key

One key per email or wallet. Free keys get 100 requests a month; paid plans raise that. Keep it secret: anyone holding it spends your quota.

One key. Every model on the menu. Nothing logged.

A quiet reading alcove with a navy velvet armchair, a brass lamp and a stack of cloth-bound books
Your key is the only thing we know about you.

Drop-in

Point your SDK at Sovereign.

The API speaks the same dialect the popular SDKs already use, so switching is a base URL and a key. Chat, images, video, voice, transcription and embeddings all live under one host, and every reply passes through identity protection before it leaves.

Pick any model from the menu by its id. Plans apply to keys the same way they apply in the app.

Try it in the playground

Quick start

curl https://your-host/api/v1/chat/completions \
  -H "Authorization: Bearer sov_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"sovereign-chat","messages":[{"role":"user","content":"Say something honest about Mondays."}]}'
# Python (openai SDK)
from openai import OpenAI
client = OpenAI(base_url="https://your-host/api/v1", api_key="sov_YOUR_KEY")
r = client.chat.completions.create(model="sovereign-chat", messages=[{"role": "user", "content": "hi"}])
print(r.choices[0].message.content)
// Node (openai SDK)
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://your-host/api/v1", apiKey: "sov_YOUR_KEY" });
const r = await client.chat.completions.create({ model: "sovereign-chat", messages: [{ role: "user", content: "hi" }] });
console.log(r.choices[0].message.content);

Endpoints

MethodPathBodyReturns
GET/api/v1/modelsThe curated model list
POST/api/v1/chat/completionsOpenAI chat body (model, messages, stream, tools, …)Chat completion (SSE when stream: true)
POST/api/v1/image/generate{ model, prompt, width, height, format, negative_prompt, return_binary }{ images: [base64] } or binary
POST/api/v1/image/upscale{ image: base64, scale }Binary image
POST/api/v1/audio/speech{ model, input, voice, response_format }Audio bytes (mp3 by default)
POST/api/v1/audio/transcriptionsmultipart file, model{ text }
POST/api/v1/video/queue{ model, prompt, duration, resolution, aspect_ratio }{ queue_id }
POST/api/v1/video/retrieve{ queue_id }mp4 bytes when ready, JSON status otherwise
POST/api/v1/embeddings{ model, input }OpenAI embeddings shape

Anything else under /api/v1/ returns 404. Bodies over 200 KB are rejected. Image requests default to hide_watermark: true and safe_mode: false; you can override both.

Models

idTypeNotes
sovereign-chatchatDefault. sovereign-uncensored and sovereign-bonus are aliases.
sovereign-magnuschatReasoning and code.
sovereign-optimuschatLarge, long context.
sovereign-roleplaychatRoleplay-tuned.
sovereign-privatechatPrivate inference path.
sovereign-image / sovereign-image-nsfwimage1024×1024 webp by default, no watermark.
sovereign-videovideoQueue + retrieve.
sovereign-voiceaudioText to speech, default voice af_sky.
sovereign-transcribetranscriptionSpeech to text.
sovereign-embedembeddingText embeddings.
deepseek-v4.1-flashchatDeepSeek V4.1 Flash · Private · Pro and up.
glm-4.7-flashchatGLM 4.7 Flash · Private · Pro and up.
qwen3-coder-480bchatQwen3 Coder 480B · Private · Pro and up.
kimi-k3chatKimi K3 · Encrypted · Ultra and up.
claude-sonnet-4.5chatClaude Sonnet 4.5 · Anonymised · Ultra and up.
gpt-5.2-codexchatGPT-5.2 Codex · Anonymised · Ultra and up.
qwen-imageimageQwen Image · Anonymised · Pro and up.
gpt-image-2.5imageGPT Image 2.5 · Anonymised · Ultra and up.
kling-v3-provideoKling V3 Pro · Anonymised · Ultra and up.
veo-3.1-fastvideoVeo 3.1 Fast · Anonymised · Ultra and up.

Agents that hard-code OpenAI model names (gpt-4o, gpt-4.1, o3, dall-e-3, tts-1, …) are accepted and mapped to the matching Sovereign model. Unknown chat models fall back to sovereign-chat. GET /api/v1/models lists every id with its name, privacy class and plan; a model above your plan answers 403 plan_required, and one that is not being served answers 503 model_unavailable.

Limits and plans

PlanRequests / monthHow to get it
Free100Generate a key above
Pro5,000Pay or stake
Ultra50,000Pay or stake
Max150,000Pay or stake

Every response carries X-Sovereign-Plan and X-Sovereign-Requests-Remaining. Usage resets on the first of each calendar month. Check or rotate your key on the account page.

Streaming

Send "stream": true and you receive standard text/event-stream chunks ending in data: [DONE]. Tool calls arrive as delta.tool_calls exactly as OpenAI SDKs expect. Note that chunks arrive in a burst rather than token by token: the reply is completed first so identity protection can run, then re-emitted.

Errors

{ "error": { "message": "…", "type": "authentication_error | invalid_request_error | rate_limit_error | server_error", "code": "…" } }
StatusMeaning
401Missing or invalid key
404Endpoint not in the whitelist
413Body over 200 KB
429Monthly limit reached (code: monthly_limit) or upstream busy
503Upstream temporarily unavailable

MCP server

Streamable HTTP at https://your-host/mcp, authenticated with the same key. Tools: sovereign_chat, sovereign_generate_image, sovereign_text_to_speech, sovereign_generate_video, sovereign_get_video. Config snippets are on the agent console.

Pay per call (x402)

No account, no key: POST /x402/chat and POST /x402/image answer 402 with payment requirements (USDC on Base). Send the same request with a signed X-PAYMENT header and the call is served, then settled. Failed generations are never charged. Details on the agent console.