Start a Website Crawl
/v1/crawlCreates an asynchronous crawl and returns run/job metadata. Optional structured extraction runs per crawled page and item-level rows are read through /v1/crawl/{crawl_id}/items. The runtime must produce a materialized crawl plan before quota reservation; an unavailable planning runtime returns 503 without reserving quota or creating a job.
On this page
Request example
Replace placeholders with your values. Use your Team API key for authenticated requests.
https://kieapi.comcurl -X POST "https://kieapi.com/v1/crawl" \
-H "Authorization: Bearer $SPIDER_API_KEY" \
-H 'Idempotency-Key: docs-example-01' \
-H "Content-Type: application/json" \
-d '{
"urls": [
"<value>"
]
}'Authentication
BearerAuth
Parameters
Idempotency-Keyheader ยท string- Caller-generated key for replay-safe creation. Reusing the key with the same request body returns the stored response; reusing it with a different body or while the original request is in progress returns 409.
Request body required
application/json
urlsarray of string (uri) required- Seed URLs for the crawl. Each URL must use HTTP or HTTPS and must not contain URL userinfo (a username or password).
max_pagesinteger- Maximum queued pages and Credits reservation; 1 Credit per delivered page.
Default:
100 max_depthintegerDefault:
0scopestring- scope defaults to same_hostname. same_hostname follows only the exact hostname. same_domain follows hosts sharing the same registrable domain, including subdomains. same_origin additionally requires the same scheme and effective port. all accepts any valid HTTP(S) URL.
Allowed:
"same_hostname", "same_domain", "same_origin", "all"Default:
"same_hostname" discover_sitemapbooleanDefault:
falsesitemap_urlstring | null (uri)- Optional explicit sitemap URL. It must use HTTP or HTTPS and must not contain URL userinfo (a username or password).
sitemap_limitintegerDefault:
1000browserBrowserOptionsextractionStructuredExtractionRequest
Responses
202 Crawl accepted.
400 Request validation failed.
401 Missing or invalid API key.
402 The Team does not have enough available Credits for the maximum reservation.
403 Authenticated principal cannot access this resource.
409 The idempotency key is already in progress or belongs to a different request body. In-progress Browser Session creation returns Retry-After.
429 Monthly quota was exhausted.
503 Required runtime service is unavailable.
Schemas
Field definitions and complete validation rules for this API. Follow a type link to its definition.
CrawlCreateRequest
object
urlsarray of string (uri) required- Seed URLs for the crawl. Each URL must use HTTP or HTTPS and must not contain URL userinfo (a username or password).
max_pagesinteger- Maximum queued pages and Credits reservation; 1 Credit per delivered page.
Default:
100 max_depthintegerDefault:
0scopestring- scope defaults to same_hostname. same_hostname follows only the exact hostname. same_domain follows hosts sharing the same registrable domain, including subdomains. same_origin additionally requires the same scheme and effective port. all accepts any valid HTTP(S) URL.
Allowed:
"same_hostname", "same_domain", "same_origin", "all"Default:
"same_hostname" discover_sitemapbooleanDefault:
falsesitemap_urlstring | null (uri)- Optional explicit sitemap URL. It must use HTTP or HTTPS and must not contain URL userinfo (a username or password).
sitemap_limitintegerDefault:
1000browserBrowserOptionsextractionStructuredExtractionRequest
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"urls"
],
"properties": {
"urls": {
"type": "array",
"minItems": 1,
"maxItems": 100,
"description": "Seed URLs for the crawl. Each URL must use HTTP or HTTPS and must not contain URL userinfo (a username or password).\n",
"items": {
"type": "string",
"format": "uri"
}
},
"max_pages": {
"type": "integer",
"minimum": 1,
"maximum": 10000,
"default": 100,
"description": "Maximum queued pages and Credits reservation; 1 Credit per delivered page."
},
"max_depth": {
"type": "integer",
"minimum": 0,
"default": 0
},
"scope": {
"type": "string",
"enum": [
"same_hostname",
"same_domain",
"same_origin",
"all"
],
"default": "same_hostname",
"description": "scope defaults to same_hostname. same_hostname follows only the exact hostname. same_domain follows hosts sharing the same registrable domain, including subdomains. same_origin additionally requires the same scheme and effective port. all accepts any valid HTTP(S) URL."
},
"discover_sitemap": {
"type": "boolean",
"default": false
},
"sitemap_url": {
"type": [
"string",
"null"
],
"format": "uri",
"description": "Optional explicit sitemap URL. It must use HTTP or HTTPS and must not contain URL userinfo (a username or password).\n"
},
"sitemap_limit": {
"type": "integer",
"minimum": 1,
"maximum": 10000,
"default": 1000
},
"browser": {
"$ref": "#/components/schemas/BrowserOptions"
},
"extraction": {
"$ref": "#/components/schemas/StructuredExtractionRequest"
}
}
}BrowserOptions
object
Safe browser-render controls. These map to Spider human_behavior policy and do not expose arbitrary JavaScript, cookies, storage state, proxy URLs, user agents, or DICloak profile IDs.
wait_for_selectorstring | null- CSS selector that must appear before returning the rendered page.
wait_for_timeout_msinteger | null- Maximum wait for `wait_for_selector`, in milliseconds.
process_iframesboolean- Include same-origin iframe content where the renderer can safely access it.
Default:
false flatten_shadow_domboolean- Flatten open shadow DOM content into the rendered document output.
Default:
false virtual_scrollVirtualScrollOptions
Complete schema
{
"type": "object",
"additionalProperties": false,
"description": "Safe browser-render controls. These map to Spider human_behavior policy and do not expose arbitrary JavaScript, cookies, storage state, proxy URLs, user agents, or DICloak profile IDs.\n",
"properties": {
"wait_for_selector": {
"type": [
"string",
"null"
],
"minLength": 1,
"maxLength": 1024,
"description": "CSS selector that must appear before returning the rendered page."
},
"wait_for_timeout_ms": {
"type": [
"integer",
"null"
],
"minimum": 1,
"maximum": 15000,
"description": "Maximum wait for `wait_for_selector`, in milliseconds."
},
"process_iframes": {
"type": "boolean",
"default": false,
"description": "Include same-origin iframe content where the renderer can safely access it."
},
"flatten_shadow_dom": {
"type": "boolean",
"default": false,
"description": "Flatten open shadow DOM content into the rendered document output."
},
"virtual_scroll": {
"$ref": "#/components/schemas/VirtualScrollOptions"
}
}
}VirtualScrollOptions
object
container_selectorstring required- CSS selector for the scrollable container.
scroll_countintegerDefault:
10scroll_bystring or integerDefault:
"container_height"wait_after_scrollnumberDefault:
0.5
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"container_selector"
],
"properties": {
"container_selector": {
"type": "string",
"minLength": 1,
"maxLength": 1024,
"description": "CSS selector for the scrollable container."
},
"scroll_count": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 10
},
"scroll_by": {
"anyOf": [
{
"type": "string",
"enum": [
"container_height",
"page_height"
]
},
{
"type": "integer",
"minimum": 1,
"maximum": 20000
}
],
"default": "container_height"
},
"wait_after_scroll": {
"type": "number",
"minimum": 0,
"maximum": 5,
"default": 0.5
}
}
}StructuredExtractionRequest
object
typestring requiredAllowed:
"json_css", "llm"schemaJsonCssExtractionSchemaraw_crawl4ai_schemaobject | null- Allowlisted raw Crawl4AI JsonCssExtractionStrategy schema. Only JSON schema keys for name, baseSelector, baseFields, fields, selector, source, default, scalar/list/nested field types, regex, and safe transforms are accepted. function/expression hooks are rejected.
computed_fieldsarray of StructuredComputedFieldDefault:
[]llmStructuredLLMExtractionOptions or null
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"enum": [
"json_css",
"llm"
]
},
"schema": {
"$ref": "#/components/schemas/JsonCssExtractionSchema"
},
"raw_crawl4ai_schema": {
"type": [
"object",
"null"
],
"additionalProperties": true,
"description": "Allowlisted raw Crawl4AI JsonCssExtractionStrategy schema. Only JSON schema keys for name, baseSelector, baseFields, fields, selector, source, default, scalar/list/nested field types, regex, and safe transforms are accepted. function/expression hooks are rejected.\n"
},
"computed_fields": {
"type": "array",
"maxItems": 100,
"default": [],
"items": {
"$ref": "#/components/schemas/StructuredComputedField"
}
},
"llm": {
"anyOf": [
{
"$ref": "#/components/schemas/StructuredLLMExtractionOptions"
},
{
"type": "null"
}
]
}
}
}JsonCssExtractionSchema
object
namestring | nullbase_selectorstring requiredfieldsarray of StructuredExtractionField required
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"base_selector",
"fields"
],
"properties": {
"name": {
"type": [
"string",
"null"
],
"minLength": 1,
"maxLength": 128
},
"base_selector": {
"type": "string",
"minLength": 1,
"maxLength": 1024
},
"fields": {
"type": "array",
"minItems": 1,
"maxItems": 100,
"items": {
"$ref": "#/components/schemas/StructuredExtractionField"
}
}
}
}StructuredExtractionField
object
namestring requiredselectorstring | nulltypestring requiredAllowed:
"text", "html", "attribute", "regex", "nested", "list", "nested_list"attributestring | nullpatternstring | nullgroupinteger | nulltransformstring | nullAllowed:
"strip", "lowercase", "uppercase"fieldsarray of StructuredExtractionField or null
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"name",
"type"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"selector": {
"type": [
"string",
"null"
],
"minLength": 1,
"maxLength": 1024
},
"type": {
"type": "string",
"enum": [
"text",
"html",
"attribute",
"regex",
"nested",
"list",
"nested_list"
]
},
"attribute": {
"type": [
"string",
"null"
],
"minLength": 1,
"maxLength": 128
},
"pattern": {
"type": [
"string",
"null"
],
"minLength": 1,
"maxLength": 1024
},
"group": {
"type": [
"integer",
"null"
],
"minimum": 0
},
"transform": {
"type": [
"string",
"null"
],
"enum": [
"strip",
"lowercase",
"uppercase"
]
},
"fields": {
"anyOf": [
{
"type": "array",
"minItems": 1,
"maxItems": 100,
"items": {
"$ref": "#/components/schemas/StructuredExtractionField"
}
},
{
"type": "null"
}
]
}
}
}StructuredComputedField
object
namestring requiredoperationstring requiredAllowed:
"template", "join", "first_non_empty"Default:
"template"sourcesarray of stringDefault:
[]templatestring | nullseparatorstringDefault:
""defaultstring | nulltransformstring | nullAllowed:
"strip", "lowercase", "uppercase"
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"name",
"operation"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"operation": {
"type": "string",
"enum": [
"template",
"join",
"first_non_empty"
],
"default": "template"
},
"sources": {
"type": "array",
"maxItems": 20,
"default": [],
"items": {
"type": "string",
"pattern": "^[A-Za-z_][A-Za-z0-9_]*(?:\\.[A-Za-z_][A-Za-z0-9_]*|\\[[0-9]{1,4}\\])*$"
}
},
"template": {
"type": [
"string",
"null"
],
"minLength": 1,
"maxLength": 2048
},
"separator": {
"type": "string",
"maxLength": 128,
"default": ""
},
"default": {
"type": [
"string",
"null"
],
"maxLength": 2048
},
"transform": {
"type": [
"string",
"null"
],
"enum": [
"strip",
"lowercase",
"uppercase"
]
}
}
}StructuredLLMExtractionOptions
object
namestring | nullinstructionstringschemaobject | null- JSON Schema-style target shape sent to the server-configured LLM.
extraction_typestringAllowed:
"schema", "block"Default:
"schema"input_formatstringAllowed:
"html", "markdown", "text", "fit_html"Default:
"html"chunk_token_thresholdintegerDefault:
4096overlap_ratenumberDefault:
0.1apply_chunkingbooleanDefault:
trueforce_json_responsebooleanDefault:
truetemperaturenumber | nullmax_tokensinteger | null
Complete schema
{
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"type": [
"string",
"null"
],
"minLength": 1,
"maxLength": 128
},
"instruction": {
"type": "string",
"minLength": 1,
"maxLength": 4096
},
"schema": {
"type": [
"object",
"null"
],
"additionalProperties": true,
"description": "JSON Schema-style target shape sent to the server-configured LLM."
},
"extraction_type": {
"type": "string",
"enum": [
"schema",
"block"
],
"default": "schema"
},
"input_format": {
"type": "string",
"enum": [
"html",
"markdown",
"text",
"fit_html"
],
"default": "html"
},
"chunk_token_threshold": {
"type": "integer",
"minimum": 128,
"maximum": 200000,
"default": 4096
},
"overlap_rate": {
"type": "number",
"minimum": 0,
"maximum": 0.5,
"default": 0.1
},
"apply_chunking": {
"type": "boolean",
"default": true
},
"force_json_response": {
"type": "boolean",
"default": true
},
"temperature": {
"type": [
"number",
"null"
],
"minimum": 0,
"maximum": 2
},
"max_tokens": {
"type": [
"integer",
"null"
],
"minimum": 1,
"maximum": 128000
}
}
}CrawlCreateResponse
object
runPublicRun requiredcrawlPublicCrawl required
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"run",
"crawl"
],
"properties": {
"run": {
"$ref": "#/components/schemas/PublicRun"
},
"crawl": {
"$ref": "#/components/schemas/PublicCrawl"
}
}
}PublicRun
object
idstring requiredtypePublicRunType requiredstatusPublicStatus requiredcreated_atstring | null (date-time)completed_atstring | null (date-time)cost_unitsinteger | nullquotaPublicQuotaReservation required
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"id",
"type",
"status",
"quota"
],
"properties": {
"id": {
"type": "string"
},
"type": {
"$ref": "#/components/schemas/PublicRunType"
},
"status": {
"$ref": "#/components/schemas/PublicStatus"
},
"created_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"completed_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"cost_units": {
"type": [
"integer",
"null"
],
"minimum": 0
},
"quota": {
"$ref": "#/components/schemas/PublicQuotaReservation"
}
}
}PublicRunType
string
Complete schema
{
"type": "string",
"enum": [
"fetch",
"browser_scrape",
"crawl"
]
}PublicStatus
string
Complete schema
{
"type": "string",
"enum": [
"queued",
"running",
"paused",
"completed",
"failed",
"low_quality",
"budget_exhausted",
"expired"
]
}PublicQuotaReservation
object
resourcestring requiredAllowed:
"scrape", "crawl"quantity_reservedinteger required
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"resource",
"quantity_reserved"
],
"properties": {
"resource": {
"type": "string",
"enum": [
"scrape",
"crawl"
]
},
"quantity_reserved": {
"type": "integer",
"minimum": 1
}
}
}PublicCrawl
object
idstring requiredrun_idstring | nullstatusPublicStatus requiredsubmitted_url_countinteger | nullqueued_url_countinteger | nullmax_depthinteger | nullqueue_countsobjectprocessed_countinteger | nullremaining_countinteger | nullstop_reasonstring | nulldiagnosticsPublicCrawlDiagnosticslinksobjectresults_urlstring | null
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"id",
"status"
],
"properties": {
"id": {
"type": "string"
},
"run_id": {
"type": [
"string",
"null"
]
},
"status": {
"$ref": "#/components/schemas/PublicStatus"
},
"submitted_url_count": {
"type": [
"integer",
"null"
],
"minimum": 0
},
"queued_url_count": {
"type": [
"integer",
"null"
],
"minimum": 0
},
"max_depth": {
"type": [
"integer",
"null"
],
"minimum": 0
},
"queue_counts": {
"type": "object",
"additionalProperties": {
"type": "integer"
}
},
"processed_count": {
"type": [
"integer",
"null"
],
"minimum": 0
},
"remaining_count": {
"type": [
"integer",
"null"
],
"minimum": 0
},
"stop_reason": {
"type": [
"string",
"null"
]
},
"diagnostics": {
"$ref": "#/components/schemas/PublicCrawlDiagnostics"
},
"links": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"results_url": {
"type": [
"string",
"null"
]
}
}
}PublicCrawlDiagnostics
object
Public crawl diagnostics are sanitized aggregate counters for processed pages, blocked pages, engine attempts, and retry taxonomy. They do not expose raw selectors, profile data, proxy data, CDP URLs, DICloak/provider internals, identity feedback kinds, retry policy reasons, or raw audit attempt rows.
processed_countintegerDefault:
0blocked_countintegerDefault:
0block_reasonsobjectengine_attemptsobject
Complete schema
{
"type": "object",
"additionalProperties": false,
"description": "Public crawl diagnostics are sanitized aggregate counters for processed pages, blocked pages, engine attempts, and retry taxonomy. They do not expose raw selectors, profile data, proxy data, CDP URLs, DICloak/provider internals, identity feedback kinds, retry policy reasons, or raw audit attempt rows.\n",
"properties": {
"processed_count": {
"type": "integer",
"minimum": 0,
"default": 0
},
"blocked_count": {
"type": "integer",
"minimum": 0,
"default": 0
},
"block_reasons": {
"type": "object",
"additionalProperties": {
"type": "integer",
"minimum": 0
}
},
"engine_attempts": {
"type": "object",
"additionalProperties": {
"type": "integer",
"minimum": 0
}
},
"retry": {
"$ref": "#/components/schemas/PublicCrawlRetryDiagnostics"
}
}
}PublicCrawlRetryDiagnostics
object
Public sanitized aggregate for crawl retry taxonomy. Counts are bucketed into safe categories and do not expose queue row internals, retry policy reasons, identity feedback kinds, or audit attempts.
scheduled_countintegerDefault:
0failed_countintegerDefault:
0categoriesobjectnext_retry_atstring | null (date-time)
Complete schema
{
"type": "object",
"additionalProperties": false,
"description": "Public sanitized aggregate for crawl retry taxonomy. Counts are bucketed into safe categories and do not expose queue row internals, retry policy reasons, identity feedback kinds, or audit attempts.\n",
"properties": {
"scheduled_count": {
"type": "integer",
"minimum": 0,
"default": 0
},
"failed_count": {
"type": "integer",
"minimum": 0,
"default": 0
},
"categories": {
"type": "object",
"additionalProperties": {
"type": "integer",
"minimum": 0
}
},
"next_retry_at": {
"type": [
"string",
"null"
],
"format": "date-time"
}
}
}PublicErrorResponse
object
errorPublicError required
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"error"
],
"properties": {
"error": {
"$ref": "#/components/schemas/PublicError"
}
}
}PublicError
object
codestring requiredAllowed:
"seoapi_price_pending", "seoapi_unavailable", "seoapi_busy", "seoapi_not_found", "seoapi_rate_limited", "seoapi_budget_exceeded", "seoapi_idempotency_conflict", "seoapi_insufficient_credits", "seoapi_admission_failed", "seoapi_execution_interrupted", "seoapi_delivery_unknown", "seoapi_response_invalid", "seoapi_model_unsupported", "seoapi_model_options_invalid", "seoapi_provider_rejected", "seo_price_pending", "seo_provider_blocked", "seo_local_rate_limited", "seo_fallback_unavailable", "seo_fallback_budget_exceeded", "seo_pagination_expired", "seo_delivery_uncertain", "seo_auth_required", "seo_initialization_required", "seo_permission_denied", "seo_verification_required", "seo_rate_limited", "seo_upstream_unavailable", "seo_transport_failed", "seo_invalid_response", "seo_rpc_error", "seo_period_unavailable", "seo_account_unavailable", "seo_session_busy", "seo_configuration_required", "validation_error", "invalid_request", "unsupported_feature", "authentication_required", "permission_denied", "not_found", "run_not_found", "crawl_not_found", "artifact_not_found", "session_not_found", "profile_not_found", "profile_in_use", "profile_not_ready", "profile_not_cloneable", "profile_limit_reached", "profile_proxy_conflict", "proxy_not_found", "proxy_unavailable", "invalid_session_options", "invalid_query_options", "invalid_cursor", "idempotency_key_required", "browser_session_limit_reached", "browser_capacity_exhausted", "browser_start_timeout", "browser_runtime_unavailable", "session_not_active", "controller_already_connected", "browser_relay_unavailable", "precondition_required", "precondition_failed", "timeout", "run_not_ready", "artifact_expired", "quota_exceeded", "insufficient_credits", "billing_reconciliation_required", "rate_limited", "fetch_failed", "render_failed", "maps_rate_limited", "maps_challenge", "maps_schema_changed", "maps_invalid_response", "maps_transport_failed", "maps_page_budget_exhausted", "google_trends_rate_limited", "google_trends_challenge", "google_trends_explore_failed", "google_trends_widget_missing", "google_trends_related_failed", "google_trends_invalid_response", "google_trends_transport_failed", "google_trends_collection_failed", "google_ads_account_context_missing", "google_ads_batch_failed", "google_ads_browser_context_missing", "google_ads_browser_unavailable", "google_ads_collection_failed", "google_ads_page_failed", "google_ads_protocol_drift", "google_ads_rate_limited", "google_ads_timeout", "twitter_provider_unavailable", "twitter_provider_rejected", "twitter_submission_unknown", "wechat_transport_failed", "wechat_rate_limited", "wechat_invalid_response", "wechat_redirect_rejected", "wechat_verification_required", "wechat_parse_failed", "blackhatworld_search_failed", "blackhatworld_no_results", "reddit_read_failed", "idempotency_conflict", "idempotency_in_progress", "service_unavailable", "internal_error"messagestring requiredtypestring requiredAllowed:
"auth", "validation", "quota", "rate_limit", "not_found", "execution", "conflict", "internal"retryableboolean requiredrequest_idstring | nulldetailsobject
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"code",
"message",
"type",
"retryable"
],
"properties": {
"code": {
"type": "string",
"enum": [
"seoapi_price_pending",
"seoapi_unavailable",
"seoapi_busy",
"seoapi_not_found",
"seoapi_rate_limited",
"seoapi_budget_exceeded",
"seoapi_idempotency_conflict",
"seoapi_insufficient_credits",
"seoapi_admission_failed",
"seoapi_execution_interrupted",
"seoapi_delivery_unknown",
"seoapi_response_invalid",
"seoapi_model_unsupported",
"seoapi_model_options_invalid",
"seoapi_provider_rejected",
"seo_price_pending",
"seo_provider_blocked",
"seo_local_rate_limited",
"seo_fallback_unavailable",
"seo_fallback_budget_exceeded",
"seo_pagination_expired",
"seo_delivery_uncertain",
"seo_auth_required",
"seo_initialization_required",
"seo_permission_denied",
"seo_verification_required",
"seo_rate_limited",
"seo_upstream_unavailable",
"seo_transport_failed",
"seo_invalid_response",
"seo_rpc_error",
"seo_period_unavailable",
"seo_account_unavailable",
"seo_session_busy",
"seo_configuration_required",
"validation_error",
"invalid_request",
"unsupported_feature",
"authentication_required",
"permission_denied",
"not_found",
"run_not_found",
"crawl_not_found",
"artifact_not_found",
"session_not_found",
"profile_not_found",
"profile_in_use",
"profile_not_ready",
"profile_not_cloneable",
"profile_limit_reached",
"profile_proxy_conflict",
"proxy_not_found",
"proxy_unavailable",
"invalid_session_options",
"invalid_query_options",
"invalid_cursor",
"idempotency_key_required",
"browser_session_limit_reached",
"browser_capacity_exhausted",
"browser_start_timeout",
"browser_runtime_unavailable",
"session_not_active",
"controller_already_connected",
"browser_relay_unavailable",
"precondition_required",
"precondition_failed",
"timeout",
"run_not_ready",
"artifact_expired",
"quota_exceeded",
"insufficient_credits",
"billing_reconciliation_required",
"rate_limited",
"fetch_failed",
"render_failed",
"maps_rate_limited",
"maps_challenge",
"maps_schema_changed",
"maps_invalid_response",
"maps_transport_failed",
"maps_page_budget_exhausted",
"google_trends_rate_limited",
"google_trends_challenge",
"google_trends_explore_failed",
"google_trends_widget_missing",
"google_trends_related_failed",
"google_trends_invalid_response",
"google_trends_transport_failed",
"google_trends_collection_failed",
"google_ads_account_context_missing",
"google_ads_batch_failed",
"google_ads_browser_context_missing",
"google_ads_browser_unavailable",
"google_ads_collection_failed",
"google_ads_page_failed",
"google_ads_protocol_drift",
"google_ads_rate_limited",
"google_ads_timeout",
"twitter_provider_unavailable",
"twitter_provider_rejected",
"twitter_submission_unknown",
"wechat_transport_failed",
"wechat_rate_limited",
"wechat_invalid_response",
"wechat_redirect_rejected",
"wechat_verification_required",
"wechat_parse_failed",
"blackhatworld_search_failed",
"blackhatworld_no_results",
"reddit_read_failed",
"idempotency_conflict",
"idempotency_in_progress",
"service_unavailable",
"internal_error"
]
},
"message": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"auth",
"validation",
"quota",
"rate_limit",
"not_found",
"execution",
"conflict",
"internal"
]
},
"retryable": {
"type": "boolean"
},
"request_id": {
"type": [
"string",
"null"
]
},
"details": {
"type": "object",
"additionalProperties": true
}
}
}