- 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. 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_…"Responses
200The job.
{
"success": true,
"data": {
"job": {
"id": 512,
"status": "completed",
"total": 2,
"duplicate_count": 0,
"processed": 2,
"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.
{
"message": "Not Found"
}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.