---
title: "Create a checkout link for a creator"
method: POST
path: "/creators/{creatorUserUuid}/checkout-links"
---

# Create a checkout link for a creator

`POST /creators/{creatorUserUuid}/checkout-links`

Create a shareable checkout link on behalf of the specified creator, selling either an existing product price (`existing_price`), a new price on an existing product (`existing_product`), or a brand-new product (`new_product`).

All amounts are integer minor units of the currency (e.g. cents: 1999 = $19.99); the Fanvue dashboard displays the same prices in major units. Requires checkout links to be enabled for the creator.

## Path parameters

- `creatorUserUuid` string, uuid, required

## Headers

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

## Request body

- object
  - `description` string — Internal note shown only in the creator dashboard. Fans never see it.
  - `redirectUrl` string, uri — URL fans are redirected to after a successful purchase.
  - `source` union, required — What the link sells: an existing price (`existing_price`), a new price on an existing product (`existing_product`), or a brand-new product (`new_product`).
    - object
      - `kind` 'existing_price', required — Sell an existing product price through the new link.
      - `productPriceUuid` string, uuid, required — UUID of the existing product price to sell.
    - object
      - `kind` 'existing_product', required — Mint a new price on an existing product and sell it through the new link.
      - `productUuid` string, uuid, required — UUID of the existing product to price.
      - `price` object, required
        - `amount` integer, required — Price in integer minor units of the currency (e.g. cents: 1999 = $19.99). 0 creates a free link; paid links must be between 300 and 250000 minor units ($3-$2500). Note: the Fanvue dashboard displays prices in major units; this API always uses integer minor units.
        - `currency` string — 3-letter uppercase ISO-4217 currency code. Defaults to USD.
        - `isRecurring` boolean, required — Whether purchases bill on a recurring cycle (subscription) or once. Recurring prices require a non-zero amount plus cycleLength and cycleUnit.
        - `cycleLength` integer — Billing cycle length. Required (with cycleUnit) when isRecurring is true.
        - `cycleUnit` 'day' | 'week' | 'month' | 'year' — Billing cycle unit. Required (with cycleLength) when isRecurring is true.
    - object
      - `kind` 'new_product', required — Create a brand-new product with a price and sell it through the new link.
      - `product` object, required
        - `name` string, required — Product name. Must be unique (case-insensitive) among the creator's products.
        - `description` string — Optional product description.
      - `price` object, required
        - `amount` integer, required — Price in integer minor units of the currency (e.g. cents: 1999 = $19.99). 0 creates a free link; paid links must be between 300 and 250000 minor units ($3-$2500). Note: the Fanvue dashboard displays prices in major units; this API always uses integer minor units.
        - `currency` string — 3-letter uppercase ISO-4217 currency code. Defaults to USD.
        - `isRecurring` boolean, required — Whether purchases bill on a recurring cycle (subscription) or once. Recurring prices require a non-zero amount plus cycleLength and cycleUnit.
        - `cycleLength` integer — Billing cycle length. Required (with cycleUnit) when isRecurring is true.
        - `cycleUnit` 'day' | 'week' | 'month' | 'year' — Billing cycle unit. Required (with cycleLength) when isRecurring is true.

## Response `201`

Checkout link created successfully

- object
  - `uuid` string, uuid, required — Checkout link UUID
  - `name` string, required — Creator-internal label for the link (derived from the product name)
  - `description` string, nullable, required — Creator-internal note (null when unset). Fans never see it.
  - `url` string, nullable, required — Shareable checkout URL fans use to purchase
  - `price` integer, required — Price in integer minor units of the currency (e.g. cents). 0 for free links.
  - `currency` string, required — ISO-4217 currency code of the price
  - `isRecurring` boolean, required — Whether purchases create a recurring subscription
  - `cycleLength` integer, nullable, required — Billing cycle length (null for one-off prices)
  - `cycleUnit` 'day' | 'week' | 'month' | 'year', nullable, required — Billing cycle unit (null for one-off prices)
  - `productUuid` string, uuid, nullable, required — UUID of the product the link sells
  - `productPriceUuid` string, uuid, nullable, required — UUID of the product price the link sells
  - `status` 'active' | 'disabled', required — active links can be purchased; disabled links reject checkout until re-enabled
  - `createdAt` string, date-time, required — When the link was created

## 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
- `410` — API version no longer supported (sunset)
- `429` — Too many requests - rate limit exceeded

---

[API](https://skmtc.net/fanvue/apis/fanvue-api.md) · [All operations](https://skmtc.net/fanvue/apis/fanvue-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/fanvue/fanvue-api/revisions/c5ddcd5c7e72/schema)
