Agent-readable docs index: /llms.txt. Full docs in one file: /llms-full.txt. Download /docs.zip to grep all markdown files locally.
Every proxy request carries two identities:
  1. Your KINDI identity: Authorization: Bearer mk_live_… (or a dashboard session). This authenticates you to KINDI and meters the masking fee.
  2. The provider key: which OpenAI/Anthropic account pays for the inference. There are two ways to supply it.

Bring your own key (production)

Send your provider key per request in X-Provider-Key. KINDI uses it to forward the masked prompt and then discards it; your provider key is never stored, never logged, and never returned.
POST /api/v1/proxy/openai/v1/chat/completions Authorization: Bearer mk_live_... X-Provider-Key: sk-...
This is the production path: OpenAI/Anthropic bills your own account; KINDI only bills the masking fee. There is no key-storage step; you pass the key on every call. The KINDI SDK helper sets both headers for you (see OpenAI / Anthropic).

Managed demo (dashboard only)

From the dashboard, logged-in, email-verified users can try the proxy without a provider key. KINDI forwards the masked prompt using its own managed provider key, under a strict daily token cap.
  • Session-only. The managed key is available only to a logged-in dashboard session; a Bearer/API caller can never invoke it. Programmatic callers must bring their own key.
  • Verified-account gate. Unverified or anonymous users can't use the demo: the managed path returns 403 demo_requires_verification.
  • Cheap models only. The demo permits a small allowlist of low-cost models; anything else returns 400 model_not_allowed_on_demo. Your own key is unrestricted.
  • Capped. Per-user and global daily token caps protect KINDI's budget. When you hit your personal cap: 402 managed_allowance_exhausted ("switch to your own key"). When the global daily budget is exhausted: 503 demo_unavailable ("demo temporarily unavailable, use your own key"). The KINDI masking fee is billed normally either way; the cap only governs the provider cost.
The managed demo is a courtesy for evaluation, not a billing tier. For any real workload, bring your own provider key.
Open the proxy dashboard
Try the managed demo and see your remaining managed allowance.

Check availability: GET /api/v1/proxy/status

Before wiring the proxy into your app, query the status endpoint to learn whether the managed demo is on, which models the demo permits, and your remaining allowance.
/api/v1/proxy/status is authenticated — it is not a public health check. Send either a session cookie or a Bearer KINDI key; an unauthenticated call gets a 401. It never needs an X-Provider-Key.
GET /api/v1/proxy/status Authorization: Bearer mk_live_...
Response:
{ "proxy_enabled": true, "managed_enabled": true, "managed_models": [ "gpt-5.4-nano", "gpt-5.4-mini", "gpt-5.2", "gpt-5-chat-latest", "gpt-5.5", "claude-haiku-4-5-20251001", "claude-sonnet-4-6", "claude-opus-4-8" ], "managed_user_remaining": 4200, "managed_global_remaining": 180000 }
FieldTypeMeaning
proxy_enabledboolAlways true on the current KINDI API; the proxy is generally available.
managed_enabledboolThe dashboard managed demo is enabled.
managed_modelsstring[]Models the managed demo permits (deployment-configurable: treat the list above as an example, and check this field rather than hardcoding model names).
managed_user_remainingint | nullYour remaining managed tokens today. null for Bearer/API callers and non-managed contexts (managed is session-only).
managed_global_remainingint | nullRemaining global managed budget today, or null when the managed demo is off.
managed_user_remaining is null for any non-session or non-managed caller; the managed allowance only exists for a logged-in dashboard session. Bring-your-own-key callers don't have (or need) a managed allowance.