Skip to main content
Pipeline deals represent opportunities moving through your sales process. Each deal is tied to a company and a pipeline stage, and can optionally link to a contact, site, and owner. Moving a deal to a closed-won or closed-lost stage automatically updates its status.

Required scope

All pipeline endpoints require the pipeline 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

Returns 201 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

Returns 200 OK with { "data": { updated deal } }.