Download OpenAPI specification:
Programmatic API for managing groups and group alerts.
API version: This document applies to API version v1. Pass Notifier-API-Version: v1 to override the account default per request. Successful responses echo the resolved version in the same response header.
POST /auth/token.Authorization: Bearer <access_token> on all protected routes.POST /auth/refresh with your refresh token and the expired access token.Token endpoints are limited per IP and API key prefix. Authenticated routes are limited per account session.
Path parameters such as groupId and alertId must be valid UUIDs. Invalid values return HTTP 400 with
error.code of validation_error before any database lookup.
Invalid query parameter values return HTTP 400 with error.code of invalid_query_parameter. Unknown query
parameters (for example ?previous instead of ?timeframe=previous) also return HTTP 400. Invalid JSON
request bodies and other request validation failures return HTTP 400 with error.code of validation_error.
The API enforces maximum string lengths on group and alert fields. Values longer than the limit return HTTP 400
with error.code of validation_error.
| Field | Max length | Where set |
|---|---|---|
| Group name | 60 | name on create/update group |
| Alert title | 60 | Derived from the group name when the alert is scheduled; not a separate request field |
| Alert message | 80 | message on create/update alert |
| Alert note | 480 | note on create/update alert (optional) |
| Alert link | 2048 | link on create/update alert (optional) |
When an alert is delivered, the push notification title is the group name and the body is the alert message. Update the group name before scheduling if you need a different notification title.
Returns a JWT for API calls and a refresh token.
WARNING: Your API key is a secret and should only be called from server-side/backend environments. NEVER expose, hardcode, or execute this request in client-side code (e.g., browsers, mobile apps), prompt outputs, or public logs.
| Notifier-API-Version | string Value: "v1" Override the account default API version. Unsupported values return HTTP 400. |
| apiKey | string Optional body field; Bearer header is preferred. |
{- "apiKey": "string"
}{- "accessToken": "string",
- "refreshToken": "string",
- "tokenType": "Bearer",
- "expiresIn": 0
}| Notifier-API-Version | string Value: "v1" Override the account default API version. Unsupported values return HTTP 400. |
| refreshToken required | string |
{- "refreshToken": "string"
}{- "accessToken": "string",
- "refreshToken": "string",
- "tokenType": "Bearer",
- "expiresIn": 0
}| Notifier-API-Version | string Value: "v1" Override the account default API version. Unsupported values return HTTP 400. |
{- "status": "string",
- "planName": "string",
- "planLimits": {
- "maxMembers": 0,
- "maxActiveGroups": 0,
- "maxMonthlyAlerts": 0,
- "maxSeats": 0
}
}Create a group by supplying the group's name. Make sure the group name is easily recognized by your users - for example, include your organization name in the group name.
You also have the option to limit when and how many users are allowed to join.
| Notifier-API-Version | string Value: "v1" Override the account default API version. Unsupported values return HTTP 400. |
| name required | string [ 1 .. 60 ] characters Group name. Maximum 60 characters. |
| memberLimit | integer or null >= 1 |
| joinStartDate | string or null <date-time> |
| joinEndDate | string or null <date-time> |
| joinClosed | boolean |
{- "name": "string",
- "memberLimit": 1,
- "joinStartDate": "2019-08-24T14:15:22Z",
- "joinEndDate": "2019-08-24T14:15:22Z",
- "joinClosed": true
}{- "groupId": "eb54e96e-21b8-4f54-9cd4-80fccbd06f55",
- "status": "active",
- "name": "string",
- "memberLimit": 0,
- "joinStartDate": "2019-08-24T14:15:22Z",
- "joinEndDate": "2019-08-24T14:15:22Z",
- "joinClosed": true,
- "joinLink": "string"
}| Notifier-API-Version | string Value: "v1" Override the account default API version. Unsupported values return HTTP 400. |
| groupId required | string <uuid> |
| name | string [ 1 .. 60 ] characters Group name. Maximum 60 characters. |
| memberLimit | integer or null >= 1 |
| joinStartDate | string or null <date-time> |
| joinEndDate | string or null <date-time> |
| joinClosed | boolean |
| status | string Enum: "active" "inactive" |
{- "groupId": "eb54e96e-21b8-4f54-9cd4-80fccbd06f55",
- "name": "string",
- "memberLimit": 1,
- "joinStartDate": "2019-08-24T14:15:22Z",
- "joinEndDate": "2019-08-24T14:15:22Z",
- "joinClosed": true,
- "status": "active"
}{- "groupId": "eb54e96e-21b8-4f54-9cd4-80fccbd06f55",
- "status": "active",
- "name": "string",
- "memberLimit": 0,
- "joinStartDate": "2019-08-24T14:15:22Z",
- "joinEndDate": "2019-08-24T14:15:22Z",
- "joinClosed": true,
- "joinLink": "string"
}| status | string Enum: "all" "active" "inactive" Filter groups by status. Omit or set to |
| Notifier-API-Version | string Value: "v1" Override the account default API version. Unsupported values return HTTP 400. |
{- "items": [
- {
- "groupId": "eb54e96e-21b8-4f54-9cd4-80fccbd06f55",
- "status": "active",
- "name": "string",
- "memberLimit": 0,
- "joinStartDate": "2019-08-24T14:15:22Z",
- "joinEndDate": "2019-08-24T14:15:22Z",
- "joinClosed": true,
- "joinLink": "string"
}
]
}Returns the canonical group join URL. When refId is provided, the link includes that
query parameter so the recipient can opt in to individual alerts. Generating a personalized link does not
require an existing member.
refId is a hash of your internal user identifier, such as their user ID, customer ID, email address, phone number, etc.
| groupId required | string <uuid> Group UUID. Malformed values return HTTP 400. |
| refId | string^[0-9a-fA-F]{64}$ Optional SHA-256 reference (64 lowercase hex characters after normalization). Invalid or duplicate query values return HTTP 400. |
| Notifier-API-Version | string Value: "v1" Override the account default API version. Unsupported values return HTTP 400. |
{- "groupId": "eb54e96e-21b8-4f54-9cd4-80fccbd06f55",
}| groupId required | string <uuid> Group UUID. Malformed values return HTTP 400. |
| timeframe | string Default: "last12" Enum: "last12" "current" "previous" Time window for statistics. Defaults to |
| Notifier-API-Version | string Value: "v1" Override the account default API version. Unsupported values return HTTP 400. |
{- "items": [
- {
- "year": 0,
- "month": 0,
- "activeMembers": 0,
- "pausedMembers": 0,
- "membersJoined": 0,
- "membersLeft": 0,
- "messagesSent": 0,
- "delivered": 0,
- "notDelivered": 0,
- "viewed": 0,
- "fetchedByUser": 0
}
]
}| groupId required | string <uuid> Group UUID. Malformed values return HTTP 400. |
| status | string Enum: "all" "scheduled" "sent" "cancelled" Filter alerts by status. Omit, leave empty, or set to |
| timeframe | string Default: "last12" Enum: "last12" "current" "previous" Time window for alerts. Defaults to |
| Notifier-API-Version | string Value: "v1" Override the account default API version. Unsupported values return HTTP 400. |
{- "items": [
- {
- "alertId": "a9367074-b5c3-42c4-9be4-be129f43577e",
- "status": "scheduled",
- "is1to1Alert": true,
- "refId": "string",
- "alert": {
- "message": "string",
- "note": "string",
- "link": "string",
- "sendAt": "2019-08-24T14:15:22Z"
}
}
]
}| groupId required | string <uuid> Group UUID. Malformed values return HTTP 400. |
| Notifier-API-Version | string Value: "v1" Override the account default API version. Unsupported values return HTTP 400. |
| message required | string [ 1 .. 80 ] characters Alert message. Maximum 80 characters. Becomes the push notification body when delivered. |
| note | string or null <= 480 characters Optional alert note. Maximum 480 characters. |
| link | string or null <= 2048 characters Optional alert link. Maximum 2048 characters. |
| sendAt required | string <date-time> |
| refId | string^[0-9a-fA-F]{64}$ Optional SHA-256 reference (64 lowercase hex characters after normalization). When set, the alert is delivered only to the active member bound to this reference in the group. Omitted means a broadcast to all active members. Null is not allowed. |
{- "message": "string",
- "note": "string",
- "link": "string",
- "sendAt": "2019-08-24T14:15:22Z",
- "refId": "string"
}{- "alertId": "a9367074-b5c3-42c4-9be4-be129f43577e"
}| groupId required | string <uuid> Group UUID. Malformed values return HTTP 400. |
| alertId required | string <uuid> Alert UUID. Malformed values return HTTP 400. |
| Notifier-API-Version | string Value: "v1" Override the account default API version. Unsupported values return HTTP 400. |
{- "alertId": "a9367074-b5c3-42c4-9be4-be129f43577e",
- "status": "scheduled",
- "is1to1Alert": true,
- "refId": "string",
- "alert": {
- "message": "string",
- "note": "string",
- "link": "string",
- "sendAt": "2019-08-24T14:15:22Z"
}
}Update an alert anytime before its scheduled delivery. Alerts cannot be updated once they have been sent.
| groupId required | string <uuid> Group UUID. Malformed values return HTTP 400. |
| alertId required | string <uuid> Alert UUID. Malformed values return HTTP 400. |
| Notifier-API-Version | string Value: "v1" Override the account default API version. Unsupported values return HTTP 400. |
| message | string [ 1 .. 80 ] characters Alert message. Maximum 80 characters. |
| note | string or null <= 480 characters Optional alert note. Maximum 480 characters. |
| link | string or null <= 2048 characters Optional alert link. Maximum 2048 characters. |
| sendAt | string <date-time> |
{- "message": "string",
- "note": "string",
- "link": "string",
- "sendAt": "2019-08-24T14:15:22Z"
}{- "error": {
- "code": "validation_error",
- "message": "Invalid request."
}
}Cancel an alert anytime before its scheduled delivery. Alerts cannot be canceled once they have been sent.
| groupId required | string <uuid> Group UUID. Malformed values return HTTP 400. |
| alertId required | string <uuid> Alert UUID. Malformed values return HTTP 400. |
| Notifier-API-Version | string Value: "v1" Override the account default API version. Unsupported values return HTTP 400. |
{- "error": {
- "code": "validation_error",
- "message": "Invalid request."
}
}