---
title: "Get the current status of the merge queue"
method: GET
path: "/repos/{owner}/{repository}/merge-queue/status"
tags: ["merge_queue"]
---

# Get the current status of the merge queue

`GET /repos/{owner}/{repository}/merge-queue/status`

Get the current status of the speculative checks, batches, and queued pull requests in the merge queue

## Path parameters

- `owner` string, required — The owner of the repository
- `repository` string, required — The name of the repository

## Query parameters

- `branch` string, nullable — The name of the branch

## Response `200`

Successful Response

- MergeQueueStatus
  - `batches` MergeQueueStatusBatchWithSubBatch[], required
    - `id` string, uuid, required
    - `name` string, required
    - `parent_ids` string[], required
    - `status` BatchStatus, required
      - `code` 'running' | 'bisecting' | 'preparing' | 'failed' | 'merged' | 'waiting_for_merge' | 'waiting_for_previous_batches' | 'waiting_for_requeue' | 'waiting_schedule' | 'waiting_for_batch' | 'waiting_for_checks_slot' | 'frozen', required
      - `batch_filled_slots` integer, nullable
      - `max_batch_slots` integer, nullable
      - `batch_max_start_at` string, date-time, nullable
      - `retries` integer
      - `max_retries` integer
    - `started_at` string, date-time, nullable, required
    - `estimated_merge_at` string, date-time, nullable, required
    - `estimated_ci_finish_at` string, date-time, nullable, required
    - `ci_finished_at` string, date-time, nullable, required
    - `scopes` string[], required
    - `queue_rule_name` string, required
    - `checks_summary` BatchChecksSummary, required
      - `passed` integer, required
      - `total` integer, required
    - `pull_requests` MergeQueueStatusPullRequest[], required
      - `number` integer, required
      - `title` string, required
      - `url` string, required
      - `author` PullRequestAuthor, required
        - `id` integer, required
        - `login` string, required
      - `queued_at` string, date-time, required
      - `priority_alias` string, required
      - `priority_rule_name` string, required
      - `labels` string[], required
      - `scopes` string[], required
      - `all_scopes` boolean, nullable — Whether the pull request impacts every scope (a merge-queue barrier that cannot run in parallel with any other scope). `false` for an ordinary scoped pull request.
      - `github_labels` PullRequestLabel[], nullable
        - `id` integer, required
        - `name` string, required
        - `color` string, required
        - `default` boolean, required
      - `estimated_merge_at` string, date-time, nullable
      - `estimated_ci_finish_at` string, date-time, nullable
      - `conflict_with_pull_requests` integer[], nullable
      - `batch_reason` BatchReason — Why a PR shares its batch with the other PRs in it. Re-derived at serialization time from each member's persisted similarity signals — the same ``scopes`` / ``changed_directories`` the batching algorithm groups on — so it stays correct as a batch is bisected and members leave. It reports the signal the batch's *current* members actually share, not a replay of the formation-time greedy pick order. ``None`` when the batch holds a single PR (nothing to explain) or for a not-yet-batched waiting PR.
        - `kind` 'scope' | 'directory' | 'queue_order', required
        - `shared_scopes` string[], required
        - `shared_directories` string[], required
        - `peer_pull_request_numbers` integer[], required
        - `affinity_score` number, required
      - `is_frozen` boolean, nullable — Whether an ongoing scheduled freeze holds this pull request's merge, independent of its CI status — it can be running CI and `is_frozen` at once. `false` when no freeze affects it.
      - `dequeue_requested` boolean, nullable — Whether a manual removal from the queue is pending for this pull request: it was removed via the 'Remove from queue' action / `@mergifyio dequeue` command (or is a stacked pull request that cascade removes with one), and is awaiting completion. The pull request remains listed until it is actually removed. `false` when no manual removal is pending; automatic dequeues (merge, CI failure, push) do not set it.
      - `depends_on_pull_requests` integer[], nullable — Pull request numbers this one is queued behind because it depends on them: the same-repo stack predecessors the merge queue holds it behind (it declared a `Depends-On:` on the stack). It merges after them. `null` when there is no such queued dependency.
    - `all_scopes` boolean, nullable — Whether the batch impacts every scope (a merge-queue barrier that cannot run in parallel with any other batch). `false` for an ordinary scoped batch.
    - `checks_timeout_at` string, date-time, nullable — When the checks will time out and the batch be dequeued, if a checks timeout applies
    - `intermediate_results_skipped` boolean — True when this batch merged (or is set to merge) without its own CI passing, because a later downstream batch that includes its changes succeeded (skip_intermediate_results).
    - `queue_pull_request_number` integer, nullable — The number of the pull request the batch's checks run on: the batch pull request, or the user's own pull request for in-place checks. None while the batch has no active check pull request (still preparing, or its creation failed).
    - `sub_batches` MergeQueueStatusBatchWithSubBatch[], nullable
  - `waiting_pull_requests` MergeQueueStatusPullRequest[], required
    - `number` integer, required
    - `title` string, required
    - `url` string, required
    - `author` PullRequestAuthor, required
      - `id` integer, required
      - `login` string, required
    - `queued_at` string, date-time, required
    - `priority_alias` string, required
    - `priority_rule_name` string, required
    - `labels` string[], required
    - `scopes` string[], required
    - `all_scopes` boolean, nullable — Whether the pull request impacts every scope (a merge-queue barrier that cannot run in parallel with any other scope). `false` for an ordinary scoped pull request.
    - `github_labels` PullRequestLabel[], nullable
      - `id` integer, required
      - `name` string, required
      - `color` string, required
      - `default` boolean, required
    - `estimated_merge_at` string, date-time, nullable
    - `estimated_ci_finish_at` string, date-time, nullable
    - `conflict_with_pull_requests` integer[], nullable
    - `batch_reason` BatchReason — Why a PR shares its batch with the other PRs in it. Re-derived at serialization time from each member's persisted similarity signals — the same ``scopes`` / ``changed_directories`` the batching algorithm groups on — so it stays correct as a batch is bisected and members leave. It reports the signal the batch's *current* members actually share, not a replay of the formation-time greedy pick order. ``None`` when the batch holds a single PR (nothing to explain) or for a not-yet-batched waiting PR.
      - `kind` 'scope' | 'directory' | 'queue_order', required
      - `shared_scopes` string[], required
      - `shared_directories` string[], required
      - `peer_pull_request_numbers` integer[], required
      - `affinity_score` number, required
    - `is_frozen` boolean, nullable — Whether an ongoing scheduled freeze holds this pull request's merge, independent of its CI status — it can be running CI and `is_frozen` at once. `false` when no freeze affects it.
    - `dequeue_requested` boolean, nullable — Whether a manual removal from the queue is pending for this pull request: it was removed via the 'Remove from queue' action / `@mergifyio dequeue` command (or is a stacked pull request that cascade removes with one), and is awaiting completion. The pull request remains listed until it is actually removed. `false` when no manual removal is pending; automatic dequeues (merge, CI failure, push) do not set it.
    - `depends_on_pull_requests` integer[], nullable — Pull request numbers this one is queued behind because it depends on them: the same-repo stack predecessors the merge queue holds it behind (it declared a `Depends-On:` on the stack). It merges after them. `null` when there is no such queued dependency.
  - `mode` 'serial' | 'parallel' | 'isolated', required
  - `scope_queues` object
  - `pause` MergeQueuePauseResponse
    - `paused` boolean, required — Whether the merge queue is currently paused
    - `reason` string, nullable — The reason of the merge queue pause
    - `paused_at` string, date-time, nullable — The date and time when the merge queue was paused

## Other responses

- `403` — Forbidden
- `404` — Not found
- `409` — Conflict
- `422` — Unprocessable entity

---

[API](https://skmtc.net/mergify/apis/mergify-api.md) · [All operations](https://skmtc.net/mergify/apis/mergify-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/mergify/mergify-api/revisions/ae394a06c465/schema)
