Fetch

Fetch API — endpoints, requests, and responses.

For AI agents: https://bytekit.com/llms.txt — every docs page is available as markdown by appending .md

GET /v1/scrape/bulk/{id}Get scrape bulk job status

Returns the job envelope plus its rehydrated per-URL scrape envelopes. **Downloading item content.** A `raw` or `markdown` artifact within the 10-MiB inline cap is returned inline. An oversized one is replaced by a **pre-signed** URL, minted fresh on every read of this endpoint and valid for **86400 seconds (24 hours)**. The underlying objects are private, so an unsigned URL returns `401`: download the content inside that window, or re-poll this endpoint for a fresh signature. An artifact that was never stored, or whose object cannot be signed, is omitted from `formats` and reported as `artifact_unavailable` in `warnings`. The private unsigned storage URL is never returned. **Cancelled by the platform.** When the account can no longer spend (its bandwidth balance is exhausted, or the account is deleted) while items are still pending, ByteKit cancels the job itself. It then reads `status: cancelled` even though you never called `DELETE /v1/bulk/{id}`, and the cancellation sends no webhook. **Job ids from other create routes.** The job is looked up by account only, so the id of a job created by `POST /v1/fetch/bulk` or `POST /v1/bulk` is found here too, not a `404`. The items listed are the job's scrape rows: a fetch-bulk job's items appear, and a `POST /v1/bulk` job shows its scrape items but not its screenshots. An id from another account answers `404`.

GET /v1/fetchFetch a URL (GET)

Direct HTTP fetch. Metadata is returned in X-Fetch-* headers. What the body holds depends on `X-Fetch-Fast-Path`. When it is `true`, a successful response returns the upstream response bytes verbatim. When it is `false` the request fell back to a browser render, and the body is the rendered page rather than the bytes the target sent; `X-Fetch-Content-Length` is then the compressed size of that page. Non-2xx upstream responses use the `upstream_error` JSON envelope with the upstream HTTP status.