← All action domains

Notifications

6 operations. Call each with POST https://app.chirply.io/api/v1/actions/<name> and a bearer token; the response is { "data": { "action", "summary", "result" } }. A read badge means the operation changes nothing; write requires the credential’s write scope.

Alert my team

notifications.alert_teamwriteconfirm

Tell the account's own people that something happened — by text message, email, phone call, or all three at once. These are REAL messages on the workspace's own Twilio and Mailgun/Resend accounts and are billed to it: one text and one phone call per recipient, per call of this action. It reaches teammates named by id (at the email and mobile on their profile), the owner of a named contact, and any numbers or addresses given here. It is for STAFF: if `about_contact_id` is given, that contact's own number and address are dropped from the recipients and the result says so, because the message describes them. To message a contact, use messages.send or conversations.start instead.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
channelsarray of ("sms" | "email" | "call")requiredHow to reach them: "sms" (text), "email", "call" (an automated phone call that speaks the message twice). Any combination.
messagestringrequiredThe alert itself, plain text. Sent as the text body, the email body and the spoken call. Put the detail in here — who, what, and the phone number to ring back.
subjectstringoptionalEmail subject line. Ignored by text and call; blank falls back to a generic line. Default: ""
phonesstring[]optionalNumbers to text and call, in any common format. These are STAFF numbers — the people being told, not the person being told about. Default: []
emailsstring[]optionalAddresses to email. Staff addresses, same as above. Default: []
member_idsarray of (string (uuid))optionalTeammates to reach, by user id. Each is reached at the email and the mobile saved on their own profile; anyone without a mobile is emailed only, and the result names them. Default: []
about_contact_idstring (uuid)optionalThe contact this alert is ABOUT, when there is one. Recorded on the alert, used to drop that contact from the recipients, and required for include_contact_owner.
include_contact_ownerbooleanoptionalAlso alert whoever owns `about_contact_id`, so the alert follows a round-robin or a hand-over. Default: false
from_number_idstring (uuid)optionalWhich of the account's numbers texts and calls come from. Omit for the oldest active one.
email_identity_idstring (uuid)optionalWhich connected sending identity the email comes from. Omit for the workspace default.

Example

curl -X POST https://app.chirply.io/api/v1/actions/notifications.alert_team \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "channels": [
      "sms"
    ],
    "message": "example"
  }'
Test with your API key

Over MCP the same operation is the tool notifications_alert_team at https://app.chirply.io/api/mcp, same bearer token, same input.

Browsers you're notified on

notifications.list_devicesread

List the browsers registered to receive desktop notifications. A signed-in caller sees only their OWN browsers, since notification permission is granted per browser profile; an API key acts for the account and sees every registration in it. Each entry reports which topics it wants, whether it is still reachable, and when it was last seen. The push endpoint itself is never returned.

Parameters

No parameters — POST an empty body.

Example

curl -X POST https://app.chirply.io/api/v1/actions/notifications.list_devices \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{}'
Test with your API key

Over MCP the same operation is the tool notifications_list_devices at https://app.chirply.io/api/mcp, same bearer token, same input.

Remove a browser

notifications.remove_devicewriteconfirm

Stop notifying one browser and forget its registration. The browser keeps its operating-system permission, so it will re-register the next time somebody signs in on it and turns notifications on again — this is not a permanent block.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
device_idstring (uuid)requiredThe browser's id, from notifications.list_devices.

Example

curl -X POST https://app.chirply.io/api/v1/actions/notifications.remove_device \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "device_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool notifications_remove_device at https://app.chirply.io/api/mcp, same bearer token, same input.

Notify the team

notifications.sendwrite

Show a desktop notification on every browser in this workspace that has opted into the given topic. This reaches STAFF ONLY — it is not a way to message a contact or a customer, it sends no SMS or email, and it costs nothing. Anyone at a desk sees it immediately, so use it for things that genuinely warrant interrupting someone. Topics: "message" (new messages and leads), "call" (calls you missed), "approval" (ai employees waiting on you), "payment" (payments), "reminder" (reminders).

Parameters

FieldTypeRequiredDescription
titlestringrequiredThe notification's headline. Put the who and the what first.
bodystringoptionalOne supporting line. Longer text is truncated by the browser. Default: ""
urlstringoptionalApp-relative path to open when someone clicks it, e.g. /contacts or /calls. Must start with a single slash — an absolute URL is rejected, since the notification has to open the account's own host. Default: "/dashboard"
topic"message" | "call" | "approval" | "payment" | "reminder"optionalWhich topic this counts as. Browsers that have switched this topic off will not see it. Default: "reminder"

Example

curl -X POST https://app.chirply.io/api/v1/actions/notifications.send \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Example"
  }'
Test with your API key

Over MCP the same operation is the tool notifications_send at https://app.chirply.io/api/mcp, same bearer token, same input.

Send a test

notifications.send_testwrite

Fire a single test notification at one registered browser and report whether the push service accepted it. Nothing is charged and nobody outside the account sees it. This is the way to tell 'notifications are misconfigured' apart from 'nothing has happened yet'.

Parameters

FieldTypeRequiredDescription
device_idstring (uuid)requiredThe browser's id, from notifications.list_devices.

Example

curl -X POST https://app.chirply.io/api/v1/actions/notifications.send_test \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "device_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool notifications_send_test at https://app.chirply.io/api/mcp, same bearer token, same input.

Choose what a browser tells you about

notifications.set_topicswrite

Replace the list of notification topics one browser receives. This is the whole list, not a patch — topics left out are switched off, and an empty list silences that browser without removing it. Valid topics: "message" (new messages and leads), "call" (calls you missed), "approval" (ai employees waiting on you), "payment" (payments), "reminder" (reminders).

Parameters

FieldTypeRequiredDescription
device_idstring (uuid)requiredThe browser's id, from notifications.list_devices.
topicsarray of ("message" | "call" | "approval" | "payment" | "reminder")requiredEvery topic this browser should be notified about. Anything omitted is turned off.

Example

curl -X POST https://app.chirply.io/api/v1/actions/notifications.set_topics \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "device_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "topics": [
      "message"
    ]
  }'
Test with your API key

Over MCP the same operation is the tool notifications_set_topics at https://app.chirply.io/api/mcp, same bearer token, same input.

The machine-readable version of this page is GET https://app.chirply.io/api/v1/actions?domain=notifications — same operations, with full JSON Schemas. Authentication, errors and rate limits are covered in the API documentation home.