POST
Queue a batch of URL scrapes

Authorizations

Authorization
string
header
default:tok_public_demo
required

Send a workspace API token in the Authorization: Bearer <token> header.

Keys carry the satk_ prefix and spend your organization's credit balance. GET /v1/public/balance reports what is left.

Test-mode keys (satk_test_), which drew on a separate self-refilling allowance, have been retired and no longer authenticate.

Headers

Idempotency-Key
string

Optional deduplication key, scoped to your organization. Re-sending a request with a key that was already used returns the original job instead of creating and charging for a second one.

Supersedes the idempotencyKey body field, which remains supported as a deprecated alias. If both are present, this header wins.

Maximum string length: 255

Body

application/json

Batch requests always return asynchronously, even if wait is supplied.

urls
string<uri>[]
required
Required array length: 1 - 50 elements
wait
boolean
default:true

Wait for a terminal response before falling back to async job polling.

waitTimeoutMs
integer

Optional client-requested sync wait timeout, bounded by the server maximum.

webhookUrl
string<uri>

Optional public callback URL for terminal job delivery. Available to every organization.

Naming a URL here registers it as a webhook endpoint if it is not registered already, so the signing secret exists before the first delivery does. Fetch it from GET /v1/public/webhooks/endpoints/{endpointId}/secret, or register the endpoint up front with POST /v1/public/webhooks/endpoints to have the secret in hand before you run anything.

Deliveries carry X-Scrapebento-Signature, an HMAC-SHA256 over "<timestamp>.<body>" under that endpoint's own secret, so the secret you need to verify your deliveries cannot forge anyone else's. Every attempt is recorded in GET /v1/public/webhooks/deliveries and can be re-sent from there.

idempotencyKey
string
deprecated

Deprecated alias for the Idempotency-Key header, which is the conventional transport and takes precedence when both are sent. Still honoured so existing integrations keep working.

Maximum string length: 255
cacheTtlSec
integer

How long this result may be reused, in seconds. Capped at 7 days (604800); larger values are clamped.

Omit it to accept the per-kind server default. Slow-moving kinds cache by default — infra and brand for 6h, seo, sitemap, site, and producthunt for 1h, and hn_search, hn_post, and rss for 5m. Everything else defaults to no caching.

A cached result is charged at the same rate as a fresh scrape, so the TTL is how stale an answer you can be billed for. Send 0 to prevent this result being cached, and fresh: true to bypass an existing cache entry on read.

Required range: 0 <= x <= 604800
fresh
boolean

Bypass cache and force a new scrape or search execution.

format
enum<string>
default:markdown
Available options:
raw,
markdown,
json,
metadata,
screenshot,
resolve
options
object

Endpoint-specific options passed through to the worker/sidecar.

Response

Batch accepted.

data
object
required