POST
https://app.evoriqa.com/api/v1/chatbots/{chatbotId}/sources/crawlCrawl a website
Queues a whole-site crawl from a start URL (202 on queue; 200 when the site was already crawled and `force` is not set). Carries its own 10-per-minute rate limit on top of the global ones.
Requires scope knowledge:write
Warning:
Access is gated — enable it before your first call
The API is off by default. A request succeeds only when all three switches are on: the platform master switch (off by default), your organisation’s API toggle, and your plan or client entitlement. Any one off returns 403 API access is not enabled for this workspace.
Parameters
| Name | In | Type | Required | Default | Description |
|---|---|---|---|---|---|
| chatbotId | path | string uuid | Required | — | The chatbot the source belongs to. |
Request body
Content type: application/json
| Field | Type | Required | Description |
|---|---|---|---|
| url | string uri | Required | The start URL. |
| maxPages | integer 1–100 | Optional | Page budget for the crawl. |
| force | boolean | Optional | Re-crawl even when the site was crawled before. |
Request
curl
curl -X POST "https://app.evoriqa.com/api/v1/chatbots/{chatbotId}/sources/crawl" \
-H "x-api-key: $EVORIQA_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "url": "https://example.com", "maxPages": 50 }'Node.js
const res = await fetch("https://app.evoriqa.com/api/v1/chatbots/{chatbotId}/sources/crawl", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.EVORIQA_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"url": "https://example.com",
"maxPages": 50
}),
});
const responseBody = await res.json();Python
import os
import requests
res = requests.post(
"https://app.evoriqa.com/api/v1/chatbots/{chatbotId}/sources/crawl",
headers={"Authorization": f"Bearer {os.environ['EVORIQA_API_KEY']}"},
json={
"url": "https://example.com",
"maxPages": 50
},
)
body = res.json()Response
200 OK
{
"success": true,
"data": {
"queued": true,
"maxPages": 50
}
}