> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.getoutprice.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.getoutprice.com/_mcp/server.

# Errors

Errors use standard HTTP status codes and a JSON body with a `detail` field:

```json
{ "detail": "tracked item not found" }
```

For a request body that fails validation (`422`), `detail` is a list naming
each field and what is wrong with it:

```json
{
  "detail": [
    {
      "loc": ["body", "poll_interval_minutes"],
      "msg": "Input should be greater than or equal to 1",
      "type": "greater_than_equal"
    }
  ]
}
```

| Status | Meaning                                                                         |
| ------ | ------------------------------------------------------------------------------- |
| `400`  | The request is not acceptable as sent; `detail` says why.                       |
| `401`  | Missing, wrong or revoked API key.                                              |
| `402`  | Past a plan limit, such as the number of tracked listings.                      |
| `403`  | The key may not do this (read-only, or the plan has no API access).             |
| `404`  | Not found, or not yours: other accounts' records always look absent.            |
| `409`  | Conflicts with something that exists, such as a listing already tracked.        |
| `422`  | The body failed validation. Numbers must be finite and below 1,000,000,000,000. |
| `429`  | Rate limited; wait `Retry-After` seconds.                                       |
| `5xx`  | Something failed on our side. Retry later, with backoff.                        |