Making requests
Use the generated OpenAPI document to select a route and inspect its authoritative request and response schema. This page documents conventions that apply across API groups.
Setup
export EXTRALT_API_KEY="your-api-key"
export EXTRALT_EXTRACT_URL="https://api.extralt.com/v1/extract"JSON requests
Send JSON request bodies with Content-Type: application/json. Request fields
use snake_case.
curl -s -X POST "$EXTRALT_EXTRACT_URL/robots" \
-H "Authorization: Bearer $EXTRALT_API_KEY" \
-H "Idempotency-Key: robot-create-example-1" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example-store.com/products/sample",
"country_code": "US"
}' | jqDo not infer response casing or optionality from a request example. Generate types from OpenAPI or validate responses against its schemas.
Idempotent mutations
Robot, Run, Schedule, Import, and Enrichment creation, plus Run restart,
require an Idempotency-Key header. Use a unique, stable key for one logical
operation. If the connection fails, retry the same payload with the same key.
Reusing that key with a different payload returns 409 Conflict.
Keys contain 1 to 255 visible ASCII characters. Do not recycle keys across unrelated operations.
Asynchronous work
Robots, Runs, Imports, and Enrichments can be asynchronous. A create request returns the resource or job identifier; read the corresponding resource until it reaches a terminal state. Keep the identifier as lineage for later Captures or Items.
Use bounded polling with a delay. Do not poll continuously or assume a fixed completion time. See Common patterns for an example.
Lists and filters
List routes accept resource-specific filters. For example, Captures can be scoped to a Run, Robot, or Import. Prefer the narrowest server-side filter available instead of downloading an organization-wide result and filtering it locally.
curl -s "$EXTRALT_EXTRACT_URL/captures?run_id=$RUN_ID" \
-H "Authorization: Bearer $EXTRALT_API_KEY" | jqUse cursor pagination when a list response indicates that more rows are available. See Pagination.
Errors
Check the HTTP status before reading a success payload. Treat 401 and 403
as authentication or organization-scope failures, 4xx validation errors as
request problems, 429 as backpressure, and 5xx as retryable only when the
operation is safe to retry. For mutations, retain the original
Idempotency-Key. See Error handling.