---
title: "Record Cancel Reason"
method: POST
path: "/api/cancel/reason"
tags: ["cancel"]
---

# Record Cancel Reason

`POST /api/cancel/reason`

## Request

- Base URL: `https://api.equity-rank.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.equity-rank.com/api/cancel/reason`
- Auth: HTTP bearer

Step 1 of cancel flow: record reason, cancel at period end via Stripe,
and log outcome in cancellation_reasons.
Called by CancelPage.tsx handleCancel() for users who proceed to cancel
(switching/other paths, missing_feature direct cancel, or users who bypass save offers).

## Request body

- CancelReasonRequest
  - `reason` string, required
  - `outcome` string
  - `feature_request` string, nullable
  - `price_point` string, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

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