> ## 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.

# OnlyX Developers

> Run your OnlyFans agency from code or from your AI assistant: creators, inbox, sending, fans, stats, and the AI chatter's persona and content.

OnlyX is the AI chatting and CRM platform for OnlyFans agencies. Its AI chatter, **Hugo**, answers fans in each creator's voice, sells her content, and hands conversations to your team when a human should step in.

The OnlyX API and the OnlyX MCP server give you the same control you have in [app.onlyx.ai](https://app.onlyx.ai), from your own code or from an AI assistant such as Claude, ChatGPT or Cursor.

<CardGroup cols={2}>
  <Card title="Quickstart" icon="rocket" href="/developers/quickstart">
    Create a key and make your first five calls in about five minutes.
  </Card>

  <Card title="Connect your AI assistant" icon="plug" href="/developers/mcp/overview">
    Add OnlyX to Claude, ChatGPT, Cursor or VS Code in one click. No code.
  </Card>
</CardGroup>

## What you can do

<CardGroup cols={2}>
  <Card title="Add a creator" icon="user-plus" href="/developers/guides/add-a-creator">
    Add a creator and send her a connect link. She signs in to OnlyFans herself, including face verification.
  </Card>

  <Card title="Read and send messages" icon="message-square" href="/developers/guides/read-and-send-messages">
    Read any chat, send text, vault media and paid messages, and track delivery.
  </Card>

  <Card title="Handle hand-offs" icon="life-buoy" href="/developers/guides/handoffs">
    See the chats the AI handed to your team, and resolve them.
  </Card>

  <Card title="Work with fans" icon="users" href="/developers/guides/fans">
    Find whales, lapsing subscribers and recent buyers; add notes and custom names.
  </Card>

  <Card title="Use vault media" icon="image" href="/developers/guides/vault-media">
    Browse each creator's vault and use media ids in messages and content levels.
  </Card>

  <Card title="Pull stats" icon="chart-line" href="/developers/guides/pull-stats">
    Today's numbers, revenue by day and by seller, audience, and the transaction ledger.
  </Card>

  <Card title="Set up the AI persona" icon="id-card" href="/developers/guides/ai-persona">
    Tell the AI who the creator is, how she writes, and what she will never do.
  </Card>

  <Card title="Build the AI content ladder" icon="layers" href="/developers/guides/ai-content">
    Organize vault media into priced levels the AI offers in order.
  </Card>

  <Card title="Tune AI settings" icon="sliders-horizontal" href="/developers/guides/ai-settings">
    Follow-ups, review mode, and the OnlyFans welcome message.
  </Card>

  <Card title="Track promotion links" icon="link" href="/developers/guides/tracking-links">
    List tracking links with clicks, subscribers, cost and ROI, and create new ones.
  </Card>

  <Card title="Use OnlyX from Claude" icon="bot" href="/developers/guides/using-with-claude">
    Ready-made recipes: daily briefing, safe replies to unread fans, onboarding, weekly report.
  </Card>

  <Card title="Handle errors and limits" icon="triangle-alert" href="/developers/errors">
    Every error code, what to retry, rate limits, pagination and idempotency.
  </Card>
</CardGroup>

## The basics

| | |
| - | - |
| **Base URL** | `https://api.onlyx.ai/v1` |
| **Authentication** | `Authorization: Bearer onx_sk_...` (an API key) or an OAuth access token. See [Authentication](/developers/authentication). |
| **Format** | JSON over HTTPS, UTF-8, `camelCase` field names |
| **Money** | Integer US cents in fields that end in `Cents` (`1999` is \$19.99) |
| **Time** | ISO-8601 UTC timestamps, for example `2026-09-26T14:05:00.000Z`. Reports use your workspace's timezone for days. |
| **Lists** | `{"data": [...], "hasMore": true, "nextCursor": "..."}`. See [Pagination](/developers/pagination). |
| **Errors** | `{"error": {"code", "message", "requestId"}}`. See [Errors](/developers/errors). |
| **MCP server** | `https://mcp.onlyx.ai/mcp`. See [MCP overview](/developers/mcp/overview). |
| **OpenAPI schema** | `https://api.onlyx.ai/v1/openapi.json` (no key needed) |

Keys belong to your **workspace**, not to a person. Only workspace owners and admins can create them, in **Settings → API & MCP** at [app.onlyx.ai](https://app.onlyx.ai/settings?tab=developer).

## A 60-second example

List your creators, then the unread conversations of the first one.

<CodeGroup>
  ```bash cURL theme={"system"}
  export ONLYX_API_KEY="onx_sk_..."   # from Settings → API & MCP

  curl https://api.onlyx.ai/v1/creators \
    -H "Authorization: Bearer $ONLYX_API_KEY"

  curl "https://api.onlyx.ai/v1/conversations?creatorId=cre_5f2d9a1c7b3e4f60a2d1&unread=true&limit=10" \
    -H "Authorization: Bearer $ONLYX_API_KEY"
  ```

  ```python Python theme={"system"}
  import os
  import requests

  API = "https://api.onlyx.ai/v1"
  HEADERS = {"Authorization": f"Bearer {os.environ['ONLYX_API_KEY']}"}

  creators = requests.get(f"{API}/creators", headers=HEADERS, timeout=30).json()["data"]
  first = creators[0]
  print("Creator:", first["displayName"], first["connection"]["status"])

  chats = requests.get(
      f"{API}/conversations",
      headers=HEADERS,
      params={"creatorId": first["id"], "unread": "true", "limit": 10},
      timeout=30,
  ).json()["data"]
  for chat in chats:
      last = chat["lastMessage"]["text"] if chat["lastMessage"] else ""
      print(chat["fan"]["displayName"], chat["status"], chat["unreadCount"], last[:60])
  ```

  ```javascript JavaScript theme={"system"}
  const API = "https://api.onlyx.ai/v1";
  const headers = { Authorization: `Bearer ${process.env.ONLYX_API_KEY}` };

  const creators = (await (await fetch(`${API}/creators`, { headers })).json()).data;
  const first = creators[0];
  console.log("Creator:", first.displayName, first.connection.status);

  const params = new URLSearchParams({ creatorId: first.id, unread: "true", limit: "10" });
  const chats = (await (await fetch(`${API}/conversations?${params}`, { headers })).json()).data;
  for (const chat of chats) {
    console.log(chat.fan.displayName, chat.status, chat.unreadCount, chat.lastMessage?.text?.slice(0, 60) ?? "");
  }
  ```
</CodeGroup>

```json Response (GET /v1/conversations, shortened) theme={"system"}
{
  "data": [
    {
      "id": "cnv_9f2c41d7a8b35e06c1f4",
      "creatorId": "cre_5f2d9a1c7b3e4f60a2d1",
      "fan": {
        "id": "fan_3b7e9d2a1c5f48e06b92",
        "displayName": "Jake",
        "username": "jake_91",
        "avatarUrl": "https://..."
      },
      "status": "ai",
      "unreadCount": 2,
      "lastMessage": { "text": "are you online rn?", "direction": "in", "at": "2026-09-26T13:58:12.000Z" },
      "lastMessageAt": "2026-09-26T13:58:12.000Z",
      "takenOverUntil": null,
      "totalSpentCents": 48500
    }
  ],
  "hasMore": false,
  "nextCursor": null
}
```

## Two ways to build

<CardGroup cols={2}>
  <Card title="REST API" icon="code" href="/developers/quickstart">
    For your own dashboards, bots, CRMs and automations. Scoped API keys, idempotent writes, predictable rate limits.
  </Card>

  <Card title="MCP server" icon="bot" href="/developers/mcp/overview">
    For AI assistants. The same capabilities as 60 tools, with OAuth sign-in and confirmation before anything reaches a fan.
  </Card>
</CardGroup>

## Ground rules

* **Anything that reaches a fan is a real message to a real person**, usually with real money attached. Sends, releasing a chat back to the AI, turning the AI on for a chat, and resolving a hand-off can all produce a message. Build confirmation into your tools, and see [Read and send messages](/developers/guides/read-and-send-messages).
* **Never resend a message whose delivery is `unconfirmed`.** The fan almost always received it.
* **The API never takes OnlyFans passwords or verification codes.** Creators sign in themselves with the OnlyX Login app. See [Add a creator](/developers/guides/add-a-creator).
* **Send an `Idempotency-Key` with every write that sends, creates, or reaches fans**, and reuse it when you retry, so a retry can never act twice. It is required for sending messages, adding creators and creating tracking links. See [Idempotency](/developers/idempotency).

Need help or found a security issue? Email [security@onlyx.ai](mailto:security@onlyx.ai) for security reports; see [Security](/developers/security).
