solarOS Organization API

Organization API

List Cases

Lists first-class service Cases inside the organization boundary. Filters combine, and query parameters not listed here are ignored. Supply externalSystem, externalObject, and externalId together to filter by a canonical External Reference. With sortBy=updatedAt, each page continues from where the last one ended even if a Case on it is edited meanwhile. To sync, use sortDir=asc: a Case edited during a pass appears again later in it. With sortDir=desc, a Case edited during a pass moves ahead of the pages already read, so that pass skips it and the next one lists it first. Required scope: cases:read.

/api/v1/cases

Lists first-class service Cases inside the organization boundary. Filters combine, and query parameters not listed here are ignored. Supply externalSystem, externalObject, and externalId together to filter by a canonical External Reference. With sortBy=updatedAt, each page continues from where the last one ended even if a Case on it is edited meanwhile. To sync, use sortDir=asc: a Case edited during a pass appears again later in it. With sortDir=desc, a Case edited during a pass moves ahead of the pages already read, so that pass skips it and the next one lists it first. Required scope: cases:read.

List Cases. Use an organization API key with cases:read. Check the response envelope and meta.requestId before triggering dependent workflow steps.

Required scopes

cases:read

Parameters

NameInTypeDescription
limitqueryintegerMaximum records to return. Defaults to 50 and is capped at 100.
cursorquerystringOpaque record cursor from the previous response meta.nextCursor value.
sortByqueryopenedAt | updatedAtCase sort field. Defaults to openedAt; an empty value also uses openedAt.
sortDirqueryasc | descSort direction. Defaults to desc.
statusqueryarray<OPEN | TRIAGING | IN_PROGRESS | AWAITING_CUSTOMER | AWAITING_VENDOR | AWAITING_WORK | RESOLVED | CLOSED>Filter by Case status. Separate several statuses with commas, for example OPEN,TRIAGING, or repeat the parameter, for example status=OPEN&status=TRIAGING, to match any of them; a single status works as before. Every value must be a status: an unknown one, repeated or not, returns 400. Changed 2026-10-15: a repeated status parameter used to be read for its first value only, so later values, unknown or not, were ignored. To keep a request working, send only Case statuses. CLOSED is the sole terminal status; legacy RESOLVED filters are treated as CLOSED.
customerIdquerystringFilter by Customer id.
propertyIdquerystringFilter by Property id.
projectIdquerystringFilter by a Project the Case has had, including earlier work cycles.
ownerIdquerystringFilter by owner Team Member id. Use unassigned for Cases without an owner.
caseNumberquerystringFilter by exact Case number, such as CASE-00042. A number from before five-digit Record Numbers (CASE-2026-000042) finds the same case.
searchquerystringCase-insensitive text matched against the Case number, subject and description.
updatedSincequerystringReturn Cases updated at or after this ISO 8601 date-time, including a saved Case Field and an External Record Link added or removed. Include Z or a UTC offset, for example 2026-10-01T00:00:00Z. Send the + of an offset as %2B, for example 2026-10-01T00:00:00%2B02:00: an unencoded + reads as a space.
externalSystemquerystringExternal Reference system filter. Supply with externalObject and externalId for exact reconciliation lookup.
externalObjectquerystringExternal Reference object filter. Supply with externalSystem and externalId.
externalIdquerystringExternal Reference id filter. Supply with externalSystem and externalObject.

Request body

This endpoint does not accept a JSON request body.

Responses

200

Case list envelope

#/components/schemas/CaseListEnvelope

400

UNSUPPORTED_SORT: a sortBy other than openedAt or updatedAt, or a sortDir other than asc or desc. VALIDATION_FAILED: a status that is not a Case status; an updatedSince that is not an ISO 8601 date-time with Z or a UTC offset; or externalSystem, externalObject and externalId not sent together, or one of them empty or too long.

#/components/schemas/OrgApiError

401

Missing or invalid organization API key

#/components/schemas/OrgApiError

402

Organization billing access or an endpoint-specific business quota denied the request

#/components/schemas/OrgApiError

403

Missing required scope: cases:read

#/components/schemas/OrgApiError

429

Rate limit exceeded

#/components/schemas/OrgApiError

Errors

400 UNSUPPORTED_SORT: a sortBy other than openedAt or updatedAt, or a sortDir other than asc or desc. VALIDATION_FAILED: a status that is not a Case status; an updatedSince that is not an ISO 8601 date-time with Z or a UTC offset; or externalSystem, externalObject and externalId not sent together, or one of them empty or too long.401 Missing or invalid organization API key402 Organization billing access or an endpoint-specific business quota denied the request403 Missing required scope: cases:read429 Rate limit exceeded

Static examples

curl -X GET "$SOLAROS_BASE_URL/api/v1/cases" \
  -H "Authorization: Bearer $SOLAROS_API_KEY"