Browse the docs

API reference

Customers

Companies you sell to, their open deals, and moving or annotating a deal.

List customers

GET/v1/customers

The 60 most recent companies, each with up to 10 open deals (not WON or LOST) and a contact count. Amounts are null unless the token also holds crm.value; valueVisible tells a withheld amount from an unpriced one.

Requires crm.read

Request
curl "https://atrix.dev/api/v1/customers" \
  -H "Authorization: Bearer $ATRIX_TOKEN"
Response
{
  "valueVisible": true,
  "items": [
    {
      "id": "cm4k2v9xq0001lb08a7f3d2h1",
      "name": "Northwind",
      "domain": "northwind.com",
      "contacts": 4,
      "deals": [
        {
          "id": "cm4k2wb1r0003lb08q9z6m4c7",
          "title": "Annual platform licence",
          "stage": "PROPOSED",
          "amount": 24000,
          "currency": "USD",
          "expectedCloseOn": "2026-11-30T00:00:00.000Z"
        }
      ]
    }
  ]
}

Get a deal

GET/v1/deals/{id}

One deal with its company, owner and the 20 most recent notes. The amount is null unless the token also holds crm.value.

Requires crm.read

Path parameters

  • idstringrequired

    The deal id.

Request
curl "https://atrix.dev/api/v1/deals/ID" \
  -H "Authorization: Bearer $ATRIX_TOKEN"
Response
{
  "id": "cm4k2wb1r0003lb08q9z6m4c7",
  "title": "Annual platform licence",
  "stage": "PROPOSED",
  "company": "Northwind",
  "companyDomain": "northwind.com",
  "amount": null,
  "currency": "USD",
  "valueVisible": false,
  "expectedCloseOn": "2026-11-30T00:00:00.000Z",
  "owner": {
    "id": "cm3z8p1aa0000qs07h2k5t9we",
    "name": "Sara Khan",
    "image": null
  },
  "notes": [
    {
      "id": "cm4k3a7tn0009lb08x1c4v8pm",
      "body": "Procurement wants a two-year option.",
      "at": "2026-10-24T14:02:11.000Z",
      "author": {
        "id": "cm3z8p1aa0000qs07h2k5t9we",
        "name": "Sara Khan",
        "image": null
      }
    }
  ]
}

Move a deal or add a note

PATCH/v1/deals/{id}

Adds a note, moves the deal to a new stage, or both; the note is written first so it survives a refused move. Moves write the same stage history as the dashboard, and a move to LOST needs a reason.

Requires crm.write

Path parameters

  • idstringrequired

    The deal id.

Body

  • stageenum

    The stage to move the deal to.

    NEWQUALIFIEDPROPOSEDWONLOST

  • reasonstring

    Why it moved, up to 2000 characters; required when stage is LOST.

  • notestring

    A note to add to the deal, up to 8000 characters.

Request
curl -X PATCH "https://atrix.dev/api/v1/deals/ID" \
  -H "Authorization: Bearer $ATRIX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "stage": "NEW", "reason": "…" }'
Response
{
  "ok": true,
  "won": false
}