---
title: "Cancel a queued or generating article and get its prepaid unit back. Generation stops at its next step. Idempotent: repeating it answers 200 with already_canceled and refunds nothing. A finished or failed article answers 409 and nothing is refunded (a failed article was already refunded)."
method: POST
path: "/articles/{articleId}/cancel"
---

# Cancel a queued or generating article and get its prepaid unit back. Generation stops at its next step. Idempotent: repeating it answers 200 with already_canceled and refunds nothing. A finished or failed article answers 409 and nothing is refunded (a failed article was already refunded).

`POST /articles/{articleId}/cancel`

## Request

- Base URL: `https://app.seomatic.ai/api/v1`
- URL: `https://app.seomatic.ai/api/v1/articles/{articleId}/cancel`
- Auth: HTTP bearer

## Path parameters

- `articleId` string, uuid, required

## Response `200`

{ id, status: "canceled", refunded } (plus already_canceled: true on a repeat, with refunded: false)

## Other responses

- `401`: Missing or invalid API key
- `404`: Article not found (NOT_FOUND)
- `409`: Already settled (ARTICLE_ALREADY_READY or ARTICLE_ALREADY_FAILED); nothing refunded.
- `429`: Rate limited, or too many canceled articles in 24 hours (ARTICLE_CANCEL_LIMIT): the article keeps generating and is delivered as usual.

---

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