Skip to content

Notifications API

Probara exposes two endpoints for the session user’s notification inbox: a cursor-paginated list and a mark-read action. Both require an authenticated session — sign in in the browser and send the session cookie plus X-Organization-Id when calling from custom scripts. Both are scoped to the active organization; there is no bearer-token (API token) surface for notifications.

GET/api/v1/notifications

Returns the session user’s inbox for the active organization, newest first.

ParameterTypeNotes
cursorULIDWhen set, returns rows after this cursor (older page)
limitintegerPage size. Default 20. 0 is a valid explicit value. Values above 100 are rejected with 422 validation_failed
unreadOnlybooleantrue returns only unread rows
{
"items": [
{
"ulid": "01J…",
"kind": "defect.assigned",
"entityType": "defect",
"entityUlid": "01J…",
"actorLabel": "María López",
"eventCount": 1,
"createdAt": 1700000000000,
"readAt": null,
"payload": { "entity": { "title": "Login regression", "url": "/x" } }
}
],
"nextCursor": "01J…",
"unreadCount": 4
}

unreadCount reflects the same authorization and read-state filters as items, so the two can never disagree — it is not a separate query.

Terminal window
curl -sS \
-H "Cookie: $PROBARA_SESSION_COOKIE" \
-H "X-Organization-Id: $ORG_ULID" \
"https://app.probara.net/api/v1/notifications?limit=20&unreadOnly=true"
POST/api/v1/notifications/read
FieldRequiredNotes
ulidsnoArray of notification ULIDs to mark read, scoped to the caller’s own rows regardless of value. Omitted or empty marks every visible row read. At most 200 entries

ulids caps at 200 entries — an abuse ceiling, not a product ceiling. Submitting more than 200 returns 422 validation_failed naming the ulids field; no row changes read state and the unread count is unchanged.

Omitting ulids entirely is unaffected by this cap: it keeps its shipped mark-all-visible-rows meaning.

204 No Content on success. Marking an already-read row (or replaying the same request) is a no-op.

Terminal window
curl -sS -X POST \
-H "Cookie: $PROBARA_SESSION_COOKIE" \
-H "X-Organization-Id: $ORG_ULID" \
-H "Content-Type: application/json" \
--data-raw '{}' \
"https://app.probara.net/api/v1/notifications/read"
Terminal window
curl -sS -X POST \
-H "Cookie: $PROBARA_SESSION_COOKIE" \
-H "X-Organization-Id: $ORG_ULID" \
-H "Content-Type: application/json" \
-d '{"ulids": ["01J...A", "01J...B"]}' \
"https://app.probara.net/api/v1/notifications/read"