opportunities

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.

get/opportunities

Request

  • Base URL: https://api.coperniq.io/v1
  • URL: https://api.coperniq.io/v1/opportunities
  • Auth: API key in header x-api-key

Query parameters

page_sizeinteger

Number of items per page (max 100)

pageinteger

Page number (1-based)

string date
OR
string date-time

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

string date
OR
string date-time

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

entered_phase_idinteger

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_afterstring

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_beforestring

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_idinteger

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_afterstring

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_beforestring

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_by'asc' | 'desc'

Sort order for results

include_virtual_propertiesboolean

Whether to include virtual properties in the response. Defaults to false unless explicitly set to true.

include_archivedboolean

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

include_contactsboolean

Whether to include associated contacts in the response. Defaults to false unless explicitly set to true.

qstring

Full text search query

titlestring

Title search query

addressstring

Address search query

primaryNamestring

Contact name search query

primaryPhonestring

Contact phone search query

primaryEmailstring

Contact email search query

Response

List of opportunities

idinteger

Unique identifier

createdAtstring date-time

Creation timestamp

updatedAtstring date-time

Timestamp of the most recent update to the record, including changes to its custom property values.

titlestring

Record title/name

descriptionstring nullable

Record description

addressstring[]

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

isActiveboolean

Whether the record is active

primaryEmailstring email nullable

Primary contact email

primaryPhonestring nullable

Primary contact phone

numberinteger

Sequential opportunity number

customobject

Custom fields

tradesTradeType[]

Array of trade types

valuenumber double nullable

Deal value

sizenumber double nullable

Deal size

confidencenumber double nullable

Deal confidence score (0-100)

status'ACTIVE' | 'ON_HOLD' | 'WON' | 'LOST'

Status of the opportunity:

  • ACTIVE - Opportunity is open
  • ON_HOLD - Opportunity is temporarily paused
  • WON - Opportunity was won
  • LOST - Opportunity was lost
workflowIdinteger nullable

Associated workflow ID

accountIdinteger nullable

Associated account ID

geoLocationstring[]

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

imageUrlstring nullable

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

streetViewUrlstring nullable

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

citystring
zipcodestring
statestring
streetstring
lastActivitystring date-time nullable
phaseIdinteger nullable
workflowNamestring

Name of the associated workflow.

Changes

No recorded changes to this operation across all 1 revision of this API.