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

# Create a crawl

> POST /v1/crawls starts an asynchronous crawl of a website.

`POST https://api.sila.sh/v1/crawls`

Send an optional `Idempotency-Key` header. Repeating a request with the same key returns the existing crawl with `200`.

## Request

```json theme={null}
{
  "url": "https://example.com",
  "additionalSiteUrls": [],
  "sitemapUrls": [],
  "llmsTxtUrls": [],
  "discovery": "auto",
  "manualUrls": [],
  "limit": 100,
  "respectRobots": true,
  "incremental": null,
  "webhook": { "url": "https://example.com/hook", "metadata": {} }
}
```

| Field | Description |
| - | - |
| `discovery` | `auto`, `sitemap-only`, or `manual-only`. |
| `limit` | Default 100, or your plan's pages per crawl if that is lower. Above the plan maximum returns `400 limit_exceeded`. |
| `respectRobots` | Default `true`. |
| `incremental` | `{ "since": ISO\|null, "knownUrls": [], "knownSitemapUrls": [], "knownLlmsSources": [{ "url", "etag", "lastModified", "contentHash" }] }`. Sila reports only new or changed pages and lists removed URLs. |
| `webhook` | `url` must be a valid public URL. `metadata` is echoed in every event and is limited to 2 KB. See [Webhooks](https://docs.sila.sh/webhooks.md). |

## Response 201

```json theme={null}
{ "id": "…", "status": "queued", "createdAt": "2026-11-04T00:00:00.000Z" }
```

## Errors

| Status | Code |
| - | - |
| 400 | `invalid_request`, `invalid_url`, `limit_exceeded` |
| 401 | `unauthorized` |
| 402 | `credits_exhausted` |
| 429 | `concurrency_limit` (too many running crawls for your plan) |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.