Discover URLs on a domain
Crawls a domain to build a sitemap. Returns cached results if available
within cache_ttl. Results delivered via webhook and downloadable from results_url.
Webhook deliveries include X-ByteKit-Event: sitemap.completed or
X-ByteKit-Event: sitemap.failed so receivers can dispatch on the
header without parsing the body shape.
The webhook body is { event, data }. For a job the worker ran, data is not a
SitemapResponse:
sitemap.completeddatacarriesid,url,strategy,status,total_urls,sources,total_bytes,results_url,warnings,metadata,compactandbilling.sitemap.faileddatacarriesid,url,strategy,status,error_code,error_message,warningsandmetadata.
In both, url is the host as scheme://host, and warnings is the
worker's own warnings or null. When the request is answered from a cached job
(cache: hit), the sitemap.completed data is instead the full job object, the
same fields as a SitemapResponse.
Limits: request bodies are capped at 512 KB. An oversized body
returns a 400 with error code request_too_large.
For AI agents: https://bytekit.com/llms.txt — every docs page is available as markdown by appending .md
Authorization
AuthorizationRequiredBearer <token>API key. Manage keys from the dashboard at app.bytekit.com.
In: header
Request Body
application/jsonRequiredurlRequiredstringThe site to discover. Sitemap discovery is host-scoped (robots.txt
and /sitemap.xml live at the host root), so only the scheme and host
are used: a path, query string or fragment is accepted but ignored,
and the 202 response carries a warnings entry saying so. A bare
host, or a host with just a trailing /, produces no warning.
"uri"strategystringHow much discovery work the job does.
quick— readsrobots.txtand the XML sitemaps only. Every result hassource: sitemap.standard— thequicksources, then fills any remainingmax_urlsbudget with URLs from your account's completed scrapes of the host in the last 90 days (source: known).deep— thestandardsources, then crawls page links outward from the URLs found so far, up tomax_depthlevels, untilmax_urlsis reached (source: links).
"standard"Value in: "quick" | "standard" | "deep"max_depthinteger2Minimum: 1Maximum: 5max_urlsinteger5000Minimum: 1Maximum: 100000processobject | nullAccepted, stored and echoed back on the job, but it has no effect: the worker logs that the trigger is not implemented and ignores it.
nullwebhook_urlstringOptional webhook endpoint URL (HTTPS only; http:// rejected with 400 invalid_url, reason scheme_unsupported). When omitted, no sitemap.completed/sitemap.failed webhook is delivered and the job is poll-only via GET /v1/sitemap/{id}. When present, delivery is unchanged. webhook_secret is ignored when webhook_url is absent.
"^https://"Format: "uri"webhook_secretstring | nullHMAC secret used to sign webhook deliveries. Each delivery carries X-Webhook-Timestamp and X-Webhook-Signature (sha256= + the hex HMAC-SHA256 of timestamp.body). See https://bytekit.com/docs/guides/webhooks for verification code.
nullcache_ttlstringMax 90 days.
"30d"Pattern: "^(0|\\d+[dh])$"compactbooleanfalsemetadataobjectArbitrary key-value metadata. Max 4096 bytes when JSON-serialized.
Sitemap job accepted (or cached result returned).