API reference/phone

Reported SMS outcomes

GET/api/v1/phone/feedback/summary

authentication
Secret API key as a bearer token
billing
Free.

The last 90 days of outcomes you reported: totals per outcome, how many distinct numbers they cover, and the ten blocks (region plus the first six digits of the national number) with the most failed deliveries, with their delivered and abused counts alongside. A bad list or a wholesaler's range shows up here first.

Example request

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

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

Responses

200The summary.

{
    "success": true,
    "data": {
        "window_days": 90,
        "total": 3120,
        "numbers": 2870,
        "outcomes": {
            "delivered": 2988,
            "undelivered": 121,
            "abused": 11
        },
        "top_undelivered_blocks": [
            {
                "country": "US",
                "block": "201201",
                "undelivered": 38,
                "delivered": 2,
                "abused": 4
            },
            {
                "country": "GB",
                "block": "770090",
                "undelivered": 12,
                "delivered": 0,
                "abused": 0
            }
        ]
    }
}

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