List recent requests in the key's project, or in every project of its organization
Per-request records from the ephemeral request log, newest first, for the API key's project (every key in that project, not only this key).
Requires scope: none (any valid key)
Per-request records from the ephemeral request log, newest first, for the API key's project (every
key in that project, not only this key). With all_projects=true and a key carrying the read
scope, the records of every project in the key's organization (archived projects included), merged
into one newest-first list under the same cursor. Every record carries project_id. Records expire
after page.retention_hours; for durable billing totals use GET /v1/usage. Totals here will not
match an invoice.
Pitfalls:
- Page with BOTH
beforeandbefore_idcopied frompage.next_before/page.next_before_id.beforealone re-returns the boundary record and cannot break same-millisecond ties;before_idalone does not bound the page at all. - A cursor older than the retention window returns 410
ERR::REQUEST::BEYOND_RETENTION. Restart from the first page. - An empty
datameans "nothing in the lastretention_hours", not "never". Checkretained_since. - A page can be shorter than
limitwhilehas_moreis true. Keep paging untilhas_moreis false. limitis clamped silently: missing, non-numeric or non-positive gives 50, above 200 gives 200.all_projects=truewithout thereadscope is 403ERR::AUTH::INSUFFICIENT_SCOPE, namingread. The default list needs no scope beyond a valid key. The organization is always the key's own; no parameter names another.- Keep
all_projects=trueon every page of one walk: the cursor pages whichever list it came from.
Authorization
bearerAuth Authorization: Bearer <key>. Read the key from the SPICRAWL_API_KEY environment
variable; never hard-code or log it. spicrawl_test_… keys can never spend live
credits. Scopes: scrape, batch, sessions (granted by default), browser
and read (granted deliberately). A missing scope is 403 ERR::AUTH::INSUFFICIENT_SCOPE naming the scope.
In: header
Query Parameters
When true, lists every project in the key's organization instead of only the key's project. Requires the read scope (403 ERR::AUTH::INSUFFICIENT_SCOPE without it). Only true and false are accepted; any other value is 400.
"false"Value in
- "true"
- "false"
Page size. Never refused; invalid values fall back to 50 and values above 200 become 200.
1 <= value <= 20050Only records with exactly this status. Not validated; an unknown value returns an empty page. Ignored when only_errors=true.
Value in
- "success"
- "failed"
- "timeout"
- "blocked"
- "rejected"
- "cancelled"
When exactly true, returns every record whose status is not success. Any other value (including 1) is treated as false.
"false"Value in
- "true"
- "false"
Cursor time, RFC 3339 with optional fractional seconds, copied from page.next_before. Must be sent together with before_id.
date-timeCursor id, copied from page.next_before_id. Must be sent together with before.
Response Body
application/json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
curl -X GET "https://example.com/v1/requests"{ "data": [ { "id": "01M0FK1EP2E7FBMWAR7W10SMXW", "created_at": "2026-09-22T12:41:22.183Z", "project_id": "01M0FJZ8Q3W4B5T8J2V9K6X1RD", "engine": "chromium", "status": "blocked", "http_status": 403, "error_code": "ERR::UPSTREAM::CHALLENGE", "error_detail": "The target served an Akamai challenge page.", "attempts": 2, "url": "https://shop.example.com/p/123", "url_host": "shop.example.com", "proxy": { "source": "pool", "endpoint_id": "dc-198.51.100.7-6646", "requested_tier": "datacenter", "requested_country": "de", "country": "de", "endpoints": [ "dc-198.51.100.9-6646", "dc-198.51.100.7-6646" ] }, "spans": { "admission_ms": 2, "dispatch_ms": 4731, "worker_ms": 4718, "queue_ms": 0, "engine_ms": 4706, "upstream_ms": null, "extract_ms": null, "total_ms": 4735 }, "blocked": { "vendor": "akamai", "signal": "\"Access Denied\"", "rule": "body_marker" }, "bytes_in": 18231, "credits_micro": 0 } ], "page": { "retention_hours": 24, "retained_since": "2026-09-21T12:45:00Z", "has_more": true, "next_before": "2026-09-22T12:41:22.183Z", "next_before_id": "01M0FK1EP2E7FBMWAR7W10SMXW" }}