List handoff tickets for a project
const url = 'https://example.com/api/projects/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/tickets?status=open&role=frontend&slim=0&limit=1000&offset=0';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://example.com/api/projects/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/tickets?status=open&role=frontend&slim=0&limit=1000&offset=0' \ --header 'Authorization: Bearer <token>'Returns project handoff tickets (HO-* refs). Supports filters, offset/limit pagination,
and cursor pagination (cannot combine cursor with role filter). Pass slim=1 to omit
heavy text fields from each ticket row.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”Project UUID
Query Parameters
Section titled “Query Parameters ”Comma-separated stage filter (backlog, up_next, in_progress, validation, live)
Comma-separated ship filters (merged, deployed, deploy_failed, deploying)
Milestone UUID or none for unassigned
Search title, description, or ticket number
Base64url cursor from prior next_cursor
When 1, omit heavy ticket text fields from each row
Responses
Section titled “ Responses ”Project tickets
object
Kanban/list row. Default mode includes full ticket fields; slim=1 omits heavy text
(description, contracts, notes) per handler.
object
Full ticket body; omitted from list rows when slim=1
Requester-provided implementation guidance for the assignee
Alias of request_type
Alias of priority
Alias of suggested_resolution
Assigned ticket roles
Row from handoff_request_roles embedded on ticket list/detail responses.
object
Present on list responses
Present on list responses (HO-{number}-{project-slug})
Row from handoff_request_roles embedded on ticket list/detail responses.
object
Example
HO-42-my-projectTotal rows matching filters (PostgREST count)
Whether the current user can triage tickets (billing admin or superadmin)
Present when more pages exist (cursor mode only)
object
Example
tickets.v2Headers
Section titled “Headers ”Weak validator for conditional GET (304 when If-None-Match matches)
Not modified (If-None-Match matched)
Invalid request
object
Human-readable error message
Stable machine-readable error code for client branching
First validation message per field path
object
Structured validation issues (Zod)
object
Seconds until rate limit resets (429 responses)
Not authenticated
object
Human-readable error message
Stable machine-readable error code for client branching
First validation message per field path
object
Structured validation issues (Zod)
object
Seconds until rate limit resets (429 responses)
True if re-linking GitHub may fix the issue
Forbidden
object
Human-readable error message
Stable machine-readable error code for client branching
First validation message per field path
object
Structured validation issues (Zod)
object
Seconds until rate limit resets (429 responses)