---
title: "Stop a run and refund unused credits"
method: POST
path: "/verification/batches/{id}/cancel"
tags: ["Verification"]
---

# Stop a run and refund unused credits

`POST /verification/batches/{id}/cancel`

## Request

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

Stops a verification run that is still going and returns the credits that were paid for but never used. Addresses already checked keep their results.

Required scope: `verification:write`.

Safe to call more than once. Only the first call stops the run and refunds; later calls return `cancelled: false` with `credits_refunded: 0` rather than an error, so a retry can never refund twice.

Calling this on a run that already finished is not an error — it reports the run's current state.

## Path parameters

- `id` string, required

## Response `200`

Success

## Other responses

- `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)
