API reference/address
Read an address monitor and its last results
GET/api/v1/address/monitors/{monitorId}
- authentication
- Secret API key as a bearer token
- billing
- Free.
The monitor plus results: for every address from the last run, its status, the conditions that fired, what the registers answered, its score and level, and whether the status changed since the previous run; keyed by the address as it was saved, or null until the first run has finished.
The status is the first condition that fired, in this order: invalid (the address no longer stands as written, with the reason), not_in_register (a register claiming complete coverage no longer carries it), terminated_postcode, mail_drop, high_risk. An address that fired none is ok, or unverifiable when the answer stands but no register, postcode directory or company register is installed for its country — which is the honest answer, and is counted apart so you can see how much of a list nobody can check. A monitor that belongs to another account answers 404.
Parameters
| name | in | type | description |
|---|---|---|---|
| monitorIdrequired | path | integer | The monitor's id from the list endpoint. |
Example request
curl https://spaw.co/api/v1/address/monitors/9 \ -H "Authorization: Bearer sk_live_…"
Responses
200The monitor.
{
"success": true,
"data": {
"monitor": {
"id": 9,
"name": "Supplier offices",
"cadence": "monthly",
"address_count": 2,
"country": "GB",
"deliverability": false,
"next_run_at": "2026-10-05T08:00:00+00:00",
"last_run_at": "2026-09-05T08:00:04+00:00",
"last_summary": {
"total": 2,
"ok": 1,
"invalid": 0,
"not_in_register": 1,
"terminated_postcode": 0,
"mail_drop": 0,
"high_risk": 0,
"unverifiable": 0,
"changed": 1,
"newly_flagged": 1,
"credits_used": 2,
"stopped_reason": null
},
"created_at": "2026-08-05T08:00:00+00:00",
"results": {
"221B Baker Street, London, NW1 6XE": {
"status": "not_in_register",
"flags": [
"not_in_register"
],
"reason": null,
"exists": false,
"postcode_status": "live",
"companies_registered": 0,
"is_mail_drop": false,
"risk_score": 20,
"risk_level": "low",
"changed": true
},
"10 Downing Street, London, SW1A 2AA": {
"status": "ok",
"flags": [],
"reason": null,
"exists": true,
"postcode_status": "live",
"companies_registered": 0,
"is_mail_drop": false,
"risk_score": 0,
"risk_level": "low",
"changed": false
}
}
}
}
}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.