Skip to content
Sentinel AI Sentinel AI

Quickstart

Sentinel exposes an OpenAI-compatible API backed by in-country inference. Any OpenAI, Anthropic, or Gemini SDK works — point it at Sentinel and keep your code.

Three wire formats, one in-country pipeline Sentinel accepts requests in the OpenAI, Anthropic and Gemini wire formats, so existing SDKs work unchanged. These are request shapes the gateway serves, not external providers it calls: all three feed the same governed pipeline and, by default, the same in-country model. THE SHAPE YOU SEND — YOUR SDK, UNCHANGED OpenAI wire format POST /v1/chat/completions Anthropic wire format POST /v1/messages Gemini wire format POST /v1beta One pipeline auth · quota · guardrails route · meter · settle STREAMING ON /v1 In-country model qwen36-35b-a3b Sky47 Ascend · pk-isb-1 DEFAULT PATH These are request shapes Sentinel serves — not calls to those companies. Your request reaches the in-country model; routing anywhere else is opt-in and off by default.
Sentinel accepts the OpenAI, Anthropic and Gemini request shapes, so your existing SDK works with a changed base URL and key. Serving those formats is not the same as calling those providers: your request runs the Sentinel pipeline and reaches the in-country model. See Sovereignty for what routing anywhere else would require.

1. Get a key

Sign in to the Sentinel Platform and issue a virtual API key (sk-mesh-…) under API Keys. Each key is scoped and rate-capped.

2. Call the gateway

Base URL: https://sentinel.junaid.pk/v1

Terminal window
curl https://sentinel.junaid.pk/v1/chat/completions \
-H "Authorization: Bearer $SENTINEL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen36-35b-a3b",
"messages": [{"role": "user", "content": "Hello from in-country AI."}],
"max_tokens": 512
}'

The response carries gateway metadata — sovereign: true, the guardrail decision, and the per-call cost metered in PKR.

3. Use your existing SDK

from openai import OpenAI
client = OpenAI(
base_url="https://sentinel.junaid.pk/v1",
api_key="sk-mesh-...",
)
resp = client.chat.completions.create(
model="qwen36-35b-a3b",
messages=[{"role": "user", "content": "Summarise this in one line."}],
)
print(resp.choices[0].message.content)

Other protocols: Anthropic clients use /v1/messages; Gemini clients use /v1beta. The same virtual key authenticates all three.

qwen36-35b-a3b is a reasoning model — always send a real max_tokens so the reply is not spent entirely on hidden reasoning.