Skip to main content

Base URL

The API follows the OpenAI chat completions request and response shapes, so OpenAI-compatible SDKs work by changing the base URL. Protégé-specific fields are additive: task on the request, and a protege object on the response.

Authentication

Every request carries a bearer token.
x-api-key: $PROTEGE_API_KEY is accepted as an alternative. Keys are scoped to an environment. Use separate keys for production and staging, so staging traffic does not enter a task’s production history. This is the only credential involved. Protégé is managed, so there is no bring-your-own-key header and no provider account to configure.
The key authorises real inference spend. Never expose it in a browser, a mobile binary, or anything else a user can read. Call Protégé from your server.

Content type

Requests are JSON. Streaming responses are server-sent events.

Versioning

The version is in the path. /v1 will not change in a way that breaks an existing request body. Additive changes ship without a version bump, so parse responses leniently. Unknown response fields should be ignored rather than treated as errors, since the protege object gains fields over time.

Rate limits

600 requests per key per minute, returned on every response. A looser per-IP ceiling applies before a key is verified. A 429 means the window is exhausted. Back off using x-ratelimit-reset-requests rather than retrying immediately.

Request IDs

Every response carries x-request-id. Include it when reporting a problem; it is what lets us find the exact call, its route and its trace.

Chat completions

The endpoint, and the task parameter in full.