API reference/address

List the account's address monitors

GET/api/v1/address/monitors

authentication
Secret API key as a bearer token
billing
Free.

The saved address lists this account re-checks on a schedule, newest first, 100 per page. Each monitor carries the summary of its last run: how many addresses were ok, how many fired each of the five conditions, how many were unverifiable (valid, but no dataset installed for the country could say anything about the place), how many changed status, how many newly became flagged, the credits the run spent, and whether it stopped for lack of credits. The addresses and their statuses are on the single-monitor endpoint.

Parameters

name in type description
pagequeryintegerThe page to return. Default: 1.

Example request

curl https://spaw.co/api/v1/address/monitors \
  -H "Authorization: Bearer sk_live_…"
const response = await fetch('https://spaw.co/api/v1/address/monitors', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer sk_live_…',
  },
});
const result = await response.json();
import requests

response = requests.get(
    'https://spaw.co/api/v1/address/monitors',
    headers={'Authorization': 'Bearer sk_live_…'},
)
result = response.json()
$ch = curl_init('https://spaw.co/api/v1/address/monitors');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ['Authorization: Bearer sk_live_…'],
]);
$result = json_decode(curl_exec($ch), true);

Responses

200One page of monitors.

{
    "success": true,
    "data": {
        "monitors": [
            {
                "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"
            }
        ]
    },
    "meta": {
        "page": 1,
        "per_page": 100,
        "total": 1
    }
}

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"
    }
}

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.

markdown version·openapi.json