Required scope
All pipeline endpoints require thepipeline scope on your API key.
Deal statuses
List deals
GET /api/v1/pipeline/deals
Returns a paginated list of deals for the authenticated tenant.
Query parameters
string
Filter by pipeline stage UUID.
string
Filter by deal status. One of:
open, won, lost.string
Filter by company UUID.
string
Filter by owner (user) UUID.
integer
default:"1"
1-based page index.
integer
default:"25"
Results per page. Maximum
100.Response
Create a deal
POST /api/v1/pipeline/deals
Creates a new pipeline deal. The deal’s probability is inherited from the stage. Status is set to open at creation.
Request body
string
required
Deal name. Maximum 200 characters.
string
required
UUID of the company this deal is with. Must belong to your tenant.
string
required
UUID of the pipeline stage to place the deal in. Must belong to your tenant.
string
UUID of the primary contact for this deal.
string
UUID of the site associated with this deal.
string
UUID of the user who owns this deal. Defaults to the authenticated user when using session auth.
string
Expected deal value as a decimal string (for example,
"45000.00").string
Expected close date in
YYYY-MM-DD format.array
Array of product objects associated with the deal.
string
Internal notes about the deal.
object
Custom field key-value map.
Response
Returns201 Created with { "data": { deal object } }. Returns 404 Not Found if companyId or stageId do not belong to your tenant.
Get a deal
GET /api/v1/pipeline/deals/{id}
Retrieves a deal with its full detail: company, stage, contact, site, owner, and up to 20 recent activities.
Path parameters
string
required
UUID of the deal.
Response fields
object
Update a deal
PATCH /api/v1/pipeline/deals/{id}
Partially updates a deal. Only include fields you want to change. Moving a deal to a closed-won or closed-lost stage automatically sets the status and actualCloseDate.
Path parameters
string
required
UUID of the deal.
Request body
All fields are optional.string
Updated deal name.
string
UUID of the new stage. Probability updates automatically from the stage. If the stage is marked
isClosedWon, status becomes won; if isClosedLost, status becomes lost.string
Updated company UUID.
string | null
Updated contact UUID. Pass
null to remove.string | null
Updated site UUID. Pass
null to remove.string | null
Updated owner UUID. Pass
null to unassign.string | null
Updated deal value.
string | null
Updated expected close date (
YYYY-MM-DD). Pass null to clear.string | null
Updated internal notes.
object
Replaces all custom field values.
Response
Returns200 OK with { "data": { updated deal } }.