# Cancel a feedback entry

`POST https://api.cream-ai.de/api/v1/films/{id}/feedback/{feedback_id}/cancel`

Cancels a feedback entry. A queued entry is removed from the queue. An entry being applied is stopped like „Stop“ in the mint chat: the scene gets its previous version back. Answers `200` with the entry (`status: discarded`, `failure.code: cancelled_via_api`). `409 feedback_busy` (with `Retry-After`): the entry is being handed over or the change is being written right now; retry shortly. `409 feedback_not_cancellable`: the entry is already `applied`, `failed` or `discarded`.

Scopes: `feedback:write`

## Parameters

- `id` (path, required): Id of the film (id from POST /films or GET /films).
- `feedback_id` (path, required): Id of the feedback entry (id from the feedback object).
- `Idempotency-Key` (header, required): Unique key of this write request (1–128 visible ASCII characters, e.g. a UUID). Retries with the same key return the stored response.

## Returns

- 200: The cancelled entry.

## Errors

- 400: Invalid request (invalid_request, invalid_json, invalid_cursor, idempotency_key_required, invalid_idempotency_key, parent_not_found, max_depth_exceeded, narration_too_long, user_not_in_company, template_not_found, category_not_found, feedback_kind_unsupported, upload_not_found).
- 401: Missing, malformed, revoked or expired API key (unauthorized).
- 403: Not allowed (forbidden_scope, ip_not_allowed, company_inactive, api_not_enabled).
- 404: Not found (not_found).
- 409: The entry is being handed over or written right now (feedback_busy, with Retry-After), it can no longer be cancelled (feedback_not_cancellable), or a request with this Idempotency-Key is still running (idempotency_in_progress).
- 413: Request body too large (payload_too_large).
- 415: Request body is not JSON (unsupported_media_type).
- 422: Idempotency-Key reused with a different request (idempotency_mismatch).
- 429: Too many requests (rate_limited).
- 500: Internal error (internal). Quote the request id when you contact support.
- 503: Temporarily unavailable (service_unavailable). Retry later (after Retry-After seconds, if sent).

## Example request

```sh
curl -X POST "https://api.cream-ai.de/api/v1/films/k7m2xq9v4t8n1b5r3c6d0wza/feedback/fb_2a7d4c9e1b6f3a8d5c0e7b2f4a9d1c6e/cancel" \
  -H "Authorization: Bearer $MINT_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{}'
```

## Example response (200)

```json
{
  "object": "feedback",
  "id": "fb_2a7d4c9e1b6f3a8d5c0e7b2f4a9d1c6e",
  "batch_id": "fbb_6e1c8a3f5d2b9e4a7c0f1d6b3e8a5c2f",
  "film_id": "k7m2xq9v4t8n1b5r3c6d0wza",
  "scene": 4,
  "at_s": null,
  "scene_offset_s": null,
  "preview_id": "pv_8c1e4a7d2b5f9e3c6a0d1b4e7f2a5c8d",
  "storyboard_version": 1,
  "kind": "text",
  "message": "Please write \"customer groups\" instead of \"target groups\" in the headline.",
  "region": null,
  "point": null,
  "attachments": [],
  "allow_redraw": false,
  "external_ref": "lms-review-8812",
  "status": "discarded",
  "stage": null,
  "queue_reason": null,
  "warnings": [],
  "result": null,
  "failure": {
    "code": "cancelled_via_api",
    "message": "The entry was cancelled through the API.",
    "app_message": null,
    "retry_allowed": false,
    "fixed_price_credits": null
  },
  "sender": {
    "kind": "user",
    "name": "Anna Schmidt",
    "email": "anna.schmidt@example.edu"
  },
  "created_at": "2026-11-10T08:31:02Z",
  "updated_at": "2026-11-10T08:33:40Z"
}
```
