Skip to content

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.

  • 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 are suspended due to the plan limit — and there is physically no one to show notifications to).

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 threadId creates a new conversation — its threadId is 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.

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:

PlanassistantRequestsPerDay
Free100
Pro2000
Business20000

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.

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.

Method and pathAuthorizationPurpose
GET /assistant/threadsclient-tokenlist of user’s conversations
GET /assistant/threads/:id/messagesclient-tokenconversation message history
DELETE /assistant/threads/:idclient-tokendelete a conversation entirely
POST /assistant/chatclient-tokensend 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).