API reference/monitors

List the account's monitors

GET/api/v1/email/monitors

authentication
Secret API key as a bearer token
billing
Free.

The saved lists this account re-verifies on a schedule, newest first, 100 per page. Each monitor carries the summary of its last run: the verdict counts, how many addresses decayed (deliverable last time, not any more), the credits the run spent, and whether it stopped for lack of credits. The addresses and their verdicts 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/email/monitors \
  -H "Authorization: Bearer sk_live_…"
const response = await fetch('https://spaw.co/api/v1/email/monitors', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer sk_live_…',
  },
});
const result = await response.json();
import requests

response = requests.get(
    'https://spaw.co/api/v1/email/monitors',
    headers={'Authorization': 'Bearer sk_live_…'},
)
result = response.json()
$ch = curl_init('https://spaw.co/api/v1/email/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": 41,
                "name": "Newsletter list",
                "cadence": "weekly",
                "email_count": 2,
                "next_run_at": "2026-09-10T08:00:00+00:00",
                "last_run_at": "2026-09-03T08:00:12+00:00",
                "last_summary": {
                    "deliverable": 1,
                    "risky": 1,
                    "undeliverable": 0,
                    "decayed": 0,
                    "credits_used": 2,
                    "stopped_reason": null
                },
                "created_at": "2026-08-27T08: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