Skip to main content
GET
List opportunities in the caller's tenant with optional filtering and pagination.

Authorizations

x-api-key
string
header
required

Query Parameters

page
integer
default:1

Page number, 1-indexed. Clamped to >= 1.

per_page
integer
default:10

Results per page (default 10). Clamped to the range 1-50 (values outside are silently capped, not rejected).

after
string | null

Opaque cursor from a previous response's next_cursor. When supplied, the page starts immediately after the last record of that response and page is ignored — unlike page, this cannot skip or repeat records when the data changes mid-scan. Filters and sort must stay identical for the whole scan; changing one is a 400. Not supported by every list endpoint — those that support it return next_cursor.

name
string | null

Case-insensitive substring match on opportunity name.

opportunity_type_uuid
string | null

Filter by opportunity type UUID (call GET /v1/opportunity-types to discover valid values).

opportunity_stage_uuid
string | null

Filter by opportunity stage UUID (inspect stage.uuid on existing records).

opportunity_stage_uuids
string | null

Comma-separated list of opportunity stage UUIDs (IN filter, e.g. for 'Diligence or later').

search
string | null

Search the opportunity name and its associated person/company names. Every whitespace-separated word must appear, in any order. If nothing matches, retries fuzzily so near-misses and typos still return results rather than an empty page, closest match first unless sort_by is given. Broader than name, which only matches the opportunity's own name field. Does not search the opportunity type label.

owner_user_uuid
string | null

Comma-separated owner UUID(s); filters by the opportunity owner. Accepts either a user UUID or the person UUID shown as owner.uuid on a record. Returns 400 if none resolve.

include_no_owner
boolean
default:false

Widens owner_user_uuid to also match opportunities with no owner. Has no effect on its own -- unowned opportunities are already returned when no owner filter is set.

has_owner
boolean | null

true returns only opportunities that have an owner, false only the unassigned ones. Omit to return both.

intro_person_uuid
string | null

Filter by the intro person's UUID.

related_company_uuid
string | null

Return parent opportunities that have a sub-opportunity associated with this company UUID.

related_person_uuid
string | null

Return parent opportunities that have a sub-opportunity associated with this person UUID.

parent_uuid
string | null

Return only the sub-opportunities of this parent opportunity UUID.

hierarchy_type
enum<string> | null

'PARENT' for top-level opportunities only, 'CHILD' for sub-opportunities only. Ignored when parent_uuid is set.

Available options:
PARENT,
CHILD
company_uuid
string | null

Comma-separated company UUID(s); returns opportunities associated with any of them.

city
string | null

Case-insensitive substring on the city of an associated person or company (e.g. 'Los Angeles'). Prefer this over paging the list and filtering client-side.

state
string | null

State/region of an associated person or company. A full name ('Florida') works on its own; a two-letter code ('FL', 'NY') is ISO 3166-2 and requires country, since unscoped 'FL' means Flintshire, GB. Returns 400 if it does not resolve.

country
string | null

Country of an associated person or company, name or ISO code ('US', 'United States'). Returns 400 if unrecognized.

person_uuid
string | null

Comma-separated person UUID(s); returns opportunities associated with any of them.

value_from
integer | null

Minimum value, inclusive.

value_to
integer | null

Maximum value, inclusive.

probability_from
integer | null

Minimum probability, inclusive.

probability_to
integer | null

Maximum probability, inclusive.

updated_after
string | null

ISO 8601 date/datetime; only return opportunities updated at or after this time.

updated_before
string | null

ISO 8601 date/datetime; only return opportunities updated at or before this time.

source_date_from
string | null

ISO 8601 date (YYYY-MM-DD). Must be paired with source_date_to — both are required together.

source_date_to
string | null

ISO 8601 date (YYYY-MM-DD). Must be paired with source_date_from — both are required together.

close_date_from
string | null

ISO 8601 date (YYYY-MM-DD). Must be paired with close_date_to — both are required together.

close_date_to
string | null

ISO 8601 date (YYYY-MM-DD). Must be paired with close_date_from — both are required together.

last_activity_date_from
string | null

ISO 8601 datetime. Must be paired with last_activity_date_to — both are required together.

last_activity_date_to
string | null

ISO 8601 datetime. Must be paired with last_activity_date_from — both are required together.

order
enum<string>
default:asc

Sort order. Valid values: 'asc' (ascending) or 'desc' (descending)

Available options:
asc,
desc
sort_by
enum<string> | null

Field to sort by. Valid values: 'name', 'created_at', 'updated_at', 'value', 'weighted_value', 'probability', 'source_date', 'intro_date', 'close_date', 'last_activity_date', 'details', 'next_step', 'stage' (pipeline stage order), 'owner' (by name), 'intro_person' (by name), 'days_in_stage', 'notes_and_files_count'

Available options:
name,
created_at,
updated_at,
value,
weighted_value,
probability,
source_date,
intro_date,
close_date,
last_activity_date,
details,
next_step,
stage,
owner,
intro_person,
days_in_stage,
notes_and_files_count

Response

200 - application/json

Paginated list of opportunities.

items
OpportunityResponse · object[]
required
page
integer
required
per_page
integer
required
total
integer | null
required
custom_field_mapping
CustomFieldMapping · object | null
has_more
boolean | null
next_cursor
string | null
total_value
integer | null
total_weighted_value
integer | null