# Protégé > One OpenAI-compatible endpoint for every model call. Label each call with the task it belongs to, and Protégé routes it to the cheapest model that clears that task's eval. ## Docs - [Introduction](https://docs.protege.sh/index.md): One endpoint for every model call. Label the call with its task, and Protégé serves it from the cheapest model that clears that task's eval. - [How it works](https://docs.protege.sh/how-it-works.md): One endpoint, one key, one extra field. What happens to a call after it leaves your app. - [Quickstart](https://docs.protege.sh/quickstart.md): Four steps to a labelled call. About five minutes. - [Migrating](https://docs.protege.sh/migrate.md): Two lines to route through Protégé, one field to make it useful. - [Projects and workloads](https://docs.protege.sh/concepts/projects-and-workloads.md): Two levels of scope. A project is a product surface; a workload is one stable call site inside it. - [Capture](https://docs.protege.sh/concepts/capture.md): What the gateway records per request, where it goes, and how to turn it off. - [Routing](https://docs.protege.sh/concepts/routing.md): How a labelled call reaches a model, and what has to be true before a cheaper one is used. - [Failures](https://docs.protege.sh/concepts/failures.md): The calls that went wrong are the ones worth learning from. Protégé tracks them per task and scores them with a judge. - [Split a workflow into tasks](https://docs.protege.sh/tutorials/split-a-workflow.md): Turn one expensive call path into labelled tasks, and find out where the money actually goes. - [Write an eval contract](https://docs.protege.sh/tutorials/write-an-eval-contract.md): Define what a correct answer is for one task. Nothing can be routed or trained until this exists. - [Route a task down](https://docs.protege.sh/tutorials/route-a-task-down.md): Move a task to a cheaper model without giving up quality, and roll it back if you do. - [Overview](https://docs.protege.sh/api-reference/introduction.md): Base URL, authentication, and the conventions every endpoint shares. - [Create chat completion](https://docs.protege.sh/api-reference/chat-completions.md): POST /v1/chat/completions. The OpenAI chat completions body, plus task. - [Errors](https://docs.protege.sh/api-reference/errors.md): Status codes, the error body, and which failures are worth retrying.