---
title: "Cancel a subscription"
method: POST
path: "/v1/subscriptions/{subscriptionId}/cancel"
tags: ["Subscriptions"]
---

# Cancel a subscription

`POST /v1/subscriptions/{subscriptionId}/cancel`

## Path parameters

- `subscriptionId` string, required

## Request body

- CancelSubscriptionRequest
  - `cancelAtPeriodEnd` boolean — If true, the subscription will be canceled at the end of the current billing period instead of immediately. Ignored for INCOMPLETE and SCHEDULED subscriptions, which are always canceled immediately.

## Response `200`

Success

- object — The canceled subscription ID
  - `status` 'SUCCEEDED', required
  - `data` CancelSubscriptionResponse, required
    - `id` string
    - `periodEnd` number — Unix timestamp (ms) of the end of the current billing period, when the subscription will be canceled. Only present when cancelAtPeriodEnd is true and the subscription is not immediately canceled.

## Other responses

- `400` — Bad request
- `401` — Unauthorized

---

[API](https://skmtc.dev/breeze/apis/breeze-api.md) · [All operations](https://skmtc.dev/breeze/apis/breeze-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/breeze/breeze-api/revisions/8911892bdf29/schema)
