Agent-readable docs index: /llms.txt. Full docs in one file: /llms-full.txt. Download /docs.zip to grep all markdown files locally.

LLM Proxy

The LLM Proxy is a transparent, OpenAI- and Anthropic-shaped passthrough. Point your existing OpenAI or Anthropic SDK at KINDI instead of the provider, and KINDI does the mask → forward → unmask round-trip for you. You write your normal chat code; KINDI removes PII before the prompt leaves the Kingdom and restores it in the response.
The proxy is generally available on the KINDI API. The managed-demo path and its caps do vary (it can be off, and allowances reset daily); check GET /api/v1/proxy/status for the managed-demo fields (managed_enabled, managed_models, remaining allowances) before relying on the demo.

When to use the proxy vs /mask

You want to…Use
Call OpenAI/Anthropic with your existing SDK and have PII handled automaticallyProxy
Mask text, then decide yourself where it goes (your own LLM, storage, analytics)/mask
Irreversibly strip PII for logs/display, no recovery needed/redact
The proxy is the lowest-friction path when your LLM is OpenAI or Anthropic. /mask is the building block when you need control over the middle step. The proxy is built on the same masker: same recognizers, same accuracy.

How it works

  1. You send a normal request
    Your OpenAI/Anthropic SDK POSTs a chat request to KINDI's proxy base URL instead of the provider's. The body is the provider's native shape (messages, system, tools, …).
  2. KINDI masks the prompt
    The masker runs one detection pass over the prompt's text leaves (message content, system prompt, tool arguments/results) and replaces each PII span with an opaque token like <MASKED_PERSON_a1b2c3d4>. The {token: original} mapping is held only in this request handler; it is never persisted.
  3. KINDI forwards the masked prompt
    The masked body is forwarded to OpenAI or Anthropic with the provider key you supplied (X-Provider-Key), or, in the dashboard demo, KINDI's own capped managed key. Only masked text egresses the Kingdom.
  4. KINDI unmasks the reply
    The provider's response is scanned for the same tokens and the original PII is substituted back in, then returned to you in the provider's native response shape. For streaming, KINDI unmasks each SSE frame as it arrives.
The original PII never leaves the in-Kingdom box: masking and unmasking both run inside KINDI's KSA-region deployment. Only masked text reaches the provider.
Unlike /mask, the proxy is server-side: KINDI forwards the masked prompt to the provider on your behalf. The {token: original} mapping exists transiently in the proxy request handler and is discarded when the request finishes. It is never stored, never logged, and never returned. This is a different trust model from /mask, where decryption happens entirely in your own process. Use the proxy when you want KINDI to make the provider call; use /mask when you want to keep the provider call inside your own infrastructure.

Billing

The proxy charges the same uniform masking fee as /mask and /redact: metered by word count (1 token = 1 word), billed to the authenticated user. Current rates are shown on your dashboard billing page. Proxy usage is tagged source="proxy" in your usage records and shows up on the dashboard Overview and in /me/stats alongside /mask and /redact.
  • There is no managed pricing tier. The masking fee is identical for bring-your-own-key and managed-demo requests.
  • The provider's inference cost is separate. With your own key (X-Provider-Key), OpenAI/Anthropic bills your provider account directly; KINDI never sees or fronts that cost.
  • The managed-key demo is a capped courtesy, not a billing tier. When you use KINDI's managed key from the dashboard, KINDI pays the provider under a strict daily token cap (per-user and global). The KINDI masking fee still applies (free daily quota → paid balance, like /mask); the managed cap only governs the provider cost. See Keys & auth and Limitations.

The in-Kingdom wedge

KINDI masks and unmasks inside its KSA-region deployment. When you use the proxy, the only thing that crosses the border to OpenAI/Anthropic is text with the PII already removed; the original values are restored in-Kingdom on the way back. That is the data-residency posture the proxy is built around; see Compliance.
Set up the proxy
OpenAI drop-in setup: base URL, headers, and the proxy_config SDK helper.