The Only API docs

Integrations

Telegram notifications, account tags, and panel request metrics.

Panel-scoped and authenticated exactly like every other CRM route. Each endpoint below links to its full reference page.

Telegram notifications

A first-class Telegram integration, separate from the telegram action available in automations. Pairing is done through a deep link, so a bot token never has to be sent to a chat.

EndpointWhat it does
GET /integrations/telegramCurrent integration + whether a shared bot is available
POST /integrations/telegram/pairStart or restart pairing → returns a t.me deep link
PATCH /integrations/telegramUpdate event types or pause delivery (404 if none configured)
POST /integrations/telegram/testSend a test notification
DELETE /integrations/telegramRemove the integration
POST /integrations/telegram/groupsList the groups your own bot can see

Pairing

curl -X POST "$BASE/api/crm/$CRM/integrations/telegram/pair" \
  -H "X-API-Key: $KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "bot_mode": "shared",
        "event_types": ["new_tip", "new_subscriber"]
      }'
FieldNotes
bot_mode"shared" to use the platform's own bot, or "custom" for your own
bot_tokenRequired for "custom" only
event_typesOptional filter; omit for everything

The response is a t.me deep link — never a token. Open it and start the bot to complete pairing.

GET /integrations/telegram reports shared_bot_available, so a UI can hide the shared-bot option on a deployment where no shared bot is configured rather than offering a button that fails.

Read, test, remove

curl "$BASE/api/crm/$CRM/integrations/telegram" -H "X-API-Key: $KEY"
curl -X POST "$BASE/api/crm/$CRM/integrations/telegram/test" -H "X-API-Key: $KEY"
curl -X DELETE "$BASE/api/crm/$CRM/integrations/telegram" -H "X-API-Key: $KEY"

PATCH returns 404 No Telegram integration configured if you have not paired yet — pair first, then update.

POST /integrations/telegram/groups lists the group chats your bot can see so a UI can offer a picker — it registers nothing. It requires {"bot_token": "…"} and is custom-bot only; passing the shared platform token is refused with 400, because that token is a single-consumer stream.

Writes here are on the 100/minute sensitive-route limit; the GET is on the default 100/minute.

Account tags

Tag connected accounts (distinct from fan tags) — useful for grouping creators by manager, niche or status.

EndpointWhat it does
POST /accounts/{of_user_id}/tagsAdd a tag — body {"tag": "vip-creator"}
DELETE /accounts/{of_user_id}/tags/{tag}Remove a tag
curl -X POST "$BASE/api/crm/$CRM/accounts/$OFUID/tags" \
  -H "X-API-Key: $KEY" -H "Content-Type: application/json" \
  -d '{"tag": "managed-by-alex"}'

Tags are capped at 40 characters. The full set for the panel comes back as all_tags on GET /accounts.

Deleting a tag with special characters

Tag values are HTML-escaped once when stored. The DELETE path segment is deliberately not re-escaped, so pass the tag exactly as it was stored — a double-escaped value silently matches nothing and deletes nothing.

Referrals

Full reference: CRM API → Referrals.

Referral money is separate from subscription and tip revenue, so it is not included in GET /earnings/summary — add it explicitly if your reporting needs a true total. See Earnings & transactions.

Earnings verification

GET /accounts/{of_user_id}/earnings/verify

Cross-checks the computed earnings figures against the platform's own totals. Useful when a number looks wrong and you want to know whether the discrepancy is in the cache or in your own aggregation — see the chargeback trap for the most common cause.

Request metrics

GET /metrics/requests returns your panel's own request outcomes over a window — volume, status classes, error rate, latency, and the slowest and most error-prone routes. It is what the dashboard Overview charts, and it includes the current partial bucket so the numbers are not up to a minute stale.

Other integrations need no endpoints

Discord, Slack and OnlyFans DM notifications are delivered through automation actions — you configure them as part of a rule rather than as a standalone integration. Only Telegram has dedicated endpoints, because of the pairing handshake.

On this page