> ## Documentation Index
> Fetch the complete documentation index at: https://help.onlyx.ai/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> You are reading OnlyX Help: the OnlyX Help Center and the OnlyX developer documentation. OnlyX is an AI chatting and CRM platform for OnlyFans agencies. Its AI chatter is called Hugo in the app.
> Pages at the site root (for example /inbox/..., /hugo/..., /billing/...) are Help Center articles for agency owners, admins, chatters and creators who use the app at app.onlyx.ai. Words in bold are the exact button, menu and label names the app shows; keep them exactly as written. When these pages do not answer a question, the person can email support at support@onlyx.ai.
> Pages under /developers are the developer documentation. REST API base URL: https://api.onlyx.ai/v1 (authenticate with `Authorization: Bearer <API key>`; keys start with onx_sk_ and are created in app.onlyx.ai under Settings > API & MCP). MCP server: https://mcp.onlyx.ai/mcp (OAuth, or a Bearer API key). In the API the AI chatter is `ai` on the wire. Money is integer US cents in fields ending in Cents; timestamps are UTC ISO-8601.
> Rules for assistants acting on a user's behalf: discover ids with list calls and never invent them; before any call that reaches a real fan or the live OnlyFans account (sending a message, releasing a chat to the AI, turning AI on for a chat, resolving a hand-off, turning review mode off, changing the welcome message, creating a tracking link) show the user the exact content and get explicit confirmation; send every POST with an Idempotency-Key and reuse it on retry; never resend a message whose delivery status is unconfirmed; never ask a creator for her OnlyFans password or codes - she signs in herself through a connect link and the OnlyX Login app.

# Creators

> A creator is one OnlyFans or Telegram account your workspace manages: its connection status, AI switch, readiness checks and headline stats.

A **creator** is one OnlyFans (or Telegram) account that your workspace manages in OnlyX. Fans, conversations, vault media, the AI persona, the AI content ladder and tracking links all belong to a creator.

`platform` says which kind she is: `onlyfans` or `telegram`. Code that reads it must expect both.

* **OnlyFans creators** can be added and connected through the API: see [Add a creator](/developers/guides/add-a-creator).
* **Telegram creators** are added and connected in the dashboard only, with a managed Telegram account or her own number, never with a link. `GET /v1/creators` lists them, but `POST /v1/creators` adds only OnlyFans creators, and a connect link for a Telegram creator is refused with `409 CREATOR_NOT_CONNECTABLE`. For a Telegram creator, `publicName` and `onlyfans` are always `null`. How they differ for your team is in the Help Center's [Telegram creators](/telegram) section.

## The Creator object

`GET /v1/creators` lists them, oldest first (page with `limit`, up to 100, and `cursor`; a key limited to some creators lists only those). `GET /v1/creators/{creatorId}` returns one (plus readiness checks); an id from another workspace, or one the key may not see, is `404 CREATOR_NOT_FOUND`, exactly like an id that does not exist.

```json Creator theme={"system"}
{
  "id": "cre_5f2d9a1c7b3e4f60a2d1",
  "displayName": "Mia Rose",
  "handle": "miarose",
  "publicName": "Mia",
  "avatarUrl": "https://...",
  "platform": "onlyfans",
  "aiEnabled": true,
  "connection": { "status": "connected", "connected": true },
  "onlyfans": {
    "userId": "412345678",
    "verified": true,
    "subscribePriceCents": 999,
    "postsCount": 812,
    "photosCount": 1540,
    "videosCount": 230
  },
  "stats": {
    "fans": 2841,
    "conversations": 1912,
    "unreadConversations": 14,
    "openHandoffs": 2,
    "revenueCents": 1284350,
    "pendingCents": 96420,
    "revenueKnown": true
  },
  "contentConsentRequired": false,
  "createdAt": "2026-08-02T09:12:44.000Z"
}
```

