DEVELOPER REFERENCE
Build with VexsaSips
OpenAI-compatible chat. Your models, behind one predictable interface.
One endpoint. Room to build.
Create an API key, choose an available public model, and send your first request. Use only server-side environments for permanent keys.
https://YOUR_VEXSASIPS_DOMAIN/v1import os
from openai import OpenAI
client = OpenAI(
base_url="https://YOUR_VEXSASIPS_DOMAIN/v1",
api_key=os.environ["VEXSASIPS_API_KEY"],
)
response = client.chat.completions.create(
model="vexsaa-aether",
messages=[{"role": "user", "content": "Hello!"}],
)
print(response.choices[0].message.content)Authentication
Send Authorization: Bearer VEXSASIPS_API_KEY with every API request, including the model list. Full secrets are displayed once, never stored in plaintext, and cannot be retrieved later. A revoked key returns HTTP 403.
The console uses verified sign-in. The playground invokes the same gateway with one of your owned active keys, without retrieving its secret.
Stable public model names
The model list returns all seven aliases in tier order. Inclusion does not imply a route is configured; use the catalog availability indicator before integration.
vexsaa-veloraLightweightvexsaa-1.4Balanced lightweightvexsaa-aetherGeneral purposevexsaa-2.7General intelligencevexsaa-nyxoraAdvanced reasoningvexsaa-3.1High capabilityvexsaa-zenithFlagshipcurl https://YOUR_VEXSASIPS_DOMAIN/v1/models \
-H "Authorization: Bearer $VEXSASIPS_API_KEY"Chat completions
Required fields: model and a non-empty messages array. Messages accept system, developer, user, assistant, and tool roles, text or content-part arrays, and tool call metadata.
Optional parameters: stream, temperature, max_tokens or max_completion_tokens, top_p, stop, frequency/presence penalties, seed, n (1–4), tools, tool_choice, parallel_tool_calls, response_format, and stream_options. The gateway rejects unknown top-level fields. Temperature, streaming, and tools require model capabilities to be enabled. Other optional parameter support depends on the configured model.
const response = await fetch("https://YOUR_VEXSASIPS_DOMAIN/v1/chat/completions", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.VEXSASIPS_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "vexsaa-zenith",
messages: [{ role: "user", content: "Hello!" }],
}),
});
if (!response.ok) throw await response.json();
console.log(await response.json());The Responses API is not exposed in this release. Use Chat Completions; unsupported routes return a structured 404, not a simulated response.
Streaming without the wait
Set stream: true on a streaming-enabled route. The response is text/event-stream: JSON data events followed by data: [DONE]. Public model IDs are retained in every chunk. Use stream_options: { "include_usage": true } to request usage when supported.
stream = client.chat.completions.create(
model="vexsaa-aether",
messages=[{"role": "user", "content": "Explain SSE briefly."}],
stream=True,
stream_options={"include_usage": True},
)
for chunk in stream:
if chunk.choices:
print(chunk.choices[0].delta.content or "", end="")After HTTP headers are sent, a failure is emitted as an SSE error object before termination. Inspect events, not just the initial HTTP status. Disconnecting cancels generation where the upstream supports cancellation. The gateway has a 120-second request timeout.
Errors you can act on
Every gateway response includes X-Request-ID. Share it for debugging; never share your API key. Error responses use { "error": { "message": "…", "type": "…", "code": "…", "param": null }, "request_id": "vxs_req_…" }.
400Invalid body or unsupported parameter401Missing or invalid API key403Revoked key or disabled account404Unknown model or unsupported route413Request body exceeds 1 MiB429Account or model capacity rate limit500Internal platform error502Invalid or rejected upstream response503Model not configured, unavailable, or timed outAccount-level limits
Accounts default to 60 requests per minute in UTC-aligned fixed windows. Creating additional keys does not increase the account limit. Responses include X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset when available. HTTP 429 includes Retry-After. Retry with backoff; do not automatically replay a completion after a partial stream.
Usage records contain request metadata, timestamps, status, latency, and token counts only when reported. Prompt and response contents are not persisted by this gateway.