GET
/api/public/v1/notifications

List notifications

What the platform has flagged for the calling person, their company, and the locations they reach — the dashboard’s notifications. `unread` is the one most readers want: what still needs handling, the same as `status=unhandled`. Each row says where it came from. `source.kind` is the part of the product that raised it (support, thread, task, order, purchasing, appointment, customer, hr, quality, legal, security, company), `source.link` is what opens it, and `source.recordId` is the record behind it where the raiser said. `audience` is who it was raised for — a person, the whole company, or one location.

Required scope

The access token must carry this scope. A token missing it gets 403 Forbidden. Grant them to an API client under Dev Tools → API, to an assistant or CLI sign-in when you approve or edit it under Dev Tools, and to a teammate under Employee → Permissions.

notifications:read

Query Parameters

NameTypeRequiredDescription
limitnumberOptionalMaximum number of items to return (1-100).Default: 20
offsetnumberOptionalNumber of items to skip before starting to collect the result set.Default: 0
sortBystringOptionalField to sort by. Allowed values vary by endpoint.Default: createdAt
sortOrderstring
asc
desc
OptionalSort direction.Default: desc
searchstringOptionalFree-text search across the resource’s primary fields.
createdAfterstringOptionalISO 8601 timestamp — only return items created after this time.
createdBeforestringOptionalISO 8601 timestamp — only return items created before this time.
updatedAfterstringOptionalISO 8601 timestamp — only return items updated after this time.
unreadbooleanOptional`true` for what nobody has handled yet; `false` for the rest.
statusstring
unhandled
handled
all
OptionalFilter by handled state.
categorystringOptionalFilter by category.
typestringOptionalFilter by notification type.
GETExample request
curl
curl -X GET "https://www.pxb.app/api/public/v1/notifications" \
  -H "Authorization: Bearer your_access_token"
200Example response
json
{
  "message": "Notifications retrieved successfully!",
  "content": {
    "notifications": [
      {
        "id": "ntf_1",
        "referenceId": 1182,
        "type": "SUPPORT_CASE_UPDATE",
        "category": "SUPPORT",
        "title": "Northwind Traders replied in Support",
        "body": "Our invoices stopped syncing to QuickBooks this morning — anything on your side?",
        "source": {
          "kind": "support",
          "recordId": "cnv_7f21",
          "link": "/threads/cnv_7f21",
          "roomId": null
        },
        "audience": {
          "userId": null,
          "companyId": "cmp_pxb",
          "locationId": null
        },
        "unread": true,
        "handledAt": null,
        "handledByEmployeeId": null,
        "metadata": {
          "conversationId": "cnv_7f21"
        },
        "createdAt": "2026-10-09T14:12:00.000Z"
      }
    ],
    "pagination": {
      "total": 42,
      "limit": 20,
      "offset": 0,
      "hasMore": true
    }
  }
}

In the console

The same thing done by hand, for anyone comparing the API against the screen they already use.

Sidebar → notifications
/dashboard
  1. Open the notifications panel from the sidebar.