---
title: "Get merge readiness for a trail"
method: GET
path: "/api/v1/trails/{forge}/{owner}/{repo}/{number}/mergeability"
tags: ["Trails"]
---

# Get merge readiness for a trail

`GET /api/v1/trails/{forge}/{owner}/{repo}/{number}/mergeability`

## Path parameters

- `forge` string, required
- `owner` string, required
- `repo` string, required
- `number` string, required

## Response `200`

Trail mergeability

- object
  - `gates` object[], required
    - `reviewers` object[]
      - `login` string, required
      - `state` 'pending' | 'approved' | 'stale' | 'changes_requested' | 'excluded', required
      - `reviewed_head_sha` string, nullable, required
      - `reason` string, nullable, required
    - `runner_ids` string[]
    - `state` 'not_run' | 'running' | 'evaluated' | 'stale' | 'disabled' | 'not_applicable' | 'configuration_error'
    - `outcome` 'passed' | 'failed' | 'errored', nullable
    - `evaluated_at_sha` string, nullable
    - `stale_reason` 'head_moved' | 'config_changed', nullable
    - `finding_count` number, nullable
    - `id` string, required
    - `gate_definition_id` string, required
    - `gate_key` string, required
    - `gate_type` 'approvals' | 'findings' | 'checks' | 'up_to_date' | 'base_checks' | 'eval', required
    - `blocking` boolean, required
    - `status` 'passed' | 'failed' | 'pending' | 'error' | 'skipped', required
    - `head_sha` string, nullable, required
    - `value` unknown, required
    - `rationale` string, nullable, required
    - `created_at` string, required
    - `completed_at` string, nullable, required
  - `head_sha` string, nullable, required
  - `checks` object, required
    - `availability` 'available' | 'unavailable' | 'not_applicable', required
    - `runs` object[], required
      - `id` number, required
      - `name` string, required
      - `status` string, required
      - `conclusion` string, nullable, required
      - `html_url` string, nullable, required
      - `started_at` string, nullable, required
      - `completed_at` string, nullable, required
      - `app_name` string, nullable, required
      - `required` boolean
  - `behind_by` number, required
  - `comparison_status` 'available' | 'unknown', required
  - `conflict_status` 'clean' | 'conflicting' | 'unknown', required
  - `mergeable` boolean, required
  - `bypass_policy` 'nobody' | 'admins' | 'admins_author', required

## Other responses

- `404` — Trail not found
- `409` — Repository has no GitHub App installation
- `503` — GitHub App token temporarily unavailable

## Changes

- **2026-09-25** `14c8416feab7` — 1 breaking, 16 info
  - removed the required property `approval_gate_passed` from the response with the `200` status
  - added the optional property `gates/items/evaluated_at_sha` to the response with the `200` status
  - added the optional property `gates/items/finding_count` to the response with the `200` status
  - added the optional property `gates/items/outcome` to the response with the `200` status
  - …13 more
- **2026-09-24** `ba1409f8f36b` — 1 warning
  - added the new `base_checks` enum value to the `gates/items/gate_type` response property for the response status `200`
- **2026-09-24** `0eb4157af08b` — 3 breaking, 3 info
  - the `checks` response's property type changed from `array` to `object` for status `200`
  - removed the required property `checks_passed` from the response with the `200` status
  - removed the required property `checks_status` from the response with the `200` status
  - added the optional property `checks/availability` to the response with the `200` status
  - …2 more
- **2026-09-21** `03a8a4babd7d` — 1 info
  - added the required property `conflict_status` to the response with the `200` status

[Change history](https://skmtc.dev/entire/apis/entire-api/changes/api/v1/trails/:forge/:owner/:repo/:number/mergeability/get.md)

---

[API](https://skmtc.dev/entire/apis/entire-api.md) · [All operations](https://skmtc.dev/entire/apis/entire-api/llms.txt) · [OpenAPI document](https://skmtc.dev/entire/apis/entire-api/revisions/d69a682d6e44?raw)