| Field | Meaning |
| - | - |
| `displayName` | Your team's label for the creator. You set it; OnlyFans never changes it. |
| `handle` | Her OnlyFans username. You can suggest one when you add her; the real username replaces it after she connects. |
| `platform` | `onlyfans` or `telegram`. See above. |
| `publicName` | The display name on her OnlyFans profile. `null` until she connects, and always `null` for a Telegram creator. |
| `avatarUrl` | Her OnlyFans avatar, once connected (`null` before). |
| `aiEnabled` | The master switch for the AI chatter on this creator. See below. |
| `connection.status` | Whether OnlyX has a working OnlyFans session for her. See the table below. |
| `onlyfans` | Her public OnlyFans profile facts. `null` until she has connected once, and always `null` for a Telegram creator. `subscribePriceCents` is `0` for a free page. |
| `stats.fans`, `stats.conversations` | Totals OnlyX holds for her (fans counts active and expired). |
| `stats.unreadConversations` | Conversations with at least one unread fan message (a count of chats, not messages). |
| `stats.openHandoffs` | Conversations the AI handed to your team that are still open. |
| `stats.revenueCents`, `stats.pendingCents` | Her lifetime net earnings read from OnlyFans, and the earnings OnlyFans still holds as pending. |
| `stats.revenueKnown` | `false` when her earnings could not be read from OnlyFans (for example before she has connected); treat revenue as unknown, not zero. |
| `contentConsentRequired` | `true` when OnlyFans is asking her to accept its content consent prompt. While it is `true`, OnlyFans blocks media sends; text still works. She accepts the prompt in OnlyFans. `null` means not checked yet. |

## Connection status

`connection.status` is one of six values. `GET /v1/creators/{creatorId}/connection` returns the detailed view, including what to do next. The dashboard shows the same six states with its own words, which are the ones your team will use:

