Get a notification
Retrieve one of your notifications by id. A notification addressed to another user, or from another workspace, returns 404, the same as an id that doesn't exist.
An archived notification also returns 404 unless you add ?archived=true. This endpoint applies the same archived default as List notifications.
Path Parameters
slug:requiredstringThe workspace slug. It appears in your Plane URLs. In https://app.plane.so/my-team/projects/, the slug is my-team.
pk:requiredstring (uuid)The id of the notification.
Query Parameters
archived:optionalbooleanSet to true to retrieve an archived notification. Without it, an archived notification returns 404.
Response shaping
fields:optionalstringComma-separated list of fields to return. Unrequested keys are omitted from the response, not returned as null, so absent means "not requested" and null means "actually null". id always comes back whether or not you name it.
Pass all for every requestable field. An unknown name is a 400 that lists the valid set and suggests the closest match, so a typo can't silently cost you the saving.
Requestable here: archived_at, created_at, data, entity_id, entity_name, id, is_mention, message, message_html, project_id, read_at, sender, snoozed_till, title, triggered_by_id, updated_at.
See Sparse fields.
expand:optionalstringComma-separated relations to embed alongside the ids: triggered_by (the user whose action produced the notification, with id, display_name, avatar_url, and email).
Expansion is separate-key. ?expand=triggered_by keeps triggered_by_id and adds a triggered_by object next to it. An unknown value is a 400. See Expanding relations.
Scopes
notifications:read
Errors
| Status | Code | Cause |
|---|---|---|
401 | unauthorized | Missing or invalid credentials. |
402 | payment_required | The feature this endpoint belongs to isn't enabled on your plan, or is switched off. |
403 | forbidden | You aren't a member of the workspace, or your token scope doesn't allow this. |
404 | not_found | No such notification in your inbox in this workspace, or it's archived and you didn't pass ?archived=true. |
406 | not_acceptable | The Accept header asks for a representation the API can't produce. |
429 | rate_limited | Throttled. Honor the Retry-After header before retrying. |
curl -X GET \
"https://api.plane.so/api/v2/workspaces/my-team/notifications/71f4c2a9-8e3b-4d56-a017-5c9e2b8d4f63/?expand=triggered_by" \
-H "X-Api-Key: $PLANE_API_KEY"import requests
response = requests.get(
"https://api.plane.so/api/v2/workspaces/my-team/notifications/71f4c2a9-8e3b-4d56-a017-5c9e2b8d4f63/",
headers={"X-Api-Key": "your-api-key"},
params={"expand": "triggered_by"},
)
print(response.json())const response = await fetch(
"https://api.plane.so/api/v2/workspaces/my-team/notifications/71f4c2a9-8e3b-4d56-a017-5c9e2b8d4f63/?expand=triggered_by",
{
headers: {
"X-Api-Key": "your-api-key",
},
},
);
const data = await response.json();{
"id": "71f4c2a9-8e3b-4d56-a017-5c9e2b8d4f63",
"entity_id": "8c3d1f72-4a9e-4b65-9d20-6e1f3b7a5c48",
"entity_name": "issue",
"project_id": "4af68566-94a4-4eb3-94aa-50dc9427067b",
"title": "Priya Shah has mentioned you in a comment in issue Fix login redirect loop",
"message": null,
"message_html": "<p></p>",
"sender": "in_app:issue_activities:mentioned",
"is_mention": true,
"read_at": null,
"archived_at": null,
"snoozed_till": null,
"data": {
"issue": {
"id": "8c3d1f72-4a9e-4b65-9d20-6e1f3b7a5c48",
"name": "Fix login redirect loop",
"identifier": "ENG",
"sequence_id": 142,
"state_name": "In Progress",
"state_group": "started",
"type_id": "5b7e2d94-1a6c-4f38-9e02-8d4c3b6a1f57"
},
"issue_activity": {
"id": "3f8b6d21-9c4e-4a73-b1d5-7e2a0c9f6b48",
"verb": "created",
"field": "comment",
"actor": "16c61a3a-512a-48ac-b0be-b6b46fe6f430",
"new_value": "@Ravi can you check the redirect on Safari?",
"old_value": "None",
"old_identifier": null,
"new_identifier": null,
"issue_comment": "@Ravi can you check the redirect on Safari?"
}
},
"triggered_by_id": "16c61a3a-512a-48ac-b0be-b6b46fe6f430",
"created_at": "2026-01-14T09:22:41.478363Z",
"updated_at": "2026-01-14T09:22:41.478363Z",
"triggered_by": {
"id": "16c61a3a-512a-48ac-b0be-b6b46fe6f430",
"display_name": "Priya Shah",
"avatar_url": "https://media.plane.so/avatars/16c61a3a-512a-48ac-b0be-b6b46fe6f430.png",
"email": "priya@example.com"
}
}{
"type": "not_found",
"code": "not_found",
"detail": "The requested resource was not found."
}
