apicheats.dev github/llms.txt Raw .md
POST

POST /repos/{owner}/{repo}/git/commits — GitHub API

GitHub token (required); https://api.github.com

GitHub API

Create a commit

Base URL
https://api.github.com
Auth
Authorization: Bearer <GITHUB_API_KEY>
Last verified
2026-10-20 · upstream hash matched
Actions Try in browser→
Agents: curl -H "Accept: text/markdown" this URL
→ 370 tokens · Vary: Accept

Critical gotchas

GitHub recommends an Accept: application/vnd.github+json header and an explicit X-GitHub-Api-Version header.

Fine-grained tokens only authorize repositories and permissions selected when the token is created.

cURL

curl -X POST 'https://api.github.com/repos/example-owner/example-repo/git/commits' \  -H "Authorization: Bearer $GITHUB_TOKEN" \  -H 'Accept: application/vnd.github+json' \  -H 'X-GitHub-Api-Version: 2026-03-10' \  -H 'Content-Type: application/json' \  -d '{  "message": "example-message",  "tree": "example-tree"}'

Parameters

Name In Type Required Description
owner path string Yes The account owner of the repository. The name is not case sensitive.
repo path string Yes The name of the repository without the `.git` extension. The name is not case sensitive.
message body string Yes The commit message
tree body string Yes The SHA of the tree object this commit points to
parents body string[] No The full SHAs of the commits that were the parents of this commit. If omitted or empty, the commit will be written as a root commit. For a single parent, an array of one SHA should be provided; for a merge commit, an array of more than one should be provided.
author body object No Information about the author of the commit. By default, the `author` will be the authenticated user and the current date. See the `author` and `committer` object below for details.
committer body object No Information about the person who is making the commit. By default, `committer` will use the information set in `author`. See the `author` and `committer` object below for details.
signature body string No The [PGP signature](https://en.wikipedia.org/wiki/Pretty_Good_Privacy) of the commit. GitHub adds the signature to the `gpgsig` header of the created commit. For a commit signature to be verifiable by Git or GitHub, it must be an ASCII-armored detached PGP signature over the string commit as it would be written to the object database. To pass a `signature` parameter, you need to first manually create a valid PGP signature, which can be complicated. You may find it easier to [use the command line](https://git-scm.com/book/id/v2/Git-Tools-Signing-Your-Work) to create signed commits.

Response 200 OK

{
  "sha": "7638417db6d59f3c431d3e1f261cc637155684cd",
  "node_id": "string",
  "url": "https://example.com",
  "author": {
    "date": "2014-08-09T08:02:04+12:00",
    "email": "[email protected]",
    "name": "Monalisa Octocat"
  },
  "committer": {
    "date": "2014-08-09T08:02:04+12:00",
    "email": "[email protected]",
    "name": "Monalisa Octocat"
  },
  "message": "Fix #42",
  "tree": {
    "sha": "7638417db6d59f3c431d3e1f261cc637155684cd",
    "url": "https://example.com"
  },
  "parents": [
    {
      "sha": "7638417db6d59f3c431d3e1f261cc637155684cd",
      "url": "https://example.com",
      "html_url": "https://example.com"
    }
  ],
  "verification": {
    "verified": true,
    "reason": "string",
    "signature": "string",
    "payload": "string",
    "verified_at": "string"
  },
  "html_url": "https://example.com"
}
Get a free GitHub API key → sponsored

Affiliate link - we may earn a commission, at no extra cost to you.