Served in the Kingdom. Nowhere else.
Every request on this route is answered by an endpoint inside the Kingdom of Saudi Arabia — a Sigmix GPU or an in-Kingdom partner. If none can answer, the request fails. It is never sent abroad instead.
https://inference.sigmix.sa/ksa-sovereign-route-only/v1Authenticate with a key that starts sgx-ksa-. Keys for the other route are refused here.
Three locks on the border
The key
A sovereign key (sgx-ksa-…) works on this path and is refused on the international one. It cannot be re-scoped.
The path
This base URL is its own route in the gateway. No header, parameter or body field can move a request to the other route.
The database
The routing table cannot store a link from a sovereign model to an endpoint outside the Kingdom: the database refuses the row.
Every endpoint on this route is confirmed as in-Kingdom by a named operator when it is added, and that confirmation is kept in the audit log. Prompts and outputs are not stored — only request metadata.
Your first call
Any OpenAI SDK works: set the base URL and the key. The samples use the first chat model published on this route.
curl https://inference.sigmix.sa/ksa-sovereign-route-only/v1/chat/completions \
-H "Authorization: Bearer $SIGMIX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"cohere.command-a-03-2025","messages":[{"role":"user","content":"Summarise Vision 2030 in one sentence."}]}'import os
from openai import OpenAI
client = OpenAI(base_url="https://inference.sigmix.sa/ksa-sovereign-route-only/v1", api_key=os.environ["SIGMIX_API_KEY"])
reply = client.chat.completions.create(
model="cohere.command-a-03-2025",
messages=[{"role": "user", "content": "Summarise Vision 2030 in one sentence."}],
)
print(reply.choices[0].message.content)import OpenAI from 'openai';
const client = new OpenAI({ baseURL: 'https://inference.sigmix.sa/ksa-sovereign-route-only/v1', apiKey: process.env.SIGMIX_API_KEY });
const reply = await client.chat.completions.create({
model: 'cohere.command-a-03-2025',
messages: [{ role: 'user', content: "Summarise Vision 2030 in one sentence." }],
});
console.log(reply.choices[0].message.content);Streaming
Add stream: true for server-sent events. Streaming needs an available balance of at least $20.00.
curl -N https://inference.sigmix.sa/ksa-sovereign-route-only/v1/chat/completions \
-H "Authorization: Bearer $SIGMIX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"cohere.command-a-03-2025","messages":[{"role":"user","content":"Summarise Vision 2030 in one sentence."}],"stream":true}'import os
from openai import OpenAI
client = OpenAI(base_url="https://inference.sigmix.sa/ksa-sovereign-route-only/v1", api_key=os.environ["SIGMIX_API_KEY"])
stream = client.chat.completions.create(
model="cohere.command-a-03-2025",
messages=[{"role": "user", "content": "Summarise Vision 2030 in one sentence."}],
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="")import OpenAI from 'openai';
const client = new OpenAI({ baseURL: 'https://inference.sigmix.sa/ksa-sovereign-route-only/v1', apiKey: process.env.SIGMIX_API_KEY });
const stream = await client.chat.completions.create({
model: 'cohere.command-a-03-2025',
messages: [{ role: 'user', content: "Summarise Vision 2030 in one sentence." }],
stream: true,
});
for await (const chunk of stream) process.stdout.write(chunk.choices[0]?.delta?.content ?? '');Models and prices on this route
The live roster. Use the model id exactly as shown.
| Model id | Name | From | Endpoint | Price · SAR | Unit | Context | Streams | Free trial |
|---|---|---|---|---|---|---|---|---|
| cohere.command-a-03-2025 | Cohere Command A | Cohere | Chat | ﷼ 30.00 · ﷼ 60.00 | per 1M tokens, input · output | 256,000 | Yes | Yes |
Showing SAR. The switch in the navigation changes it.
Endpoints
| Endpoint | What | Billed | On this route |
|---|---|---|---|
GET /ksa-sovereign-route-only/v1/models | List models | Free | Available |
POST /ksa-sovereign-route-only/v1/chat/completions | Chat | per 1M tokens, input · output | Available |
POST /ksa-sovereign-route-only/v1/embeddings | Embeddings | per 1M input tokens | No model yet |
POST /ksa-sovereign-route-only/v1/audio/speech | Text to speech | per 1M characters | No model yet |
POST /ksa-sovereign-route-only/v1/audio/transcriptions | Speech to text | per hour of audio | No model yet |
POST /ksa-sovereign-route-only/v1/audio/translations | Speech to text | per hour of audio | No model yet |
POST /ksa-sovereign-route-only/v1/images/generations | Image generation | per image | No model yet |
Rules that apply on every request
Billing
The most a request could cost is reserved before it runs and settled to the real usage after. A non-streamed response carries x-sigmix-charge-usd with the exact charge; a stream's charge appears on the Usage page when it ends.
Streaming
Available on chat models above an available balance of $20.00. A stream you close early is charged only for what was generated.
Limits
60 requests a minute per key unless you set your own; per-key concurrency and spend caps are yours to set in the console.
Every error has a code that says whose it is. The full list