AI assistant (copilot chat)
AI assistant — a chat built into the admin that knows Notifly’s capabilities and helps configure them. You describe a task in natural language (“I want to be notified if the nightly backup didn’t run”, “check that the site is up”), and the assistant replies with a step-by-step instruction with examples and — importantly — offers ready action-buttons that open a pre-filled creation dialog for the required entity.
This is not the same AI as the assistants inside message sending: the assistant has a separate daily quota (assistantRequestsPerDay), it does not consume the events limit and is not counted against the AI assistants limit.
What it can do
Section titled “What it can do”- Answer questions about the platform: what a heartbeat is, how monitor types differ, what limits Free has, how to configure email delivery.
- Suggest actions. When you ask to “create / add / configure” something, the reply includes an action block — a button that opens the creation dialog (heartbeat, monitor, HTTP monitor, content monitor, port monitor, workflow monitor, metric source, email inbox, webhook router, web script or a new channel) with fields already filled. You only need to choose the channel and confirm.
- Diagnose. The assistant sees a short summary of your account: what’s currently
down/degraded/alerting, how many active and online devices there are, quota usage, recent notifications. To questions like “what’s not working” or “why aren’t notifications arriving” it responds based on the actual state (for example, it may point out that all devices aresuspendeddue to the plan limit — and there is physically no one to show notifications to).
Conversations (threads)
Section titled “Conversations (threads)”The chat is multi-turn: the assistant remembers previous messages within the same conversation (up to the last 20 messages are passed into the model context). Each conversation is a separate thread with its own title (taken from the first message).
- The first message without a
threadIdcreates a new conversation — itsthreadIdis returned in the response; pass it in subsequent requests to continue the same dialog. - List of conversations —
GET /assistant/threads, their history —GET /assistant/threads/:id/messages. - A conversation can be deleted entirely —
DELETE /assistant/threads/:id.
Actions (notifly-action)
Section titled “Actions (notifly-action)”When the assistant suggests configuring something, the response contains an array actions. Each element is a pre-fill for a creation dialog, not an automatic change: nothing is created until you confirm in the opened window.
{ "kind": "heartbeat", "label": "Настроить контроль бэкапа", "params": { "name": "Ночной бэкап", "intervalSec": 86400, "graceSec": 3600, "alertTitle": "Бэкап не выполнился", "alertMessage": "Пинг от задачи бэкапа не пришёл вовремя" }}kind— the entity type:heartbeat,monitor,http_monitor,content_monitor,port_monitor,workflow_monitor,metric_source,email_inbox,webhook_router,web_script,application.label— the button caption in the user’s language.params— fields for pre-filling (all optional, any can be modified in the dialog). The channel (appid) is not included in the action — you choose it when confirming.
A single response may contain several actions (for example, create a channel and a heartbeat to it at once). For entities without a creation dialog — interactive questions (ask) and the browser workflow monitor — there is no ready action: the assistant will explain and point you to the appropriate page.
Each dialog turn (one POST /assistant/chat) consumes one request from the assistant’s separate daily quota. The limit depends on the plan and is not included in the overall events limit or the AI assistants limit:
| Plan | assistantRequestsPerDay |
|---|---|
| Free | 100 |
| Pro | 2000 |
| Business | 20000 |
The quota is decremented before calling the model; when exhausted the request returns 429. Reset occurs at 00:00 MSK, like other daily limits. More — Quotas and tariffs.
Example: sending a message
Section titled “Example: sending a message”The minimal request is only text (a new conversation is created automatically):
curl -X POST "$NOTIFLY_URL/assistant/chat" \ -H "X-Notifly-Key: C_ваш_клиентский_токен" \ -H "Content-Type: application/json" \ -d '{"text":"Хочу узнавать, если ночной бэкап не отработал"}'Response:
{ "threadId": 184, "messageId": 921, "text": "Для контроля бэкапа подойдёт heartbeat: задача после успешного завершения «пингует» уникальный URL, а если пинг не пришёл вовремя — Notifly шлёт алерт. Нажмите кнопку ниже, чтобы создать монитор.", "actions": [ { "kind": "heartbeat", "label": "Настроить контроль бэкапа", "params": { "name": "Ночной бэкап", "intervalSec": 86400, "graceSec": 3600 } } ]}To continue the same dialog — add the threadId from the response:
curl -X POST "$NOTIFLY_URL/assistant/chat" \ -H "X-Notifly-Key: C_ваш_клиентский_токен" \ -H "Content-Type: application/json" \ -d '{"threadId":184,"text":"А если бэкап раз в неделю, а не каждый день?"}'In the response actions may be empty (the array absent) — for purely informational questions there will be no buttons.
REST API
Section titled “REST API”| Method and path | Authorization | Purpose |
|---|---|---|
GET /assistant/threads | client-token | list of user’s conversations |
GET /assistant/threads/:id/messages | client-token | conversation message history |
DELETE /assistant/threads/:id | client-token | delete a conversation entirely |
POST /assistant/chat | client-token | send a message, receive a response + actions |
Request body of POST /assistant/chat: text (required), threadId (optional — to continue a conversation; without it a new one is created).
Response of POST /assistant/chat: threadId, messageId, text, actions[] (kind, label, params).