A valid request URL is required to generate request examples{
"notifications": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>",
"body": "<string>",
"url": "<string>",
"action": "agreements",
"customer_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"category": "transactional",
"source": "transactional",
"kind": "action",
"read": true,
"read_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z"
}
],
"unread": 123
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}My notifications
The panel a signed-in person opens: everything your backend addressed to them, newest first, with the unread count beside it.
The count is always of everything unread, never of what this page carried — the list is bounded at 50, so a number derived from it would say 50 to somebody who has 300. ?unread=true filters the list and leaves the count alone, which is what lets one request draw both the bell and the panel.
It is read inside one team. X-Customer-Id names it, and absent it the contact’s oldest membership answers — the same resolution as every other call on this plane. The answer is that team’s messages plus the ones addressed to the person themselves (customer_id: null), which are listed whichever team is active. A contact who belongs to no team reads their whole feed. Naming a team they are not a member of is a 404, not a narrower list: a short answer nothing says is short is worse than an error.
It needs a verified session. An unverified identified session is an assertion anybody who knows an external_id can make from a browser, and the whole answer here is somebody else’s mail — “your invoice failed”, “the Q3 payroll export is ready”. An anonymous session passes and reads an empty list: nothing addresses a visitor, because a notification names a contact_id or an external_id and a visitor has neither.
A valid request URL is required to generate request examples{
"notifications": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>",
"body": "<string>",
"url": "<string>",
"action": "agreements",
"customer_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"category": "transactional",
"source": "transactional",
"kind": "action",
"read": true,
"read_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z"
}
],
"unread": 123
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}Autorizações
A contact session token, uk_ct_…. Belongs to one of the developer's own users, and reads only that user's data.
Cabeçalhos
The customer this call is acting inside — the same arrangement as X-Organization-Id, one plane down. Switching customers is navigation, not a mutation: nothing is stored, you send a different header, and the membership JOIN behind it decides what you may do there. An id you are not a member of matches no row and answers 404. Absent, the contact's oldest membership answers.
Parâmetros de consulta
true keeps only what has not been read. The unread count in the response is unaffected.
true