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.
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
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| limit | query | integer | Maximum records to return. Defaults to 50 and is capped at 100. |
| cursor | query | string | Opaque record cursor from the previous response meta.nextCursor value. |
| sortBy | query | openedAt | updatedAt | Case sort field. Defaults to openedAt; an empty value also uses openedAt. |
| sortDir | query | asc | desc | Sort direction. Defaults to desc. |
| status | query | array<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. |
| customerId | query | string | Filter by Customer id. |
| propertyId | query | string | Filter by Property id. |
| projectId | query | string | Filter by a Project the Case has had, including earlier work cycles. |
| ownerId | query | string | Filter by owner Team Member id. Use unassigned for Cases without an owner. |
| caseNumber | query | string | Filter by exact Case number, such as CASE-00042. A number from before five-digit Record Numbers (CASE-2026-000042) finds the same case. |
| search | query | string | Case-insensitive text matched against the Case number, subject and description. |
| updatedSince | query | string | Return 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. |
| externalSystem | query | string | External Reference system filter. Supply with externalObject and externalId for exact reconciliation lookup. |
| externalObject | query | string | External Reference object filter. Supply with externalSystem and externalId. |
| externalId | query | string | External Reference id filter. Supply with externalSystem and externalObject. |
Request body
This endpoint does not accept a JSON request body.
Responses
Case list envelope
#/components/schemas/CaseListEnvelope
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
Missing or invalid organization API key
#/components/schemas/OrgApiError
Organization billing access or an endpoint-specific business quota denied the request
#/components/schemas/OrgApiError
Missing required scope: cases:read
#/components/schemas/OrgApiError
Rate limit exceeded
#/components/schemas/OrgApiError
Errors
Static examples
curl -X GET "$SOLAROS_BASE_URL/api/v1/cases" \ -H "Authorization: Bearer $SOLAROS_API_KEY"