opportunities

Search Opportunities

Search opportunities using up to two filters (prop1/op1/value1 and optionally prop2/op2/value2), combined with logic (AND/OR).

Properties:

  • propX can be a standard field (e.g., status, title, city, type, accountId, etc.) or a custom property key name.
  • Use the property key from your company settings.
  • Filter by parent account with accountId. clientId is accepted as a deprecated alias for backwards compatibility.

Operators (opX):

  • Equality: eq, neq
  • Numeric/datetime comparisons: gt, gte, lt, lte
  • Text/string matching: contains (case-insensitive)
  • Lists: in, nin (CSV list in valueX)
  • Ranges: between (use valueX as from,to)
  • Existence: exists is not supported for custom properties due to performance limitations. Use eq or neq instead.
  • status has a fixed set of values, so it supports only eq, neq, in, and nin.

Value formats:

  • in/nin: lists can be provided as:
    • Plain CSV: value1=OPEN,ACTIVE
    • Quoted CSV (to include commas inside a value): value1="Last, First",Other
    • JSON array: value1=["Last, First","Other"]
  • between: from,to (e.g., value1=2025-01-01,2025-12-31 or value1=10,20)
  • Dates should be ISO 8601 strings; numeric-like values on custom properties are matched against both numeric and text representations.

Examples:

  • status equals ACTIVE: ?prop1=status&op1=eq&value1=ACTIVE
  • won or lost: ?prop1=status&op1=in&value1=WON,LOST (opportunity status is ACTIVE, ON_HOLD, WON, or LOST)
  • custom id equals 1234: ?prop1=legacy_tool_project_id&op1=eq&value1=1234
  • title contains "Solar": ?prop1=name&op1=contains&value1=Solar
  • status IN (ACTIVE, ON_HOLD) AND city = Austin: ?prop1=status&op1=in&value1=ACTIVE,ON_HOLD&logic=and&prop2=city&op2=eq&value2=Austin

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.

get/opportunities/search

Request

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

Query parameters

prop1string required

First field to filter (standard or custom keyName)

op1'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | 'contains' | 'in' | 'nin' | 'between' required

Operator for prop1

value1string required

Value for prop1 (comma-separated values for in/nin or between)

logic'and' | 'or'

Logical combination when both prop1 and prop2 are provided

prop2string

Optional second field to filter

op2'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | 'contains' | 'in' | 'nin' | 'between'

Operator for prop2

value2string

Value for prop2 (comma-separated values for in/nin or between)

page_sizeinteger

Number of items per page (max 100)

pageinteger

Page number (1-based)

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_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.

Response

List of opportunities matching filters

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.