curl --request POST \
--url https://api.onlyx.ai/v1/creators/{creatorId}/tracking-links \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"kind": "tracking",
"name": "Reddit October"
}
'import requests
url = "https://api.onlyx.ai/v1/creators/{creatorId}/tracking-links"
payload = {
"kind": "tracking",
"name": "Reddit October"
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({kind: 'tracking', name: 'Reddit October'})
};
fetch('https://api.onlyx.ai/v1/creators/{creatorId}/tracking-links', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"creationId": "Xq3Lk9vB2mT7cR1eY6wN0pA4sD8fGhJuZiOl5nWxVb2Qe7TyUr",
"state": "creating"
}Create a tracking link
Creates a REAL tracking or free-trial link on the creator’s live OnlyFans account; it cannot be deleted through the API, so confirm the name (and, for a trial, the length, claim limit and expiry) with a person first. An Idempotency-Key header is required, and a retry with the same key never creates a second link. Creation runs in the background: the answer is 202 with an opaque creationId; poll GET …/tracking-links/creations/{creationId} every 5 seconds or more until completed or failed. The creator must be connected (409 CREATOR_NOT_CONNECTED otherwise). Quotas: 5 per day per creator and 10 per hour per workspace (429 RATE_LIMITED). OnlyFans refuses free-trial links on a page whose subscription is free.
Scope: requires links:write.
Rate limits: 5 links per 24 hours per creator, across all credentials; 10 links per hour per workspace — on top of the general limit of 120 requests per 60 seconds per credential.
Idempotency: an Idempotency-Key header is required. Retry a failed or timed-out request with the same key: a replay returns the original response with Idempotent-Replayed: true, and nothing is done twice.
Reaches fans: this operation can reach a real fan or change the live OnlyFans account. Confirm it with a person before calling it on their behalf.
curl --request POST \
--url https://api.onlyx.ai/v1/creators/{creatorId}/tracking-links \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"kind": "tracking",
"name": "Reddit October"
}
'import requests
url = "https://api.onlyx.ai/v1/creators/{creatorId}/tracking-links"
payload = {
"kind": "tracking",
"name": "Reddit October"
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({kind: 'tracking', name: 'Reddit October'})
};
fetch('https://api.onlyx.ai/v1/creators/{creatorId}/tracking-links', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"creationId": "Xq3Lk9vB2mT7cR1eY6wN0pA4sD8fGhJuZiOl5nWxVb2Qe7TyUr",
"state": "creating"
}Authorizations
An API key (onx_sk_…) created in OnlyX under Settings → API & MCP, or an OAuth access token (onx_at_…) issued to a connected app. Send it as Authorization: Bearer <credential>. API keys may also be sent as X-API-Key: <key>.
Headers
Required. A new unique value per new request (8 to 64 letters, digits, - or _; a UUID is ideal). If the request times out or fails with a 5xx, retry with the SAME key: you get the original response (with Idempotent-Replayed: true) and nothing is done twice. Keys are kept for 24 hours. Without it the answer is 400 IDEMPOTENCY_KEY_REQUIRED.
8 - 64^[A-Za-z0-9_-]{8,64}$Path Parameters
The creator id (cre_…).
Body
tracking or trial.
tracking, trial The name, 1 to 100 characters, as it will appear on OnlyFans.
1 - 100Trial links only: the most trials it may give, 1 to 100000.
1 <= x <= 100000Trial links only: when the link stops working (ISO-8601, in the future).
Trial links only: free-trial length, 1 to 365 days.
1 <= x <= 365