curl --request POST \
--url https://api.fanvue.com/creators/{creatorUserUuid}/checkout-links \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Fanvue-API-Version: <x-fanvue-api-version>' \
--data '
{
"source": {
"kind": "existing_price",
"productPriceUuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
}
'import requests
url = "https://api.fanvue.com/creators/{creatorUserUuid}/checkout-links"
payload = { "source": {
"kind": "existing_price",
"productPriceUuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
} }
headers = {
"X-Fanvue-API-Version": "<x-fanvue-api-version>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Fanvue-API-Version': '<x-fanvue-api-version>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
source: {
kind: 'existing_price',
productPriceUuid: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
}
})
};
fetch('https://api.fanvue.com/creators/{creatorUserUuid}/checkout-links', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"uuid": "b3c4d5e6-7f8a-4b9c-8d0e-1f2a3b4c5d6e",
"name": "Coaching call",
"description": "Instagram bio link",
"url": "https://www.fanvue.com/checkout/fvcl_4WqZz1kXo9DdPp2sT7yRfM",
"price": 1999,
"currency": "USD",
"isRecurring": false,
"cycleLength": null,
"cycleUnit": null,
"productUuid": "c4d5e6f7-8a9b-4c0d-9e1f-2a3b4c5d6e7f",
"productPriceUuid": "d5e6f7a8-9b0c-4d1e-af2a-3b4c5d6e7f8a",
"taxBehavior": "exclusive",
"displayCurrency": "localised",
"status": "active",
"createdAt": "2024-01-15T00:00:00.000Z"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"message": "<string>"
}{
"error": "<string>",
"message": "<string>",
"nextVersion": "<string>"
}{
"error": "<string>"
}Create a checkout link for a creator
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.
curl --request POST \
--url https://api.fanvue.com/creators/{creatorUserUuid}/checkout-links \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Fanvue-API-Version: <x-fanvue-api-version>' \
--data '
{
"source": {
"kind": "existing_price",
"productPriceUuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
}
'import requests
url = "https://api.fanvue.com/creators/{creatorUserUuid}/checkout-links"
payload = { "source": {
"kind": "existing_price",
"productPriceUuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
} }
headers = {
"X-Fanvue-API-Version": "<x-fanvue-api-version>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Fanvue-API-Version': '<x-fanvue-api-version>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
source: {
kind: 'existing_price',
productPriceUuid: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
}
})
};
fetch('https://api.fanvue.com/creators/{creatorUserUuid}/checkout-links', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"uuid": "b3c4d5e6-7f8a-4b9c-8d0e-1f2a3b4c5d6e",
"name": "Coaching call",
"description": "Instagram bio link",
"url": "https://www.fanvue.com/checkout/fvcl_4WqZz1kXo9DdPp2sT7yRfM",
"price": 1999,
"currency": "USD",
"isRecurring": false,
"cycleLength": null,
"cycleUnit": null,
"productUuid": "c4d5e6f7-8a9b-4c0d-9e1f-2a3b4c5d6e7f",
"productPriceUuid": "d5e6f7a8-9b0c-4d1e-af2a-3b4c5d6e7f8a",
"taxBehavior": "exclusive",
"displayCurrency": "localised",
"status": "active",
"createdAt": "2024-01-15T00:00:00.000Z"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"message": "<string>"
}{
"error": "<string>",
"message": "<string>",
"nextVersion": "<string>"
}{
"error": "<string>"
}write:creator— Modify creator profiles, settings, and creator-specific data.
Authorizations
OAuth 2.0 access token, presented as a JWT bearer token in the Authorization header. Obtain a token via the authorization-code flow; the scopes granted to the token determine which operations it may call.
- Authorization URL
- https://auth.fanvue.com/oauth2/auth
- Token URL
- https://auth.fanvue.com/oauth2/token
- Refresh URL
- https://auth.fanvue.com/oauth2/token
Headers
API version to use for the request
"2025-06-26"
Path Parameters
Body
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).
- Option 1
- Option 2
- Option 3
Show child attributes
Show child attributes
Internal note shown only in the creator dashboard. Fans never see it.
500URL fans are redirected to after a successful purchase.
Response
Checkout link created successfully
Checkout link UUID
Creator-internal label for the link (derived from the product name)
Creator-internal note (null when unset). Fans never see it.
Shareable checkout URL fans use to purchase
Price in integer minor units of the currency (e.g. cents). 0 for free links.
ISO-4217 currency code of the price
Whether purchases create a recurring subscription
Billing cycle length (null for one-off prices)
Billing cycle unit (null for one-off prices)
day, week, month, year UUID of the product the link sells
UUID of the product price the link sells
Tax basis stamped on the price when it was created. exclusive: the fan pays the price plus tax. inclusive: the price is what the fan pays, tax carved out of it.
exclusive, inclusive Currency the checkout page shows the fan. localised: the fan's local currency where a rate exists. usd: always USD.
localised, usd active links can be purchased; disabled links reject checkout until re-enabled
active, disabled When the link was created
Was this page helpful?