PATCH
/api/public/v1/deals/{dealId}

Update a deal

Everything but the stage and the outcome — those have endpoints of their own, because moving a deal and closing it each carry rules a plain field update would skip.

Required scope

The access token must carry this scope. A token missing it gets 403 Forbidden. Grant them to an API client under Settings → Company → API, and to a teammate under Employee → Permissions.

deals:write

Path Parameters

NameTypeRequiredDescription
dealIdstringRequiredDeal ID.

Request Body

PropertyTypeDescription
titlestring
accountIdstringSend null to unlink.
ownerIdstringHand it to another rep.
valuenumberCents.
currencystring
probabilitynumber0–100.
expectedCloseDatestringISO 8601.
PATCHExample request
curl
curl -X PATCH "https://www.pxb.app/api/public/v1/deals/{dealId}" \
  -H "Authorization: Bearer your_access_token" \
  -H "Content-Type: application/json" \
  -d '{
    "value": 5200000,
    "probability": 75
  }'
200Example response
json
{
  "message": "Deal updated successfully!",
  "content": {
    "deal": {
      "id": "del_8830",
      "referenceId": 214,
      "locationId": "loc_abc123",
      "pipelineId": "pip_01",
      "stageId": "stg_02",
      "accountId": "acc_7712",
      "ownerId": "emp_44f1",
      "title": "Northwind — annual contract",
      "value": 4800000,
      "currency": "USD",
      "status": "OPEN",
      "probability": 60,
      "expectedCloseDate": "2026-10-15T00:00:00.000Z",
      "sortOrder": 0,
      "wonLostReason": null,
      "closedAt": null,
      "stageMovedAt": "2026-08-25T10:00:00.000Z",
      "createdAt": "2026-08-10T09:00:00.000Z",
      "updatedAt": "2026-08-25T10:00:00.000Z"
    }
  }
}

In the console

The same thing done by hand, for anyone comparing the API against the screen they already use.

xRM → Pipeline
/xrm/pipeline
  1. Open a deal card and edit it.