List Opportunities

Retrieve a paginated list of opportunities. Supports: - Pagination (`page_size`, `page`) - Date filtering (`updated_after`, `updated_before`) - Phase entry/exit date filtering (`entered_phase_id`+`entered_after`/`entered_before`, `exited_phase_id`+`exited_after`/`exited_before`) - Sorting (`order_by`, default: desc) - Field search (`title`, `address`, `primaryName`, `primaryPhone`, `primaryEmail`) - Full text search (`q`) **Note:** The `/requests` path is an alias for `/opportunities` and will continue to work until users are individually notified and migrated. **Note:** If an opportunity has no `title` (empty or whitespace-only), the response returns the parent account's `title` instead. The stored value is not modified — this is a read-time fallback only. **Note:** `entered_phase_id`/`exited_phase_id` identify a phase *template* (shared across all deals on a workflow), not a specific phase instance. Use the `phaseTemplateId` from a `GET /opportunities/{opportunity_id}` response or the `GET /workflows` response to find the id for a given phase (e.g. "Closed - Won"). When either filter is used, each row also includes a compact `phaseTimeline` (`phaseTemplateId`, `startedAt`, `completedAt`); use `GET /opportunities/{opportunity_id}` for the full `phaseInstances` with names/positions/SLA.

Authentication

x-api-keystring
API Key authentication via header

Query parameters

page_sizeintegerOptional1-100Defaults to 20

Number of items per page (max 100)

pageintegerOptional>=1Defaults to 1

Page number (1-based)

updated_afterstringOptional

Filter items updated after this timestamp (ISO 8601). Also matches records whose custom property values changed within the window.

updated_beforestringOptional

Filter items updated before this timestamp (ISO 8601). Also matches records whose custom property values changed within the window.

entered_phase_idintegerOptional

Phase template ID to filter by phase-entry date. Required when entered_after or entered_before is provided. Given alone (no date bounds), matches records that ever entered this phase.

entered_afterstringOptional

Only include records that entered the phase given by entered_phase_id on or after this date/timestamp. Accepts a date (2026-07-01) or a full ISO 8601 timestamp (2026-07-01T00:00:00Z). Requires entered_phase_id.

entered_beforestringOptional

Only include records that entered the phase given by entered_phase_id before this date/timestamp (exclusive). Accepts a date (2026-08-01) or a full ISO 8601 timestamp (2026-08-01T00:00:00Z). Requires entered_phase_id.

exited_phase_idintegerOptional

Phase template ID to filter by phase-exit date. Required when exited_after or exited_before is provided. Given alone (no date bounds), matches records that have exited this phase at any point.

exited_afterstringOptional

Only include records that exited the phase given by exited_phase_id on or after this date/timestamp. Accepts a date (2026-07-01) or a full ISO 8601 timestamp (2026-07-01T00:00:00Z). Requires exited_phase_id.

exited_beforestringOptional
Only include records that exited the phase given by `exited_phase_id` before this date/timestamp (exclusive). Accepts a date (`2026-08-01`) or a full ISO 8601 timestamp (`2026-08-01T00:00:00Z`). Requires `exited_phase_id`. On opportunities, combine with `exited_phase_id` set to a "Closed - Won"-style phase template to find deals that closed within a date range.
order_byenumOptionalDefaults to asc
Sort order for results
Allowed values:
include_virtual_propertiesbooleanOptionalDefaults to false
Whether to include virtual properties in the response. Defaults to false unless explicitly set to true.
include_archivedbooleanOptionalDefaults to false

Whether to include archived (inactive) records in the response. By default only active records are returned.

include_contactsbooleanOptionalDefaults to false
Whether to include associated contacts in the response. Defaults to false unless explicitly set to true.
qstringOptional
Full text search query
titlestringOptional
Title search query
addressstringOptional
Address search query
primaryNamestringOptional
Contact name search query
primaryPhonestringOptional
Contact phone search query
primaryEmailstringOptional
Contact email search query

Response

List of opportunities
idintegerOptional
Unique identifier
createdAtstringOptionalformat: "date-time"
Creation timestamp
updatedAtstringOptionalformat: "date-time"
Timestamp of the most recent update to the record, including changes to its custom property values.
titlestringOptional

Record title/name

descriptionstring or nullOptional
Record description
addresslist of stringsOptional

An array containing a single string, which represents the full opportunity location/address.

isActivebooleanOptional
Whether the record is active
primaryEmailstring or nullOptionalformat: "email"
Primary contact email
primaryPhonestring or nullOptional
Primary contact phone
numberintegerOptional
Sequential opportunity number
createdByobject or nullOptional

User who created the record. Null when the record was created by a non-user actor (e.g. automation or a contact).

updatedByobject or nullOptional

User who last edited a field on the record, derived from the changelog. Null when the record has never been edited or the last edit was made by a non-user actor.

custommap from strings to anyOptional
Custom fields
tradeslist of enumsOptional
Array of trade types
valuedouble or nullOptional
Deal value
sizedouble or nullOptional
Deal size
confidencedouble or nullOptional

Deal confidence score (0-100)

workflowIdinteger or nullOptional
Associated workflow ID
accountIdinteger or nullOptional
Associated account ID
geoLocationlist of stringsOptionalRead-only

Latitude/Longitude in “lat,lon” format. Read-only here — settable only via PATCH /sites/{id} on the linked site.

imageUrlstring or nullOptionalRead-only

Image URL for the opportunity. Read-only — not settable via this API.

streetViewUrlstring or nullOptionalRead-only

Street view image URL. Read-only — derived from geoLocation, not settable directly.

citystringOptional
zipcodestringOptional
statestringOptional
streetstringOptional
phaseTimelinelist of objectsOptional

Only present on GET /opportunities and /opportunities/search when entered_phase_id/exited_phase_id is used to filter the results. Contains the deal’s full phase-transition history (not just the matched phase) in compact form — use GET /opportunities/{opportunity_id} for the complete phaseInstances with names, positions, and SLA info.

ownerobject or nullOptional
salesRepobject or nullOptional
projectManagerobject or nullOptional
jurisdictionobject or nullOptional
lastActivitystring or nullOptionalformat: "date-time"
phaseIdinteger or nullOptional
workflowNamestringOptional
Name of the associated workflow.
contactslist of objectsOptional

Contacts associated with this opportunity (independent of, and not inherited from, the parent account’s contacts). Set on create or update via the contacts request field. On GET requests, only populated when include_contacts=true is passed. Always populated on POST (create) and PATCH (update) responses. Ordered with the primary contact first, capped at 20 contacts.

Errors

400
Bad Request Error
401
Unauthorized Error