- authentication
- Secret API key as a bearer token
- billing
- Free.
The job's current status and running counts. status moves from queued to processing and ends in completed, failed, or cancelled; processed and the low, medium and high counts advance as chunks finish. Once the run has settled, summary adds up what the rows say — the top ten countries and networks, how many rows carried each signal, how many hit one of your lists, and the risk split — built from the same cells the result file holds; it is null until then. A job that belongs to another account answers 404.
Parameters
| name | in | type | description |
|---|---|---|---|
| jobIdrequired | path | integer |
Example request
curl https://spaw.co/api/v1/ip/bulk/{jobId} \
-H "Authorization: Bearer sk_live_…"This endpoint has no console on its page. It answers with records from your own account, often by an id only you have, rather than about a value you can type here. The dashboard lists the same rows.
Responses
200The job.
{
"success": true,
"data": {
"job": {
"id": 512,
"status": "completed",
"total": 2,
"duplicate_count": 0,
"processed": 2,
"low": 0,
"medium": 1,
"high": 1,
"summary": {
"rows": 2,
"reserved": 0,
"countries": [
{
"country": "US",
"rows": 1
},
{
"country": "AL",
"rows": 1
}
],
"networks": [
{
"asn": 15169,
"org": "Google LLC",
"rows": 1
},
{
"asn": 42237,
"org": "w1n ltd",
"rows": 1
}
],
"signals": {
"datacenter": 2,
"corporate_proxy": 0,
"crawler": 0,
"tor": 0,
"vpn": 1,
"relay": 0,
"anonymous": 1,
"blocklisted": 0,
"attack_source": 0,
"mobile": 0,
"satellite": 0
},
"listed": {
"allow": 0,
"deny": 0
},
"risk": {
"low": 0,
"medium": 1,
"high": 1
}
},
"credits_used": 2,
"stopped_reason": null,
"cancel_requested": false,
"webhook_status": "delivered",
"created_at": "2026-09-04T10:12:44+00:00",
"finished_at": "2026-09-04T10:12:46+00:00"
}
}
}401The key is missing, malformed, or revoked.
{
"success": false,
"error": {
"code": "UNAUTHENTICATED",
"message": "Provide a valid API key as a bearer token.",
"request_id": "req_01m1kgdm4xngzmbmff68g94w0c"
}
}404No such record on this account.
{
"success": false,
"error": {
"code": "NOT_FOUND",
"message": "No record with that id on this account.",
"request_id": "req_01m1kgdm4xngzmbmff68g94w0c"
}
}429Over 5 requests per second for the key. Retry after the limit resets.
{
"success": false,
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests. Retry after the limit resets.",
"request_id": "req_01m1kgdm4xngzmbmff68g94w0c"
}
}Error codes
Failures answer { success: false, error: { code, message, request_id } }. Each code has its own page.