changes works across Git providers. A change can be a pull request or merge request; its provider-specific number is returned separately as external_id.
Choose a resource
Each resource supports
GET, HEAD, and OPTIONS. HEAD performs the same authenticated read and returns headers without a body. OPTIONS returns the supported methods without authenticating or returning resource data. Reads have no request body. The endpoint references provide the complete query parameters, response schemas, and response codes.
Access and organization selection
Use a non-agentic CodeRabbit API key whose owner can be resolved to a current Triage viewer. The viewer must have Triage access and access to the repositories being read. An API key, workspace administrator role, or team membership does not grant access to every repository.- Organization keys default to their bound organization. If you supply
org_id, it must identify that organization. - Workspace tokens and Git-provider instance keys require one
org_idon every Triage request. Triage has no workspace-wide or instance-wide query, and does not acceptALL. - Workspace tokens also require a current workspace administrator with a uniquely linked account for the selected Git provider. A workspace login alone does not establish that provider identity.
org_id is the Git providerâs native organization ID. For workspace organization discovery, use provider_organization_id from List organizations, not the CodeRabbit UUID in id. The responseâs meta.org_id uses the same native ID. An ambiguous ID within the keyâs workspace or instance is rejected.
Read your queue
This example selects one organization and the changes that require the key ownerâs attention:view=mine includes eligible changes in your personal Triage view. Add attention=required for your action queue; mine alone does not mean every returned change needs your action.
For a team queue, first list teams, then send view=team and the returned teamâs id as team_id. Omit team_id for a personal queue.
Use returned identifiers unchanged:
data[].idselects a change for detail and history requests. Do not substitute itsexternal_idor provider URL.data[].repository.idis the value for the listâsrepository_idfilter. Do not substitute a native repository number or an ID from another API.- A teamâs
idis the value forteam_id; itsexternal_idis for provider context.
Filter, group, and page results
Send each query parameter once. Filters with several values use one comma-separated string, such aspriority=p0,p1; repeated parameters and array syntax are rejected. Values within a filter combine with OR, and different filters combine with AND. Unknown query parameters are rejected.
The returned focus_state is now, next, or null. Use the unassigned filter value to select changes without a focus assignment. You can also use focus_state as a grouping axis. Filtering and changing the sort order do not recalculate Now/Next allocation. A subgroup requires an enabled, different top-level group.
The groups counts and meta.total_count describe the full filtered result you can access. The data array is one page in the selected global order; it is not a separate page for each group. Use each itemâs group_key and subgroup_key to associate it with the returned counts.
To read another page, copy next_cursor into cursor and repeat the original organization, filters, grouping, sort, and limit. Stop when next_cursor is null. Cursors expire after 15 minutes. If a cursor expires or no longer matches your access or query, start again without it.
Pages reflect a live queue. Changes can move between pages as their ranking changes, so deduplicate by change id when collecting several pages. Pagination does not create a frozen export.
Interpret the fields
Assessment objects include
status, value, observed_at, and revision. Use value only when status is available. unknown, stale, and unsupported have a null value; none means a measured zero, a negative recommendation, or permission to act. Observation timestamps and revisions can also be null. meta.generated_at is the response time, not a freshness guarantee for every field.
Detail responses add participants, readiness, diff information, and closure assessments. blocked_change_count is currently unknown. History contains only retained priority and close-candidacy transitions. An empty history is valid; meta.history_complete is currently null because completeness is unknown. History is not a complete Git-provider audit log.
Provider coverage
Resource names are independent of the Git provider, but availability follows Triageâs provider, viewer, and organization support. Team discovery and team views currently require GitHub Cloud on CodeRabbit Cloud. Unsupported provider or view requests returncapability_unavailable; organization access restrictions can return triage_access_denied. Neither error is an empty successful result.
Self-hosted CodeRabbit deployments do not support focus_state filtering or grouping. Omit that filter and choose another grouping axis when using such a deployment. A self-managed Git provider connected to CodeRabbit Cloud is a different deployment type.
Optional assessments may be missing even for supported providers. Use the responseâs observation status for each field. A provider name accepted by the filter does not establish that Triage is enabled for your organization or deployment.
Handle errors
Triage errors useapplication/problem+json with a stable code and a request_id. Use invalid_params, when present, to correct query controls. Keep the request ID when contacting support; do not share your API key.
- For
cursor_expiredorcursor_mismatch, start a new pagination sequence. - For
viewer_identity_required, check the key ownerâs linked provider account. Fororg_access_deniedortriage_access_denied, check organization selection and current access. - For
capability_unavailable, check provider and view support before retrying. - For
rate_limit_exceeded, wait for the number of seconds inRetry-After. - For
provider_connection_unavailable, check the provider connection. For temporary dependency failures or timeouts, retry later with bounded backoff.
Cache-Control: private, no-store. A successful read reports stored Triage information; it is not authorization to merge, close, or otherwise change a resource.
Whatâs next
List Triage changes
Explore every filter, grouping option, and response field.
How Triage prioritizes
Understand the evidence behind priority and close recommendations.