Skip to content

API reference / Get a notification

Get a notification

Read a notification and the status of every attempt it made.

GET/v1/notifications/{id}
Auth API key: Authorization: Bearer sk_live_… or sk_test_…

Returns a notification created in the key's project, with one entry per attempt. Any key of the project can read any of its notifications, live or test. The message content is never returned.

Request#

Headers#

Authorization
stringrequired
An API key of the project that sent the notification.
Rules
Bearer sk_live_… or Bearer sk_test_…

Path parameters#

id
stringrequired
The id from the send response.
Rules
UUID

Response#

200 OK with the notification. Every field is always present; unknown values are null.

id
stringrequired
The notification's id.
Rules
UUID
recipient
stringrequired
The recipient's name.
mode
stringrequired
The mode of the key that sent it.
Rules
live or test
createdAt
stringrequired
When the notification was accepted.
Rules
ISO 8601, UTC
attemptCount
integerrequired
The number of attempts created, one per connected browser.
attempts
object[]required
One entry per attempt.
Rules
Oldest first
attempts[].id
stringrequired
The attempt's id.
Rules
UUID
attempts[].browser.id
stringrequired
The connected browser this attempt went to.
Rules
UUID
attempts[].browser.label
stringrequired
A readable name such as Chrome on Windows.
attempts[].status
stringrequired
Where the attempt is. See attempt statuses.
Rules
queued, processing, accepted, failed, expired or invalid_subscription
attempts[].tries
integerrequired
How many times Push tried to hand the message to the push service.
attempts[].acceptedAt
string | nullrequired
When the push service accepted the message.
Rules
ISO 8601, UTC
attempts[].clickedAt
string | nullrequired
When the person first clicked the notification or one of its buttons.
Rules
ISO 8601, UTC
attempts[].closedAt
string | nullrequired
When the person first dismissed the notification.
Rules
ISO 8601, UTC
attempts[].actionClicked
string | nullrequired
The id of the button clicked first, if the click was on a button.
NoteNotifications are deleted 90 days after they are created. After that this endpoint returns 404 NOT_FOUND. See reading status for what each field can and cannot prove.

Errors#

CodeHTTPWhen
UNAUTHORIZED401The Authorization header is missing, or the key is malformed, unknown or revoked.
FORBIDDEN403A live key was sent from a browser: the request carries an Origin header. Call the API from your server, or use a test key.
PROJECT_SUSPENDED403The key's project is suspended.
NOT_FOUND404The id is not a UUID, belongs to another project, or the notification was deleted after 90 days.
RATE_LIMITED429The key, project or account went over its per-minute limit. Reads count like sends.
INTERNAL_ERROR500Something failed on Push's side. It is safe to retry.

Example#

⫻

curl

curl https://api.meslzy.com/push/v1/notifications/0199b1c2-7a4e-7c3d-9f1e-2b6a8d4c5e10 \  -H "Authorization: Bearer $PUSH_API_KEY"

⫻

200 OK

HTTP/1.1 200 OKContent-Type: application/jsonX-Request-Id: req_0199b1c27a4e7c3d9f1e2b6a8d4c5e11
{  "id": "0199b1c2-7a4e-7c3d-9f1e-2b6a8d4c5e10",  "recipient": "ops",  "mode": "live",  "createdAt": "2026-10-05T09:12:44.120Z",  "attemptCount": 2,  "attempts": [    {      "id": "0199b1c2-7a52-7aa0-8c11-5d0e4f3b2a91",      "browser": {        "id": "0198f0aa-1c2d-7e3f-9a4b-5c6d7e8f9012",        "label": "Chrome on Windows"      },      "status": "accepted",      "tries": 1,      "acceptedAt": "2026-10-05T09:12:44.610Z",      "clickedAt": "2026-10-05T09:13:02.004Z",      "closedAt": null,      "actionClicked": "open"    },    {      "id": "0199b1c2-7a53-7b11-9d22-6e1f5a4c3b02",      "browser": {        "id": "0198f0ab-2d3e-7f40-8b5c-6d7e8f901234",        "label": "Safari on iPhone"      },      "status": "invalid_subscription",      "tries": 1,      "acceptedAt": null,      "clickedAt": null,      "closedAt": null,      "actionClicked": null    }  ]}