The Only API docs

CRM API

The normalized layer — 95 endpoints that work for both OnlyFans and Fansly.

Endpoints on this surface return normalized data: OnlyFans and Fansly rows are projected to the same shape, and several routes are server-side aggregations with no platform equivalent at all.

Base URL https://theonlyapi.com/api/crm/{crm_id}, authenticated with an X-API-Key header. Responses put data in a sibling key alongside success rather than nesting it — see Responses & errors.

This is the surface to build on. Reach for the OnlyFans passthrough only when you need something here does not cover.

Auth · 3 endpoints

Connect a creator account (OnlyFans or Fansly) and complete 2FA. All three routes accept platform: "onlyfans" | "fansly" and are rate limited to 10 requests/minute.

Accounts · 7 endpoints

Manage connected creator accounts (OnlyFans and Fansly), their polling settings, proxies, and slots.

Panel & Usage · 9 endpoints

Panel signup, health, key→panel resolution, and plan/usage counters. Works for OnlyFans and Fansly panels alike.

API Keys · 5 endpoints

Primary + secondary API key management. POST /api-keys and DELETE /api-keys/{key_id} are PRIMARY-KEY ONLY (a secondary key gets 403). The primary Default key cannot be revoked — rotate it via POST /rotate-key.

Earnings · 5 endpoints

Revenue & earnings data, including the cross-account GET /earnings/summary aggregation. Fansly-aware.

Transactions · 4 endpoints

Payout & purchase transactions, live and cached.

Payouts · 3 endpoints

Withdrawal requests and payout account details. Creating a withdrawal is OnlyFans only.

Referrals · 3 endpoints

OnlyFans referral programme — who the account referred, what it earned, and referral payout history. OnlyFans only: Fansly accounts get 501 platform_not_supported (feature: "referrals"). Live reads, no cache; one quota call per request. OnlyFans' referral response bodies are passed through with minimal normalization — only the list/hasMore/marker envelope keys are read, and the raw body is echoed under data. Fields inside a referral row are unverified: do not depend on them without checking against a live account.

Subscribers · 6 endpoints

Subscriber reads. Live routes hit the platform; /subscribers/cached, /subscribers/new, and /subscribers/stats cost zero platform requests and normalize OnlyFans + Fansly rows to the same shape.

Fans · 6 endpoints

Fan CRM across all accounts in the panel — tags, notes, per-fan cached transactions, profile refresh. Fansly-aware.

Messaging · 5 endpoints

Chats, single DMs/PPVs, mass DMs, and PPV performance stats. Fansly-aware.

Content · 1 endpoint

Media upload. Runs OnlyFans' four-stage signed-S3 pipeline server-side and returns a reference you attach to a post, message or story via mediaFiles. OnlyFans only.

Campaigns · 12 endpoints

Tracking link campaigns, claimers, campaign tags, and the tracked-campaign allowlist.

Notifications · 1 endpoint

Account notifications. Fansly-aware.

Cache & Sync · 3 endpoints

Async refresh, backfill, and job-status routes that populate the local cache. Refresh routes return 202 — poll the matching /refresh/status route or listen on GET /events/stream.

Events & Streaming · 2 endpoints

Real-time event feed — GET /events for polling, GET /events/stream for Server-Sent Events (rate-limit exempt).

Webhooks · 7 endpoints

Outbound webhook subscriptions, test fires, and delivery history.

Automations · 7 endpoints

Event-triggered automations, manual runs, and run history.

Exports · 6 endpoints

Async data export jobs producing a downloadable ZIP. Progress streams over GET /events/stream.

Integrations · 6 endpoints

Third-party integrations. One Telegram channel per panel: pair it once, then matching events are delivered to that chat. The bot token is encrypted at rest and is never returned by any route.

Settings · 5 endpoints

Account settings, subscription price & proxy management

Proxy · 1 endpoint

Generic authenticated OnlyFans API proxy (POST /accounts/{of_user_id}/request). OnlyFans only.

MCP · 1 endpoint

Hosted MCP server support. GET /api/whoami turns a bearer token into a tenant; PATCH /mcp/unsafe-proxy toggles non-GET tool access (off by default).

Bulk Import · 8 endpoints

Connect many creator accounts from one pasted list. POST /import/preview validates without side effects; POST /import/jobs runs the import in the background and streams import.progress / import.complete over GET /events/stream. Rows that hit a 2FA prompt park as needs_2fa until you supply a code.

116 endpoints, generated from the OpenAPI 3.1 spec.