---
title: "Accept the save offer the matrix surfaced for the reason"
method: POST
path: "/api/cancellation/offer/accept"
tags: ["Cancellation"]
---

# Accept the save offer the matrix surfaced for the reason

`POST /api/cancellation/offer/accept`

## Request

- Base URL: `https://api.setluca.com`
- URL: `https://api.setluca.com/api/cancellation/offer/accept`
- Auth: API key in cookie `luca.session_token`

Applies the accepted save: a discount coupon, a pause, a downgrade, or extra trial days. It claims the save cap before the Stripe action, so concurrent requests cannot redeem different offers for the same identity.

**Session-only.** This endpoint isn't on the API-key allowlist. An organization API key gets a 403 here, whatever scopes it holds.

## Headers

- `Luca-API-Version` '1'

## Request body

- CancellationOfferAcceptRequest
  - `flowSessionId` string, uuid, required
  - `offer` 'discount' | 'discount_once' | 'pause_1m' | 'pause_2m' | 'downgrade' | 'trial_extension', required

## Response `200`

ok

- OkResponse
  - `ok` true, required

## Other responses

- `401`: unauthorized
- `404`: not found
- `409`: conflict
- `429`: rate limited
- `500`: internal error
- `503`: service unavailable

---

[API](https://skmtc.dev/setluca/apis/luca-api.md) · [All operations](https://skmtc.dev/setluca/apis/luca-api/llms.txt) · [OpenAPI document](https://skmtc.dev/setluca/apis/luca-api/revisions/90a200e4100b?raw)
