---
title: "Reactivate a cancelled checkout-link subscription"
method: POST
path: "/creators/{creatorUserUuid}/checkout-links/subscriptions/{uuid}/uncancel"
---

# Reactivate a cancelled checkout-link subscription

`POST /creators/{creatorUserUuid}/checkout-links/subscriptions/{uuid}/uncancel`

## Request

- Base URL: `https://api.fanvue.com`
- URL: `https://api.fanvue.com/creators/{creatorUserUuid}/checkout-links/subscriptions/{uuid}/uncancel`
- Auth: OAuth 2
  - Authorization code: `https://auth.fanvue.com/oauth2/auth`
  - Token URL: `https://auth.fanvue.com/oauth2/token` scopes: `write:creator`

Reverse a pending cancel-at-period-end while the paid period is still running, so the subscription renews again at `expiresAt`. Emits the `checkout_link.subscription.cancel_at_period_end_changed` webhook with `cancel_at_period_end: false`. Returns 400 if the subscription is not set to cancel or has already ended (an ended subscription cannot be revived), and 404 if it does not exist or does not belong to this creator.

Only cancellations the creator made themselves (`cancelledBy: creator`) can be reversed here. If the subscriber cancelled — or Fanvue support did, or the cancellation is older than actor tracking and carries `cancelledBy: null` — the endpoint returns 409 and the cancellation stands: only the subscriber can restart their own subscription, by purchasing again.

## Path parameters

- `creatorUserUuid` string, uuid, required
- `uuid` string, uuid, required: Fanvue subscription identifier.

## Headers

- `X-Fanvue-API-Version` string, required

## Response `200`

Subscription renewing again

- object
  - `uuid` string, required: Fanvue's unique subscription identifier.
  - `status` 'active' | 'expired', required: Access state of the subscription, matching the `checkout_link.subscription.*` webhooks: `active` means the fan currently has access (including subscriptions scheduled to cancel at the period end — check `cancelAtPeriodEnd`), `expired` means access has ended. Revoke access only on `expired`.
  - `cancelAtPeriodEnd` boolean, required: True when the subscription is set to end (not renew) at its period end.
  - `expiresAt` string, date-time, required: End of the current paid period: when access ends, or the next renewal date.

## Other responses

- `400`: Bad Request - API version not supported OR validation failed OR invalid UUID
- `401`: Unauthorized Response
- `403`: Unauthorized Response
- `404`: Not Found Response
- `409`: The cancellation was made by the subscriber (or Fanvue support), or predates actor tracking, so the creator cannot reverse it
- `410`: API version no longer supported (sunset)
- `429`: Too many requests - rate limit exceeded

## Changes

- **2026-08-30** `dce5621fe589`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/fanvue/apis/fanvue-api/changes/creators/:creatorUserUuid/checkout-links/subscriptions/:uuid/uncancel/post.md)

---

[API](https://skmtc.dev/fanvue/apis/fanvue-api.md) - [All operations](https://skmtc.dev/fanvue/apis/fanvue-api/llms.txt) - [OpenAPI document](https://skmtc.dev/fanvue/apis/fanvue-api/revisions/966260af2770?raw)
