API reference
A small, strict HTTP surface
Base URL and authentication
The public base URL is https://nordai.my.id/api. Send a customer API key as a bearer token. Browser sessions use cookies and are handled by the website.
Authorization: Bearer nord_sk_…Keys are shown once at creation and stored as a SHA-256 hash. A key can be restricted to specific model ids and given its own per-minute and monthly limits.
Chat completions
The endpoint is OpenAI-compatible. Set stream: true for SSE. The gateway rewrites model to an approved id, caps max_tokens to your plan, and forwards tool definitions unchanged.
curl -N https://nordai.my.id/api/v1/chat/completions \
-H "Authorization: Bearer $NORDAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "<id from /v1/me/models>",
"stream": true,
"messages": [{"role": "user", "content": "Explain this error"}]
}'Response headers include X-NordAI-Request-Id, X-NordAI-Model (the model that actually served the request) and your current rate-limit counters.
Idempotency
Send Idempotency-Key to make retries safe. A repeated key returns 409 duplicate_request and is not counted twice.
Errors
{
"error": {
"code": "monthly_limit_reached",
"message": "Monthly allowance reached (6000 of 6000 requests on NordAI Pro)…",
"request_id": "b1f0c6a2d3e4f5a6",
"details": { "reset_at": "2026-11-01T00:00:00+07:00", "limit": 6000, "used": 6000 }
}
}401invalid or revoked credential.403model not allowed for the plan or key, unverified email, support-only action.409duplicate idempotency key or illegal state transition.429rate, concurrency or quota limit — checkdetails.reset_at.502/503/504upstream router failure, timeout or maintenance.
Usage data
GET /v1/usage/summary returns a zero-filled daily series, per-model aggregates and your recent requests. Token counts appear only when the upstream reported them; they are never estimated.
GET /v1/gateway/limits returns the exact plan values and remaining allowance, which is what the CLI prints for /usage.