Skip to main content

About

Programmatic access to your deal flow: fetch and search deals, spot deals going cold, and create, update, move, or archive deals from your own code. Pipeline structure (creating pipelines, editing stages) and pipeline analytics have their own page — see the Pipelines API. All operations go through the developer API gateway — one endpoint, called by operationId. If you haven’t set up a key yet, start with the Developer API Overview.

Operations

Reading deals (READ scope)

findDeals and listStalledDeals are paginatedBoth return up to 50 rows per call (a larger limit is clamped) but take an offset and return totalCount + hasMore, so you can page through the full set: send offset: 0, then offset: 50, and so on until hasMore is false. See Result limits & truncation.

Writing deals (WRITE scope)

Deal money fieldsCommission and team split each accept one source: a fixed *AmountCents or a *PercentBps, never both. commissionCents is the server-derived GCI to report. Participant splits allocate what remains after the team fee. For deal custom fields, use the value member that matches the definition type; DOLLAR values are plain numbers, not cents, and dropdown values are option labels.
updateDeal replaces linked setsOn updateDeal, the contactIds, propertyIds, and userIds arrays replace the deal’s linked set — they do not append. To add one contact, send the full existing list plus the new id.
Guarding against a concurrent editPass expectedUpdatedAt — the updatedAt you got from getDeal, findDeals, or a previous write — to make the update conditional. The write applies only if the deal hasn’t changed since; otherwise nothing is written and you get CONFLICT. Use it whenever you decided what to write from a copy you read earlier, so a concurrent edit fails loudly instead of being silently overwritten.
Deal file URLs are short-livedfileUrl from listDealFiles or attachDealFile is a time-limited signed HTTPS URL. Fetch it promptly, and don’t persist or share it — re-read listDealFiles rather than caching the URL. attachDealFile accepts an existing artifact id; it is not a raw-byte upload endpoint.
Organization guardDeal operations are org-guarded: the deal (and any destination stage) must belong to a pipeline owned by or shared with your organization, or the call returns 403 forbidden. Pipelines shared with your org through a partnership work normally. See Authorization for the full owned-vs-shared model.

Example

Move a deal to another stage:
Full variable schemas, response shapes, and worked examples for every operation are available from the discovery endpoint.