CRM

List opportunities

Returns the sales opportunities with their pipeline, their stage and their amount weighted by the probability of the stage.

GET
/api/v1/crm/opportunities

Request examples

curl https://app.filmo.io/api/v1/crm/opportunities \
  --header "Authorization: Bearer $FILMO_API_KEY"
{
  "data": [
    {
      "opportunityId": "opportunity_9f3a2b",
      "identifier": "Example identifier",
      "name": "Example opportunity",
      "status": "open",
      "amount": "120.00",
      "currency": "EUR",
      "pipelineId": "pipeline_9f3a2b",
      "pipelineName": "Example pipeline name",
      "stageId": "stage_9f3a2b",
      "stageName": "Example stage name",
      "stageType": "open",
      "effectiveProbability": 1,
      "weightedAmount": "120.00",
      "daysInStage": 1,
      "expectedCloseDate": "2026-09-01T10:00:00+02:00",
      "contactName": "Example contact name",
      "companyName": "Example company name",
      "ownerName": "Example owner name",
      "source": "inbound_email",
      "createdAt": "2026-09-01T10:00:00+02:00",
      "updatedAt": "2026-09-01T10:00:00+02:00"
    }
  ],
  "pagination": {
    "nextCursor": "eyJvIjoyMH0",
    "hasMore": true,
    "total": 1
  }
}

Generated from the schema

By default only the open ones: pass status=won, lost or all for the rest. It paginates by a cursor specific to the CRM service.

Authorizations

Bearer API key with the scope below. crm:read

Query parameters

limitintegerdefault:50

Page size (1-500). Defaults to 50.

Limits: min 1, max 500

cursorstring

Opaque cursor of the page to return. Pass the value of pagination.nextCursor from the previous response; treat it as opaque.

Limits: max length 200

sortstring

Sort order: up to 3 comma-separated fields, each with a leading "-" for descending (e.g. "-updatedAt,name"). Sortable fields: createdAt, updatedAt, name, identifier, status, amount, expectedCloseDate. Defaults to "-createdAt". Ties are broken by id, so the order is stable across pages, and a cursor is bound to the sort it was issued with.

Limits: max length 200

pipelineIdstring

Returns only the opportunities in this pipeline.

stageIdstring

Returns only the opportunities in this stage.

statusstring

Commercial status: open (the default), won, lost or all.

Available options: open, won, lost, all

contactIdstring

Returns only the opportunities of this contact.

qstring

Free-text search on the name and the identifier.

expectedCloseFromstring

Expected close date from this date (ISO 8601).

expectedCloseTostring

Expected close date up to this date (ISO 8601).

includeTotalbooleandefault:false

Set it to true to include pagination.total, the number of results that match the filters across all pages. Off by default.

Response

application/json

Successful response.

Response schema: OpportunityDto

Envelope: OpportunityList. meta.warnings is present only when the operation is deprecated.

Headers: X-Request-Id · RateLimit-Limit · RateLimit-Remaining · RateLimit-Reset

dataobject[]

Show child attributes
data.opportunityIdstring

data.identifierstring

data.namestring

data.statusstring

Available options: open, won, lost

data.amountstring

data.currencystring

data.pipelineIdstring

data.pipelineNamestring

data.stageIdstring

data.stageNamestring

data.stageTypestring

Available options: open, won, lost

data.effectiveProbabilitynumber

data.weightedAmountstring

data.daysInStageinteger

data.expectedCloseDatestring<date-time>

data.contactNamestring

data.companyNamestring

data.ownerNamestring

data.sourcestring

Available options: inbound_email, website_form, referral, cold_outreach, event, social, existing_customer, partner, other

data.createdAtstring<date-time>

data.updatedAtstring<date-time>

paginationobject

Opaque-cursor pagination metadata.

Show child attributes
pagination.nextCursorstring | null

Opaque cursor of the next page; null when there are no more results. Pass it as cursor in the next request.

pagination.hasMoreboolean

Whether more results exist beyond this page.

pagination.totalinteger

Number of results matching the filters across all pages. Present only when the request sets includeTotal=true.

Limits: min 0

metaobject

Additional information about the response.

Show child attributes
meta.warningsobject[]

Lifecycle warnings; present only when the operation is deprecated.

Show child attributes
meta.warnings.codestring

Stable warning code.

Available options: deprecated

meta.warnings.messagestring

For people: what is deprecated, until when, and what to use.

meta.warnings.sunsetstring

Day (YYYY-MM-DD) the operation stops being served.

meta.warnings.replacementstring | null

operationId of the operation to use instead, or null if there is none.

Errors

StatusCodesMeaning
400validation_errorMalformed query or body. errors[] lists every offending field with its stable code.
402addon_requiredThe account plan does not include the add-on this operation needs; requiredAddon names it.

401, 403, 429, 500 can be returned by any operation. Errors

Deprecation

This operation is not deprecated. Deprecations are announced with a Deprecation header and a sunset date. Versioning policy

  • CRM

    Opportunity

    CRM opportunity: which pipeline and stage it is in, for how much, with whom and with what probability.