> ## Documentation Index
> Fetch the complete documentation index at: https://docs.peel.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

> Compile public web surfaces into deterministic APIs for apps and agents.

Give Peel a URL and a job. Build-time agents inspect public pages, network traffic, selectors, and official surfaces, then Peel publishes named endpoints only when the result passes evidence, schema, runtime, and policy gates.

The result is a reusable API surface for apps and agents: REST endpoints, OpenAPI exports, MCP tools, and a first-party CLI. Runtime calls execute the stored contract. They do not launch a browser, call a model, or rediscover the site on every request.

<Info>
  Peel is currently in private preview. Public signup is disabled on `peel.sh`, so use an existing account and API key from `https://peel.sh/settings`.
</Info>

## Start here

<CardGroup cols={2}>
  <Card title="Quickstart" icon="zap" href="/getting-started/quickstart">
    Build, inspect, and call your first compiled API.
  </Card>

  <Card title="CLI" icon="terminal" href="/getting-started/cli">
    Set up the hosted CLI, auth flow, and MCP install path.
  </Card>

  <Card title="How it works" icon="arrow-left-right" href="/getting-started/how-it-works">
    See the build-time agent and deterministic runtime model.
  </Card>

  <Card title="Authentication" icon="key" href="/getting-started/authentication">
    API keys and OAuth for REST and MCP clients.
  </Card>

  <Card title="Core concepts" icon="book" href="/getting-started/concepts">
    APIs, endpoints, matching, and sessions.
  </Card>
</CardGroup>

## Core operations

The public API surface centers on build, runtime, lifecycle, diagnostics, and export operations:

| Operation   | Route                                                                           | Use it when                                                                                       |
| ----------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
| **Build**   | `POST /v1/apis`                                                                 | Compile an API from a URL and task. See [Quickstart](/getting-started/quickstart).                |
| **Inspect** | `GET /v1/apis/{api_id}`                                                         | Read the current lifecycle state, endpoint list, schemas, auth mode, and links.                   |
| **Execute** | `POST /v1/apis/{api_id}/endpoints/{endpoint_name}:call`                         | Run a published endpoint. See [Call an endpoint](/getting-started/quickstart#3-call-an-endpoint). |
| **Revise**  | `POST /v1/apis/{api_id}/revise`                                                 | Keep the site, change the build intent. See [API updates](/features/api-updates).                 |
| **Rebuild** | `POST /v1/apis/{api_id}/rebuild`                                                | Keep the instructions, refresh the compiled evidence.                                             |
| **Respond** | `POST /v1/apis/{api_id}/respond`                                                | Continue a build that paused in `needs_input`.                                                    |
| **Health**  | `GET /v1/apis/{api_id}/health`                                                  | Check build-stage diagnostics, failure artifacts, or published endpoint health.                   |
| **Export**  | `GET /v1/apis/{api_id}/exports/openapi` and `GET /v1/apis/{api_id}/exports/mcp` | Download the API as OpenAPI or MCP. See [Exporting an API](/reference/exports).                   |

Every operation on an existing API keeps the same `api.id`, so callers and generated clients do not need to migrate after updates.

## Base URL

```
https://api.peel.sh
```

All REST API requests go to this host. The MCP server is at `https://api.peel.sh/mcp`. Every build returns an `api.id`, which is the stable handle for later operations. If you call `POST /v1/apis` with a URL that already has a compatible build, Peel reuses it (`matched: true`). Pass `force_new: true` to compile a fresh one.

The CLI defaults to the same API host for programmatic calls and opens browser auth on `https://peel.sh` when needed. See [CLI](/getting-started/cli).
