Workspace/Documentation
API reference V

DEVELOPER REFERENCE

Build with VexsaSips

OpenAI-compatible chat. Your models, behind one predictable interface.

BASE URL

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.

Base URL
https://YOUR_VEXSASIPS_DOMAIN/v1
Python · OpenAI SDK
import 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.

GET /v1/models

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-veloraLightweight
vexsaa-1.4Balanced lightweight
vexsaa-aetherGeneral purpose
vexsaa-2.7General intelligence
vexsaa-nyxoraAdvanced reasoning
vexsaa-3.1High capability
vexsaa-zenithFlagship
cURL
curl https://YOUR_VEXSASIPS_DOMAIN/v1/models \
  -H "Authorization: Bearer $VEXSASIPS_API_KEY"
POST /v1/chat/completions

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.

JavaScript · fetch
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.

Python · streaming
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 parameter
401Missing or invalid API key
403Revoked key or disabled account
404Unknown model or unsupported route
413Request body exceeds 1 MiB
429Account or model capacity rate limit
500Internal platform error
502Invalid or rejected upstream response
503Model not configured, unavailable, or timed out

Account-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.