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

Request
curl "https://atrix.dev/api/v1/me" \
  -H "Authorization: Bearer $ATRIX_TOKEN"
Response
{
  "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

  • pronounsstring

    Up to 32 characters.

  • biostring

    Up to 2000 characters.

  • locationstring

    Up to 120 characters.

  • timezonestring

    An IANA timezone name such as Asia/Karachi.

  • workingHoursstring

    Up to 64 characters, e.g. 09:00-17:00.

  • githubUrlstring

    An http(s) URL, up to 300 characters.

  • linkedinUrlstring

    An http(s) URL, up to 300 characters.

  • websiteUrlstring

    An http(s) URL, up to 300 characters.

  • titlestring

    Your job title, up to 120 characters.

  • focusstring

    What you are working on, up to 120 characters.

  • skillsstring[]

    Up to 20 skills of 1 to 40 characters each.

Request
curl -X PATCH "https://atrix.dev/api/v1/me/profile" \
  -H "Authorization: Bearer $ATRIX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "pronouns": "…", "bio": "…" }'
Response
{
  "ok": true
}

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

Request
curl "https://atrix.dev/api/v1/attention" \
  -H "Authorization: Bearer $ATRIX_TOKEN"
Response
{
  "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 date

    The weekStart of an earlier brief to fetch.

Request
curl "https://atrix.dev/api/v1/brief" \
  -H "Authorization: Bearer $ATRIX_TOKEN"
Response
{
  "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

  • limitinteger

    1 to 50; defaults to 30.

  • beforeISO date

    Only notifications created before this time.

  • unreadboolean

    true for unread only, false for read only; omit for both.

Request
curl "https://atrix.dev/api/v1/notifications" \
  -H "Authorization: Bearer $ATRIX_TOKEN"
Response
{
  "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.

  • allboolean

    Set to true to mark every notification read.

Request
curl -X POST "https://atrix.dev/api/v1/notifications" \
  -H "Authorization: Bearer $ATRIX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "ids": [], "all": true }'
Response
{
  "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

  • bodystringrequired

    The text to capture.

  • kindenum

    What to create; the legacy values note and post mean UPDATE, step means IDEA.

    UPDATEIDEAPROTOTYPEPROJECT

  • titlestring

    A title, up to 160 characters; defaults to the first line.

  • projectIdstring

    A product in this workspace to file it against.

  • aboutIdeaIdstring

    An idea in this workspace it is about.

  • aboutPrototypeIdstring

    A prototype in this workspace it is about.

  • linkUrlstring

    An http(s) link to attach.

  • linkTitlestring

    A title for the attached link.

Request
curl -X POST "https://atrix.dev/api/v1/capture" \
  -H "Authorization: Bearer $ATRIX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "body": "…" }'
Response
{
  "kind": "IDEA",
  "ok": true,
  "postId": "cm3kdb1y20050qz8ft9u0v1w2",
  "href": "/dashboard/activity#post-cm3kdb1y20050qz8ft9u0v1w2"
}