curl --request PATCH \
--url https://api.onlyx.ai/v1/creators/{creatorId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"displayName": "Mia Rose (main)"
}
'import requests
url = "https://api.onlyx.ai/v1/creators/{creatorId}"
payload = { "displayName": "Mia Rose (main)" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({displayName: 'Mia Rose (main)'})
};
fetch('https://api.onlyx.ai/v1/creators/{creatorId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"aiEnabled": true,
"avatarUrl": "https://media.example.com/avatars/miarose.jpg",
"connection": {
"connected": true,
"status": "connected"
},
"contentConsentRequired": false,
"createdAt": "2026-03-02T09:15:44.000Z",
"displayName": "Mia Rose",
"handle": "miarose",
"id": "cre_8f2c1a9b0d7e4c3f2a1b",
"onlyfans": {
"photosCount": 1540,
"postsCount": 812,
"subscribePriceCents": 999,
"userId": "412345678",
"verified": true,
"videosCount": 230
},
"platform": "onlyfans",
"publicName": "Mia",
"stats": {
"conversations": 1912,
"fans": 2841,
"openHandoffs": 2,
"pendingCents": 96420,
"revenueCents": 1284350,
"revenueKnown": true,
"unreadConversations": 14
}
}Update a creator
Renames a creator (displayName) or switches her AI chatter on or off (aiEnabled). Send only the fields you want to change; any other field, including the connection status, is refused with 400 VALIDATION_ERROR because it can never be written. Turning aiEnabled on reaches real fans: the AI starts answering every fan who is waiting in her AI chats, usually within seconds, so confirm with a person first. Turning it off stops all AI replies and follow-ups for her.
Scope: requires creators:write.
Rate limit: 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 PATCH \
--url https://api.onlyx.ai/v1/creators/{creatorId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"displayName": "Mia Rose (main)"
}
'import requests
url = "https://api.onlyx.ai/v1/creators/{creatorId}"
payload = { "displayName": "Mia Rose (main)" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({displayName: 'Mia Rose (main)'})
};
fetch('https://api.onlyx.ai/v1/creators/{creatorId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"aiEnabled": true,
"avatarUrl": "https://media.example.com/avatars/miarose.jpg",
"connection": {
"connected": true,
"status": "connected"
},
"contentConsentRequired": false,
"createdAt": "2026-03-02T09:15:44.000Z",
"displayName": "Mia Rose",
"handle": "miarose",
"id": "cre_8f2c1a9b0d7e4c3f2a1b",
"onlyfans": {
"photosCount": 1540,
"postsCount": 812,
"subscribePriceCents": 999,
"userId": "412345678",
"verified": true,
"videosCount": 230
},
"platform": "onlyfans",
"publicName": "Mia",
"stats": {
"conversations": 1912,
"fans": 2841,
"openHandoffs": 2,
"pendingCents": 96420,
"revenueCents": 1284350,
"revenueKnown": true,
"unreadConversations": 14
}
}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
Response
The updated creator.
The creator's master AI switch. false means the AI chatter answers none of her fans.
Her OnlyFans avatar, once connected.
Headline connection state. GET /v1/creators/{creatorId}/connection has the detail.
Show child attributes
Show child attributes
true when OnlyFans is asking her to accept its content-consent prompt; media sends fail until she does it in OnlyFans. null when not known yet.
When the creator was added to OnlyX (ISO-8601 UTC).
Your team's label for the creator. Set by you, never changed by OnlyFans.
Her OnlyFans username, without @. Replaced by the real username once she connects.
The creator id (cre_…).
Profile facts read from OnlyFans. null until she has connected once.
Show child attributes
Show child attributes
Always onlyfans for creators added through the API in v1. telegram is reserved for Telegram creators, which are coming soon, so code that reads this should expect more than one value.
onlyfans, telegram The display name on her OnlyFans profile, once connected.
Headline numbers, cheap to read.
Show child attributes
Show child attributes