Browse the docs
API reference
Workspace
Who the token belongs to, plus workspace-wide search, attention, the weekly brief, notifications and quick capture.
Get the caller
GET/v1/me
The member behind the token, their workspace, the token's scopes and the workspace's plan access state (ok, trial_ending, payment_failed or locked). Any grantable scope may call it; profile.read is the one to request when this is all you need.
Requires profile.read
curl "https://atrix.dev/api/v1/me" \
-H "Authorization: Bearer $ATRIX_TOKEN"{
"access": {
"state": "ok"
},
"member": {
"id": "cm3k8w1zz0004qz8fa1b2c3d4",
"name": "Sara Khan",
"email": "sara@example.com",
"emailVerified": true,
"image": null,
"title": "Product lead",
"role": "admin"
},
"org": {
"id": "cm3k7a0aa0000qz8f1a2b3c4d",
"name": "Northwind"
},
"scopes": [
"feed.read",
"messages.read",
"profile.read"
]
}Update your profile
PATCH/v1/me/profile
Updates the caller's own profile; only the fields sent are changed. Links must be http(s) and timezone must be a valid IANA name.
Requires profile.write
Body
pronounsstringUp to 32 characters.
biostringUp to 2000 characters.
locationstringUp to 120 characters.
timezonestringAn IANA timezone name such as Asia/Karachi.
workingHoursstringUp to 64 characters, e.g. 09:00-17:00.
githubUrlstringAn http(s) URL, up to 300 characters.
linkedinUrlstringAn http(s) URL, up to 300 characters.
websiteUrlstringAn http(s) URL, up to 300 characters.
titlestringYour job title, up to 120 characters.
focusstringWhat you are working on, up to 120 characters.
skillsstring[]Up to 20 skills of 1 to 40 characters each.
curl -X PATCH "https://atrix.dev/api/v1/me/profile" \
-H "Authorization: Bearer $ATRIX_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "pronouns": "…", "bio": "…" }'{
"ok": true
}Search the workspace
GET/v1/search
Searches products, ideas, work items, pages and messages, returning only the kinds the token's scopes can read. Any searchable read scope may call it; a query under 2 characters returns no results.
Requires projects.read
Query parameters
qstringrequiredThe search text, at least 2 characters.
limitintegerUp to 50; defaults to 20.
curl "https://atrix.dev/api/v1/search?q=%E2%80%A6" \
-H "Authorization: Bearer $ATRIX_TOKEN"{
"results": [
{
"id": "cm3kd1p6q0020qz8fh7i8j9k0",
"kind": "issue",
"title": "Fix checkout tax rounding",
"snippet": "Totals are off by a cent when…",
"url": "https://atrix.dev/dashboard/projects/storefront?issue=cm3kd1p6q0020qz8fh7i8j9k0",
"at": "2026-10-26T14:03:10.000Z"
},
{
"id": "cm3kb4f1g0007qz8fm2n3o4p5",
"kind": "message",
"title": "Sara Khan in #launch",
"snippet": "checkout copy is final",
"url": "https://atrix.dev/dashboard/messages/cm3ka0c7d0002qz8fq9r8s7t6",
"conversationId": "cm3ka0c7d0002qz8fq9r8s7t6",
"at": "2026-10-25T11:20:00.000Z"
}
]
}List what needs attention
GET/v1/attention
The caller's overdue and soon-due work, unread mentions and drifting items, capped per kind; counts holds the true totals. route is the matching path in the Atrix app.
Requires feed.read
curl "https://atrix.dev/api/v1/attention" \
-H "Authorization: Bearer $ATRIX_TOKEN"{
"items": [
{
"id": "overdue:cm3kd1p6q0020qz8fh7i8j9k0",
"kind": "overdue",
"title": "Fix checkout tax rounding",
"detail": "2 days past its date",
"href": "/dashboard/work?issue=cm3kd1p6q0020qz8fh7i8j9k0",
"route": "/work/cm3kd1p6q0020qz8fh7i8j9k0",
"project": "Storefront"
}
],
"counts": {
"overdue": 1,
"due": 3,
"mention": 0,
"drifting": 1
}
}Get the weekly brief
GET/v1/brief
The latest weekly brief, or the one for week, with its figures and up to 5 slipped tasks, plus the last 12 weeks' headlines. Returns { brief: null, weeks: [] } when there is none yet.
Requires projects.read
Query parameters
weekISO dateThe
weekStartof an earlier brief to fetch.
curl "https://atrix.dev/api/v1/brief" \
-H "Authorization: Bearer $ATRIX_TOKEN"{
"brief": {
"id": "cm3kd5s9t0030qz8fl1m2n3o4",
"weekStart": "2026-10-19T00:00:00.000Z",
"weekEnd": "2026-10-25T23:59:59.000Z",
"headline": "Checkout shipped; billing work is slipping.",
"momentum": "Storefront closed 18 tasks.",
"slipping": "Billing has 4 overdue tasks.",
"watchOut": "Two launches land the same week.",
"nextSteps": [
"Re-plan billing",
"Pick a launch date"
],
"at": "2026-10-26T05:00:00.000Z",
"figures": {
"tasksCompleted": 18,
"tasksAdded": 22,
"docsWritten": 3,
"ideasCaptured": 5,
"openTasks": 41,
"overdue": 4,
"dueNextSevenDays": 9
},
"slipped": [
{
"title": "Invoice PDF export",
"project": "Billing",
"daysLate": 3
}
]
},
"weeks": [
{
"weekStart": "2026-10-19T00:00:00.000Z",
"headline": "Checkout shipped; billing work is slipping."
}
]
}List notifications
GET/v1/notifications
The caller's notifications, newest first, with the total unread count; pass next back as before for the next page. Any grantable scope may call it.
Requires profile.write
Query parameters
limitinteger1 to 50; defaults to 30.
beforeISO dateOnly notifications created before this time.
unreadbooleantrue for unread only, false for read only; omit for both.
curl "https://atrix.dev/api/v1/notifications" \
-H "Authorization: Bearer $ATRIX_TOKEN"{
"unread": 4,
"items": [
{
"id": "cm3kd8v2w0040qz8fp5q6r7s8",
"kind": "MENTION",
"title": "Sara Khan mentioned you",
"excerpt": "@Omar can you review the checkout copy?",
"href": "/dashboard/messages/cm3ka0c7d0002qz8fq9r8s7t6",
"at": "2026-10-27T08:30:00.000Z",
"readAt": null,
"actor": {
"id": "cm3k8w1zz0004qz8fa1b2c3d4",
"name": "Sara Khan",
"image": null
},
"target": null
}
],
"next": "2026-10-27T08:30:00.000Z"
}Mark notifications read
POST/v1/notifications
Marks the given notifications, or all of them, as read and returns the remaining unread count. Send either ids or all: true; any grantable scope may call it.
Requires profile.write
Body
idsstring[]Up to 100 notification ids to mark read.
allbooleanSet to true to mark every notification read.
curl -X POST "https://atrix.dev/api/v1/notifications" \
-H "Authorization: Bearer $ATRIX_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "ids": [], "all": true }'{
"ok": true,
"unread": 0
}Capture something
POST/v1/capture
Files a quick note as a feed post of the given kind, defaulting to IDEA; for kinds other than UPDATE the title defaults to the first line. A linkUrl is attached as a link.
Requires ideas.write
Body
bodystringrequiredThe text to capture.
kindenumWhat to create; the legacy values note and post mean UPDATE, step means IDEA.
UPDATEIDEAPROTOTYPEPROJECTtitlestringA title, up to 160 characters; defaults to the first line.
projectIdstringA product in this workspace to file it against.
aboutIdeaIdstringAn idea in this workspace it is about.
aboutPrototypeIdstringA prototype in this workspace it is about.
linkUrlstringAn http(s) link to attach.
linkTitlestringA title for the attached link.
curl -X POST "https://atrix.dev/api/v1/capture" \
-H "Authorization: Bearer $ATRIX_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "body": "…" }'{
"kind": "IDEA",
"ok": true,
"postId": "cm3kdb1y20050qz8ft9u0v1w2",
"href": "/dashboard/activity#post-cm3kdb1y20050qz8ft9u0v1w2"
}