Skip to content
Sign in Waitlist
Docs/API reference/Notifications/List notifications

List notifications

GET /v1/notifications scope read

The notification center (the bell) of the signed-in user in this workspace, newest first: notifications (id, event = postSent, postFailed, scheduledFail, weeklySummary or newComment, data with the facts of the event, link to where it leads, read, readAt and createdAt), unreadCount and next. A notification only exists if the panel preference for that event was on when it happened. Filters: unread (true), limit (1 to 50, default 20) and cursor (the next of the previous page). Kept for 30 days. An API key has no user and reads an empty list.

HeadersAuthorization: Bearer praeko_… and X-Praeko-Contract: en. Always send both.

Parameters

Name In Description
unread query true returns only unread notifications.
limit query Items per page (1 to 50). Default: 20.
cursor query The next value of the previous page.

Example

curl "https://praeko.app/v1/notifications" \
  -H "Authorization: Bearer $PRAEKO_KEY" \
  -H "X-Praeko-Contract: en"

Response

Success status When
200 Success.
Response 200
{
  "notifications": [
    {
      "id": "01KA3ZB6T8N2QW5XH0D7MV4CRE",
      "event": "postFailed",
      "data": {
        "event": "post.failed",
        "title": "The test that only failed on Mondays",
        "network": "youtube",
        "error": "YouTube rejected the video (daily quota exceeded)",
        "postId": "01KA3W2Y6H1RC5ZQ8M0T4VXE7N"
      },
      "link": {
        "type": "post",
        "id": "01KA3W2Y6H1RC5ZQ8M0T4VXE7N"
      },
      "read": false,
      "createdAt": "2026-11-07T14:02:11.482Z"
    },
    {
      "id": "01KA3Z5H2C9JR7TQ0M4XB8VNDF",
      "event": "newComment",
      "data": {
        "count": 3,
        "author": "Ana",
        "text": "Great video, which editor do you use?",
        "videoId": "dQw4w9WgXcQ",
        "network": "youtube"
      },
      "link": {
        "type": "comments"
      },
      "read": true,
      "createdAt": "2026-11-07T14:02:11.482Z",
      "readAt": "2026-11-07T14:30:00.000Z"
    }
  ],
  "unreadCount": 1
}

data.error is free text the server writes in Portuguese; the example shows it in English.

Errors

Status code When
422 invalid_field limit outside 1 to 50, unread that is not true/false, or an invalid cursor.

Errors on any route

Status code When
401 unauthorized The Authorization: Bearer … header is missing.
401 invalid_api_key The key does not exist.
401 revoked_api_key The key has been revoked.
401 expired_api_key The key has expired.
403 forbidden The key's scope is not enough for this route (see the scope badge).
429 rate_limited The per-minute request limit was exceeded.

The body of every error is { "error": { "code", "message", "details"? } }. See all error codes.

Try it

Try it

The live test uses your key and your account. It stays off when you are not signed in.

Sign in to try it
Question or mistake on this page? contato@praeko.appView .md

Type to search pages, routes and error codes.