API Reference
Collect a crawl
GET /crawl/{job} — bearer auth, JSON responses, billed per successful request.
GET/crawl/{job}
Collect a crawl
Retrieves the result of an asynchronous crawl job that previously returned 202 Accepted. Use this endpoint after /crawl indicates a job is still running and you need to poll for completion.
When to use it: Call when /crawl responds with 202 and you need the final result, or when you want to monitor a long-running crawl's progress without consuming credits. Suitable for any polling strategy; no rate limits apply.
- Authentication:
Authorizationheader only. Query parameter?key=is rejected. - Privacy by design: Other organizations' job IDs return
404, identical to nonexistent IDs. Job IDs are scoped to your organization prefix. - No credit headers:
200responses omitcredits_chargedand credit headers; collection is always free regardless of outcome.
| Parameter | In | Type | Description |
|---|---|---|---|
| job * | path | string | The `job_id` from the `202`, verbatim. |
request.sh
curl -X GET "https://app.irmu.com/api/crawl/{job}" \
-H "Authorization: Bearer $IRMU_API_KEY"200.json
"string"request.js
const res = await fetch("https://app.irmu.com/api/crawl/{job}", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.IRMU_API_KEY}`,
"Content-Type": "application/json",
}
});
const data = await res.json();request.py
import os, requests
res = requests.get(
"https://app.irmu.com/api/crawl/{job}",
headers={"Authorization": f"Bearer {os.environ['IRMU_API_KEY']}"}
)
print(res.json())| Status | Meaning |
|---|---|
| 200 | The crawl has finished. As with `/crawl`, a page comes back as `text/html` and anything else -- the answer to an `ai_query`, say -- as the JSON envelope. Branch on the content type. No credit headers here, and no `credits_charged`: collecting costs nothing, so there is nothing to report. |
| 202 | Still going. `position` says where it sits in the runner's queue while it is `queued`, and is null once it is `running`. A running crawl also carries `debug`: the url, a viewport screenshot and the page source as they stood when this was asked. Polling again takes a fresh look, so it is how to watch a slow crawl rather than wait blind on it. Collecting is free, and so is looking. |
| 401 | No key, an unknown key, or a caller that is not an organization. |
| 404 | No such crawl -- an id that never existed, or one belonging to another organization. The two are deliberately indistinguishable. |
| 500 | The crawl failed after it had been accepted. Nothing is refunded. The charge was taken when the crawl was queued, and only a crawl that fails at `/crawl` itself -- before any work was done -- is handed back. `error` says what went wrong. |
Start building with Irmu today
200 free credits every month, no card required. Every API, every integration, one key.