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.
| Endpoint | What it does |
|---|---|
GET /integrations/telegram | Current integration + whether a shared bot is available |
POST /integrations/telegram/pair | Start or restart pairing → returns a t.me deep link |
PATCH /integrations/telegram | Update event types or pause delivery (404 if none configured) |
POST /integrations/telegram/test | Send a test notification |
DELETE /integrations/telegram | Remove the integration |
POST /integrations/telegram/groups | List 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"]
}'| Field | Notes |
|---|---|
bot_mode | "shared" to use the platform's own bot, or "custom" for your own |
bot_token | Required for "custom" only |
event_types | Optional 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.
| Endpoint | What it does |
|---|---|
POST /accounts/{of_user_id}/tags | Add 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/verifyCross-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.
Related guides
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.