---
title: "Cancel Verification"
method: POST
path: "/api/v1/verify/{task_id}/cancel"
tags: ["Verify"]
---

# Cancel Verification

`POST /api/v1/verify/{task_id}/cancel`

## Request

- Base URL: `https://lenz.io`
- URL: `https://lenz.io/api/v1/verify/{task_id}/cancel`
- Auth: HTTP bearer

Stop a verification that has not finished.

A cancelled run is not charged and produces no verification: nothing is
saved. Work already under way when you cancel (a model call in flight) is
not billed to you, and the run itself stops at its next step. A run waiting
on `POST /verify/{task_id}/select` is cancelled too.

The call is safe to repeat and answers 200 whatever the state, so a client
that gives up never has to handle an error for losing a race:

- `cancelled: true`, `status: "cancelled"`: the run is cancelled, by this
  call or an earlier one.
- `cancelled: false`, `status: "completed"`: it finished first. The
  verification exists and was charged as usual.
- `cancelled: false`, `status: "failed"`: it had already failed.

`GET /verify/status/{task_id}` answers `cancelled` from then on, and a
`webhook_url` receives `verification.cancelled` (a `2026-05-13` submission
receives `verification.failed` with `failure_class: "cancelled"`).

Another account's task, an unknown one, and a web task answer 404. A task
that is a `/review`'s deep check answers 409 `use_review_cancel`: cancel
the review (`POST /reviews/{review_id}/cancel`), which cancels everything in
it.

**Versions.** 200: `2026-10-11` receives `CancelOut`, `2026-05-13` receives `CancelOutLegacy`; default: `2026-10-11` receives `ErrorOut`, `2026-05-13` receives `ErrorOutLegacy`.

## Path parameters

- `task_id` string, required

## Headers

- `X-Lenz-API-Version` string

## Response `200`

OK

- CancelOut: Body of ``POST /verify/{task_id}/cancel``. ``cancelled`` is true when the run is cancelled after this call, whether this call stopped it or an earlier one did (a repeat is safe). A run that had already finished is not touched: ``cancelled`` is false and ``status`` says how it ended (``completed``: the verification was saved and charged as usual). ``status`` is the same word ``GET /verify/status/{task_id}`` answers at that moment (version ``2026-05-13`` reads a cancelled run as ``failed``, with ``cancelled: true``). A cancelled run is not charged and has no verification; model work already under way when it stopped is not billed to you. The run itself stops at its next step.
  - `task_id` string, required
  - `cancelled` boolean, required
  - `status` 'processing' | 'needs_input' | 'completed' | 'failed' | 'cancelled', required

## Other responses

- `default`: An error

---

[API](https://skmtc.dev/lenz/apis/lenz-ai-fact-checking-api.md) · [All operations](https://skmtc.dev/lenz/apis/lenz-ai-fact-checking-api/llms.txt) · [OpenAPI document](https://skmtc.dev/lenz/apis/lenz-ai-fact-checking-api/revisions/6150947324bf?raw)
