Reference — Rev A
API reference
V01GA speaks the OpenAI chat-completions dialect. If a library works with OpenAI, it works with V01GA — just swap the base URL and key.
§ 01
Base URL
https://sila-rhquln4is-silatech00s-projects.vercel.app/v1§ 02
Authentication
Every request needs an Authorization: Bearer v01ga_live_... header. Create keys in the dashboard.
§ 03
POST /v1/chat/completions
Non-streaming example:
curl https://sila-rhquln4is-silatech00s-projects.vercel.app/v1/chat/completions \
-H "Authorization: Bearer v01ga_live_..." \
-H "Content-Type: application/json" \
-d '{
"model": "v01ga/qwen-3.8",
"messages": [
{"role": "system", "content": "You are helpful."},
{"role": "user", "content": "Hello!"}
]
}'Streaming (SSE):
curl https://sila-rhquln4is-silatech00s-projects.vercel.app/v1/chat/completions \
-H "Authorization: Bearer v01ga_live_..." \
-H "Content-Type: application/json" \
-N \
-d '{
"model": "v01ga/qwen-3.8",
"messages": [{"role": "user", "content": "Count to 5"}],
"stream": true,
"stream_options": { "include_usage": true }
}'§ 04
OpenAI SDKs
Python:
from openai import OpenAI
client = OpenAI(
base_url="https://sila-rhquln4is-silatech00s-projects.vercel.app/v1",
api_key="v01ga_live_...",
)
resp = client.chat.completions.create(
model="v01ga/qwen-3.8",
messages=[{"role": "user", "content": "Hi"}],
)
print(resp.choices[0].message.content)Node / TypeScript:
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://sila-rhquln4is-silatech00s-projects.vercel.app/v1",
apiKey: process.env.V01GA_API_KEY,
});
const resp = await client.chat.completions.create({
model: "v01ga/qwen-3.8",
messages: [{ role: "user", content: "Hi" }],
});
console.log(resp.choices[0].message.content);§ 05
GET /v1/models
Returns the list of models you can pass as model.
curl https://sila-rhquln4is-silatech00s-projects.vercel.app/v1/modelsQwen 3.8 27B
OVHcloud · France · 32,000 ctx
v01ga/qwen-3.8Llama 3.3 70B
OVHcloud · France · 131,072 ctx
v01ga/llama-3.3-70bMixtral 8x7B
OVHcloud · France · 32,768 ctx
v01ga/mixtral-8x7bMistral Nemo 12B
OVHcloud · France · 131,072 ctx
v01ga/mistral-nemoQwen 2.5 Coder 32B
OVHcloud · France · 32,768 ctx
v01ga/qwen-2.5-coder-32bDeepSeek R1 Distill 32B
OVHcloud · France · 32,768 ctx
v01ga/deepseek-r1-32bQwen 3 32B
Scaleway · France · 32,768 ctx
v01ga/qwen-3-32bDeepSeek R1
Scaleway · France · 65,536 ctx
v01ga/deepseek-r1Gemma 3 27B
Scaleway · France · 131,072 ctx
v01ga/gemma-3-27bMinistral 3B
Mistral · France · 131,072 ctx
v01ga/ministral-3bMinistral 8B
Mistral · France · 131,072 ctx
v01ga/ministral-8bMistral Small 3.1
Mistral · France · 32,768 ctx
v01ga/mistral-smallCodestral
Mistral · France · 32,768 ctx
v01ga/codestralQwen 3 30B A3B
OVHcloud Direct · France · 32,768 ctx
v01ga/qwen-3-30b-a3b§ 06
Rate limits
The MVP is free-tier and rate-limited to protect shared upstream capacity. Defaults per API key: 20 requests / minute, 1,000 requests / day, 100,000 tokens / day per account. Exceeding a limit returns 429 with a Retry-After header.
§ 07
Errors
Errors follow the OpenAI envelope so existing SDKs render them:
{
"error": {
"message": "Unknown model 'foo'. Available: v01ga/qwen-3.8, ...",
"type": "invalid_request_error",
"code": "model_not_found"
}
}StatusCodeMeaning
400invalid_requestBad JSON or field.
400model_not_foundModel id not in the registry.
401missing_api_keyNo Bearer header.
401invalid_api_keyKey not found or revoked.
429rate_limit_exceededPer-key or per-account limit hit.
503upstream_unavailableModel cooling from an upstream error.