curl --request PUT \
--url https://api.onlyx.ai/v1/creators/{creatorId}/welcome-message \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data @- <<EOF
{
"text": "hey you 😘 thanks for subscribing! here's a little something"
}
EOFimport requests
url = "https://api.onlyx.ai/v1/creators/{creatorId}/welcome-message"
payload = { "text": "hey you 😘 thanks for subscribing! here's a little something" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({text: 'hey you 😘 thanks for subscribing! here\'s a little something'})
};
fetch('https://api.onlyx.ai/v1/creators/{creatorId}/welcome-message', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));Replace the welcome message
Replaces the welcome message on her live OnlyFans account. This rewrites what every NEW subscriber receives and pays from now on, so confirm the exact text, media and price with a person first. The change is applied on OnlyFans in the background: the answer is 202 and GET …/welcome-message shows pending until it is done, then lastUpdate. Send dryRun: true to check a change on OnlyFans without saving it. One change runs at a time per creator (409 CONFLICT while another is applied), at most 5 per hour (dry runs included), and a creator who is not connected is 409 CREATOR_NOT_CONNECTED.
Scope: requires ai:write.
Rate limits: 5 changes per hour per creator, across all credentials — on top of the general limit of 120 requests per 60 seconds per credential.
Idempotency: send an Idempotency-Key header to make retries safe: a replay within 24 hours returns the original response with Idempotent-Replayed: true.
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 PUT \
--url https://api.onlyx.ai/v1/creators/{creatorId}/welcome-message \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data @- <<EOF
{
"text": "hey you 😘 thanks for subscribing! here's a little something"
}
EOFimport requests
url = "https://api.onlyx.ai/v1/creators/{creatorId}/welcome-message"
payload = { "text": "hey you 😘 thanks for subscribing! here's a little something" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({text: 'hey you 😘 thanks for subscribing! here\'s a little something'})
};
fetch('https://api.onlyx.ai/v1/creators/{creatorId}/welcome-message', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));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
Optional. A unique value (8 to 64 letters, digits, - or _; a UUID is ideal) that makes a retry safe: the same key with the same request within 24 hours returns the stored response, with Idempotent-Replayed: true, instead of doing the work twice. The same key with a different request is 409 IDEMPOTENCY_KEY_REUSED; while the first request still runs it is 409 IDEMPOTENCY_IN_PROGRESS. A malformed key is 400 VALIDATION_ERROR.
8 - 64^[A-Za-z0-9_-]{8,64}$Path Parameters
The creator id (cre_…).
Body
Replaces the whole welcome message.
The message text, up to 2,000 characters.
2000true checks the change on OnlyFans without saving it. Nothing changes for fans.
Switch the welcome message on or off. Leave it out to keep the current switch.
Up to 20 vault ids locked behind priceCents.
20^\d{1,25}$Up to 20 vault ids sent free.
20^\d{1,25}$0 to 1000000 cents. A price above 0 needs paidMediaIds.
0 <= x <= 1000000Response
Accepted: the change is queued and will be applied on OnlyFans shortly.