| Status | Dashboard shows | What it means | What to do |
| - | - | - | - |
| `disconnected` | **Disconnected** | No working OnlyFans session and no sign-in in progress. New creators start here, and so does a creator someone disconnected in the dashboard. | Create a connect link and send it to her, or have your team press **Sign in** in the dashboard. |
| `connecting` | **Signed out** | A sign-in is set up or in progress, or OnlyX is waiting for her to sign in again (for example after OnlyFans signed the account out). | Wait for her to finish. If no connect link is active, create one and send it, or have your team press **Reconnect** in the dashboard. |
| `verification` | **Verification required** | She is signed in, but OnlyFans wants a check on the account before it continues. Sync and AI replies are paused. | Someone on your team presses **Verify on OnlyFans** in [app.onlyx.ai](https://app.onlyx.ai) and completes the check. If OnlyFans wants her face, send her the setup link (or the proxy link) instead: the dashboard's streamed browser has no camera. The API can only report this state. |
| `connected` | **Connected** | Working. Messages sync and the AI can chat. | Nothing. Right after connecting, her history keeps syncing in the background. |
| `not_a_creator` | **Not a creator account** | Someone signed in with an OnlyFans **fan** account, not a creator account. Permanent for this creator. | Delete this creator in the dashboard, add her again, and ask her to sign in with her creator account. |
| `duplicate` | **Already connected** | This OnlyFans account is already connected as another creator in your workspace. Permanent. | Use the creator named in `duplicateOfCreatorId` and delete this copy in the dashboard (**Delete this copy**). |

`connection.connected` is `true` only for `connected`. Build your logic on `status`, not on the boolean.

```mermaid theme={"system"}
stateDiagram-v2
  [*] --> disconnected: creator added
  disconnected --> connecting: a sign-in starts (her link or your team)
  connecting --> connected: sign-in succeeded
  connecting --> not_a_creator: signed in with a fan account
  connecting --> duplicate: account already in this workspace
  connected --> verification: OnlyFans asks for a check
  verification --> connected: check completed
  connected --> connecting: OnlyFans signed the account out
  connected --> disconnected: Disconnect in the dashboard
```

The status does not say how she connected. There are three ways, and only one of them starts from the API:

* **Connect with App**: she signs herself in with the OnlyX Login app on her iPhone, Mac or Windows computer, from the setup link that `POST /v1/creators/{creatorId}/connect-link` returns (the same link as the dashboard's **Copy setup link**).
* **Connect here**: someone on your team signs her in, in a browser streamed into the dashboard. It cannot pass OnlyFans' face check.
* **Connect with proxy**: her phone joins the account's network through the Happ app, your team signs her in from the dashboard, and she finishes the face check on her phone.

The API flow, including the face check, is in [Add a creator](/developers/guides/add-a-creator). The steps your team follows in the dashboard are in the Help Center's [Connecting OnlyFans accounts](/connecting) section, and the pages to send the creator are in [For creators](/for-creators).

### Telegram creators

A Telegram creator's `connection.status` is only ever `connected`, `connecting` (her Telegram session exists but is offline) or `disconnected` (no account connected, or Telegram needs a person). `sync` is always empty, and `message` and `nextStep` are worded for OnlyFans: for a Telegram creator, `send_connect_link` means "connect or reconnect her Telegram account in the dashboard", because a connect link is refused.

## The AI switch: `aiEnabled`

`aiEnabled` turns Hugo, the AI chatter, on or off for everything of this creator at once:

* **Off**: the AI stops answering her fans, sends no follow-ups, and new conversations start with your team (`team`). Your team and the API can still read and send.
* **On**: the AI answers conversations whose status is `ai`, subject to per-chat settings. Turning it on reaches real fans: the AI starts answering every fan waiting in her AI chats, usually within seconds, so confirm with a person first.

Change it with `PATCH /v1/creators/{creatorId}` and `{"aiEnabled": false}` (scope `creators:write`). There is no timer: a paused creator stays paused until someone turns the AI back on. To pause the AI in a single chat instead, see [Conversations](/developers/concepts/conversations).

## Readiness

`GET /v1/creators/{creatorId}` adds a `readiness` block: whether the creator is set up well enough for the AI to chat and sell, and what is missing.

```json theme={"system"}
{
  "readiness": {
    "ready": false,
    "checks": [
      { "key": "connection", "label": "OnlyFans connected", "ok": true, "hint": null },
      { "key": "persona", "label": "Persona", "ok": true, "hint": null },
      { "key": "limits", "label": "Hard limits", "ok": false, "hint": "Add the things she never does." },
      { "key": "fans", "label": "Fans synced", "ok": true, "hint": null },
      { "key": "content", "label": "Content mapped", "ok": false, "hint": "Add a priced level with media to her AI content." }
    ]
  }
}
```

| Check | Passes when |
| - | - |
| `connection` | The creator is `connected`. |
| `persona` | Her AI persona has at least her age and her backstory (`lore`). See [AI persona](/developers/concepts/ai-persona). |
| `limits` | Her persona lists at least one hard limit. |
| `fans` | At least one real fan has synced. |
| `content` | At least one active, priced level in her AI content has media. See [AI content](/developers/concepts/ai-content). |

`label` and `hint` are display text for people (`hint` is `null` when the check passes); branch on `key` and `ok`. More checks may be added, so treat an unknown `key` like any other check. `ready` is `true` only when every check passes.

A Telegram creator gets the same five checks. The two setup steps only Telegram creators have in the dashboard, her Stripe keys on **Payments** and her files on **Media**, are not in this list, and she cannot sell until both are done, so confirm them in the dashboard.

## What you can change through the API

| Change | Endpoint | Scope |
| - | - | - |
| Add a creator | `POST /v1/creators` | `creators:write` |
| Rename, turn the AI on or off | `PATCH /v1/creators/{creatorId}` with `displayName`, `aiEnabled` | `creators:write` |
| Create, read or revoke her connect link | `/v1/creators/{creatorId}/connect-link` | `creators:write` / `creators:read` |
| Persona, content, settings | See the AI guides | `ai:write` |

`connection.status` is never writable: only a real sign-in changes it, and a `PATCH` that sends it (or any field other than `displayName` and `aiEnabled`) is refused with `400 VALIDATION_ERROR`. Deleting and disconnecting a creator are done in the dashboard in v1.

## Related

* [Add a creator](/developers/guides/add-a-creator): connect a new account end to end.
* [Hugo, the AI chatter](/developers/concepts/hugo-ai): what the AI does for a creator.
* [Pull stats](/developers/guides/pull-stats): per-creator and workspace reports.
* Help Center: [Connecting OnlyFans accounts](/connecting), [For creators](/for-creators) and [Telegram creators](/telegram).
