---
title: "Merge a branch"
method: POST
path: "/repos/{owner}/{repo}/merges"
tags: ["repos"]
---

# Merge a branch

`POST /repos/{owner}/{repo}/merges`

## Path parameters

- `owner` string, required
- `repo` string, required

## Request body

- object
  - `base` string, required — The name of the base branch that the head will be merged into.
  - `head` string, required — The head to merge. This can be a branch name or a commit SHA1.
  - `commit_message` string — Commit message to use for the merge commit. If omitted, a default message will be used.

## Response `201`

Successful Response (The resulting merge commit)

- Commit — Commit
  - `url` string, uri, required
  - `sha` string, required
  - `node_id` string, required
  - `html_url` string, uri, required
  - `comments_url` string, uri, required
  - `commit` object, required
    - `url` string, uri, required
    - `author` NullableGitUser, nullable, required — Metaproperties for Git author/committer information.
      - `name` string
      - `email` string
      - `date` string
    - `committer` NullableGitUser, nullable, required — Metaproperties for Git author/committer information.
      - `name` string
      - `email` string
      - `date` string
    - `message` string, required
    - `comment_count` integer, required
    - `tree` object, required
      - `sha` string, required
      - `url` string, uri, required
    - `verification` Verification
      - `verified` boolean, required
      - `reason` string, required
      - `payload` string, nullable, required
      - `signature` string, nullable, required
  - `author` NullableSimpleUser, nullable, required — A GitHub user.
    - `name` string, nullable
    - `email` string, nullable
    - `login` string, required
    - `id` integer, required
    - `node_id` string, required
    - `avatar_url` string, uri, required
    - `gravatar_id` string, nullable, required
    - `url` string, uri, required
    - `html_url` string, uri, required
    - `followers_url` string, uri, required
    - `following_url` string, required
    - `gists_url` string, required
    - `starred_url` string, required
    - `subscriptions_url` string, uri, required
    - `organizations_url` string, uri, required
    - `repos_url` string, uri, required
    - `events_url` string, required
    - `received_events_url` string, uri, required
    - `type` string, required
    - `site_admin` boolean, required
    - `starred_at` string
  - `committer` NullableSimpleUser, nullable, required — A GitHub user.
    - `name` string, nullable
    - `email` string, nullable
    - `login` string, required
    - `id` integer, required
    - `node_id` string, required
    - `avatar_url` string, uri, required
    - `gravatar_id` string, nullable, required
    - `url` string, uri, required
    - `html_url` string, uri, required
    - `followers_url` string, uri, required
    - `following_url` string, required
    - `gists_url` string, required
    - `starred_url` string, required
    - `subscriptions_url` string, uri, required
    - `organizations_url` string, uri, required
    - `repos_url` string, uri, required
    - `events_url` string, required
    - `received_events_url` string, uri, required
    - `type` string, required
    - `site_admin` boolean, required
    - `starred_at` string
  - `parents` object[], required
    - `sha` string, required
    - `url` string, uri, required
    - `html_url` string, uri
  - `stats` object
    - `additions` integer
    - `deletions` integer
    - `total` integer
  - `files` DiffEntry[]
    - `sha` string, required
    - `filename` string, required
    - `status` 'added' | 'removed' | 'modified' | 'renamed' | 'copied' | 'changed' | 'unchanged', required
    - `additions` integer, required
    - `deletions` integer, required
    - `changes` integer, required
    - `blob_url` string, uri, required
    - `raw_url` string, uri, required
    - `contents_url` string, uri, required
    - `patch` string
    - `previous_filename` string

## Other responses

- `204` — Response when already merged
- `403` — Forbidden
- `404` — Not Found when the base or head does not exist
- `409` — Conflict when there is a merge conflict
- `422` — Validation failed, or the endpoint has been spammed.

---

[API](https://skmtc.net/github/apis/github-v3-rest-api-7.md) · [All operations](https://skmtc.net/github/apis/github-v3-rest-api-7/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/github/github-v3-rest-api-7/versions/5438365412fe/schema)
