Skip to main content
POST
Search tickets in your workspace. Send filters in the request body — this endpoint uses the same query builder as the dashboard, so you can filter on any ticket column with operators like eq, in, gte, and lte. Workspace scope is applied for you. You never need to filter by workspaceId.

Request body

object
Column filters. Keys are ticket field names; values are operator objects.Examples: { "statusId": { "eq": "..." } }, { "priority": { "in": ["high", "urgent"] } }, { "updatedAt": { "gte": "2026-01-01T00:00:00.000Z" } }
object
default:"{ \"limit\": 25, \"offset\": 0 }"
limit — max rows per page (default 25, max 100). offset — rows to skip.
array
Sort instructions, e.g. [{ "column": "updatedAt", "direction": "desc" }].
array
Optional list of columns to return. Omit to get full ticket rows.

Response

array
Matching ticket rows (full or partial if select is set).
boolean
true if more results exist beyond this page. Increment offset by limit to fetch the next page.

Examples

Without select, each item in data is a full ticket row. With select, only the requested columns are returned.
Large workspaces: keep limit at 25–100 and page with offset until hasNextPage is false. Tighter filters (status, assignee, dates) keep each page fast.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Headers

x-api-key
string
required
Minimum string length: 1
x-workspace-slug
string
required
x-workspace-id
string<uuid>
required
Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$

Body

application/json
filters
object
pagination
object
sort
object[]
select
object

Response

Successful response

data
object[]
required
metadata
object
required