---
title: "Get per-address results"
method: GET
path: "/verification/batches/{id}/results"
tags: ["Verification"]
---

# Get per-address results

`GET /verification/batches/{id}/results`

## Request

- Base URL: `https://warmysender.com/api/v1`
- URL: `https://warmysender.com/api/v1/verification/batches/{id}/results`
- Auth: HTTP bearer

Returns the outcome for each address in a run, optionally filtered to one outcome. Results are available while the run is still going, so you can act on the part that has finished.

Required scope: `verification:read`.

The run summary travels with every page, so polling takes one request rather than two.

Each result carries a plain-English `reason`. Addresses not yet reached read as `pending` or `processing`.

## Path parameters

- `id` string, required

## Query parameters

- `status` 'pending' | 'processing' | 'valid' | 'invalid' | 'risky' | 'unknown' | 'error' | 'cancelled'
- `limit` integer
- `offset` integer

## Response `200`

Success

## Other responses

- `400`: `validation_error` — The `status` filter is not one of the listed outcomes.
- `401`: `unauthorized` — Missing or invalid API key.
- `403`: `verifier_access_required` — This account is on hold, so its verification data cannot be read.; `insufficient_scope` — The API key lacks the scope this endpoint requires.
- `404`: `not_found` — No run with that id in this workspace.
- `429`: `rate_limited` — Too many requests — slow down and retry after the Retry-After delay.
- `503`: `verifier_access_required` — We could not read this account's verification entitlement. This is NOT a refusal — retry shortly rather than treating the account as ineligible.

---

[API](https://skmtc.dev/warmysender/apis/warmysender-public-api.md) · [All operations](https://skmtc.dev/warmysender/apis/warmysender-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/warmysender/apis/warmysender-public-api/revisions/eb5c7f10a1cd?raw)
