Retrieval API endpoint
Returns the account's effective web retrieval limits and options: `available_operations`, `crawl_available`, `research_available`, `search_max_results`, `map_max_urls`, `crawl_max_pages`, `max_active_jobs`, and the accepted `render_modes`, `sitemap_modes` and `query_policies`. The operations list is empty while retrieval setup is incomplete.
/web/capabilitiesReturns the authenticated account's effective limits, supported modes, available operations, and published unit prices. Requires the x-api-key header. During optional retrieval runtime setup, the route remains registered and returns an empty available_operations list with availability flags set to false.
Response enum values:
contract_version: v1.render_modes: auto, http, browser. The effective P1 runtime currently advertises only auto and http; requesting browser returns 503.sitemap_modes: include, only, skip.query_policies: preserve, drop_tracking.pricing.currency: credits.available_operations is derived from configured runtime capabilities. Paper setup adds research/sources, research/papers/search, research/papers/metadata, research/papers/read and research/papers/related. Async availability also depends on worker presence; limits and published prices do not imply an operation is currently available.
Paper unit prices are paper_metadata_credits=1 (including metadata-only reads), paper_search_query_credits=3, paper_full_text_credits=5, and citation_seed_credits=3. A graph request deduplicates canonical seeds and captures up to ten successful seed lists, while frozen cursor pages cost zero. Source query failures are not billed as successful extraction.
| Field | In the sample | Value in the sample |
|---|---|---|
| model_rates | Has a value | |
| contract_version | Has a value | |
| available_operations | Has a value | 19 entries |
| crawl_available | Has a value | true |
| research_available | Has a value | true |
| render_modes | Has a value | 2 entries |
| sitemap_modes | Has a value | 3 entries |
| query_policies | Has a value | 2 entries |
| search_max_results | Has a value | 50 |
| map_max_urls | Has a value | 5,000 |
| crawl_max_pages | Has a value | 1,000 |
| max_active_jobs | Has a value | 2 |
| max_job_credits | Has a value | 10,000 |
| billing_bypassed | Has a value | true |
| pricing.currency | Has a value | |
| pricing.search_request_credits | Has a value | 3 |
| pricing.http_document_credits | Has a value | 5 |
| pricing.browser_document_credits | Has a value | 15 |
| pricing.cached_read_credits | Has a value | 1 |
| pricing.map_base_credits | Has a value | 1 |
| pricing.map_resource_credits | Has a value | 1 |
| pricing.control_request_credits | Has a value | 0 |
| pricing.job_submission_credits | Has a value | 0 |
| pricing.paper_metadata_credits | Has a value | 1 |
| pricing.paper_search_query_credits | Has a value | 3 |
| pricing.paper_full_text_credits | Has a value | 5 |
| pricing.citation_seed_credits | Has a value | 3 |
No parameters
curl -X GET "https://api.crawlora.net/api/v1/web/capabilities" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"contract_version": "v1",
"available_operations": [
"web/capabilities",
"web/search",
"web/map"
],
"crawl_available": false,
"research_available": false,
"render_modes": [
"auto",
"http"
],
"sitemap_modes": [
"include",
"only",
"skip"
],
"query_policies": [
"preserve",
"drop_tracking"
],
"search_max_results": 50,
"map_max_urls": 5000,
"crawl_max_pages": 1000,
"max_active_jobs": 2,
"max_job_credits": 10000,
"billing_bypassed": false,
"pricing": {
"currency": "credits",
"search_request_credits": 3,
"http_document_credits": 5,
"browser_document_credits": 15,
"cached_read_credits": 1,
"map_base_credits": 1,
"map_resource_credits": 1,
"control_request_credits": 0,
"job_submission_credits": 0
}
}
}Request schema
No body schema
Response schema
Inline response schema
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | Code is the HTTP status code or a custom code used to indicate the result of the request @example 200 | |||
| data | retrievalplatform.CapabilitiesResponse | No | ||||
| data.available_operations | array | No | ||||
| data.billing_bypassed | boolean | No | ||||
| data.contract_version | string | No | ||||
| data.crawl_available | boolean | No | ||||
| data.crawl_max_pages | integer | No | ||||
| data.map_max_urls | integer | No | ||||
| data.max_active_jobs | integer | No | ||||
| data.max_job_credits | integer | No | ||||
| data.model_rates | object | No | ||||
| data.pricing | retrievalplatform.UnitPrices | No | ||||
| data.pricing.browser_document_credits | integer | No | ||||
| data.pricing.cached_read_credits | integer | No | ||||
| data.pricing.citation_seed_credits | integer | No | ||||
| data.pricing.control_request_credits | integer | No | ||||
| data.pricing.currency | string | No | ||||
| data.pricing.http_document_credits | integer | No | ||||
| data.pricing.job_submission_credits | integer | No | ||||
| data.pricing.map_base_credits | integer | No | ||||
| data.pricing.map_resource_credits | integer | No | ||||
| data.pricing.paper_full_text_credits | integer | No | ||||
| data.pricing.paper_metadata_credits | integer | No | ||||
| data.pricing.paper_search_query_credits | integer | No | ||||
| data.pricing.search_request_credits | integer | No | ||||
| data.query_policies | array | No | ||||
| data.render_modes | array | No | ||||
| data.research_available | boolean | No | ||||
| data.search_max_results | integer | No | ||||
| data.sitemap_modes | array | No | ||||
| msg | unknown | No | Msg is the message that describes the result of the request @example "Request successful" |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 401 | Unauthorized | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/web/capabilities" \
-H "x-api-key: $CRAWLORA_API_KEY"