Skip to content

GitHub: Create a commit

GitHub git.gitCreateCommit: arguments, response, policy and SDK examples.

← Git operations · Get started

Operation github.git_create_commit

Provider route: POST /repos/{owner}/{repo}/git/commits. Alter supplies the connection’s credentials and routing.

Install @alter-ai/sdk @alter-ai/github with npm, or alter-sdk-github with pip. Supply your connected customer’s grant ID and the arguments described below.

import { App } from "@alter-ai/sdk";
import { GitHubIntegration } from "@alter-ai/github";
async function execute(input: Parameters<GitHubIntegration["git"]["gitCreateCommit"]>[0]) {
const app = new App({ apiKey: process.env.ALTER_API_KEY! });
try {
const provider = new GitHubIntegration(app, { grantId: process.env.PROVIDER_GRANT_ID! });
const call = await provider.git.gitCreateCommit(input);
const result = await call.wait();
return result.bodyJson();
} finally {
await app.close();
}
}
import os
from alter_sdk import App
from alter_sdk_github import GitHubIntegration
async def execute(arguments):
async with App(api_key=os.environ["ALTER_API_KEY"]) as app:
provider = GitHubIntegration(app, {"grant_id": os.environ["PROVIDER_GRANT_ID"]})
call = await provider.git.git_create_commit(arguments)
result = await call.wait()
return result.body_json()
FieldTypePresenceDescription and constraints
$objectRootAdditional keys: not allowed
pathobjectRequired within parentAdditional keys: not allowed
path.ownerstringRequired within parent
path.repostringRequired within parent
bodyobjectRequired within parent
body.authorobjectOptionalInformation 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.
body.author.datestringOptionalIndicates when this commit was authored (or committed). This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
Format: date-time
body.author.emailstringRequired within parentThe email of the author (or committer) of the commit
body.author.namestringRequired within parentThe name of the author (or committer) of the commit
body.committerobjectOptionalInformation 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.
body.committer.datestringOptionalIndicates when this commit was authored (or committed). This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
Format: date-time
body.committer.emailstringOptionalThe email of the author (or committer) of the commit
body.committer.namestringOptionalThe name of the author (or committer) of the commit
body.messagestringRequired within parentThe commit message
body.parentsarrayOptionalThe 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.
body.parents[]stringEach item
body.signaturestringOptionalThe [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.
body.treestringRequired within parentThe SHA of the tree object this commit points to

Response media type: application/json. The table describes the pinned successful response. Referenced models link to their complete fields.

FieldTypePresenceDescription and constraints
$ModelRootExpand Create a commit — response body

Referenced models: Create a commit — response body

Create a commit — response body
FieldTypePresenceDescription and constraints
$objectRootLow-level Git commit operations within a repository
authorobjectRequired within parentIdentifying information for the git-user
author.datestringRequired within parentTimestamp of the commit
Format: date-time
author.emailstringRequired within parentGit email address of the user
author.namestringRequired within parentName of the git user
committerobjectRequired within parentIdentifying information for the git-user
committer.datestringRequired within parentTimestamp of the commit
Format: date-time
committer.emailstringRequired within parentGit email address of the user
committer.namestringRequired within parentName of the git user
html_urlstringRequired within parentFormat: uri
messagestringRequired within parentMessage describing the purpose of the commit
node_idstringRequired within parent
parentsarrayRequired within parent
parents[]objectEach item
parents[].html_urlstringRequired within parentFormat: uri
parents[].shastringRequired within parentSHA for the commit
parents[].urlstringRequired within parentFormat: uri
shastringRequired within parentSHA for the commit
treeobjectRequired within parent
tree.shastringRequired within parentSHA for the commit
tree.urlstringRequired within parentFormat: uri
urlstringRequired within parentFormat: uri
verificationobjectRequired within parent
verification.payloadJSONRequired within parent
verification.payload (anyOf 1)stringAlternative
verification.payload (anyOf 2)nullAlternative
verification.reasonstringRequired within parent
verification.signatureJSONRequired within parent
verification.signature (anyOf 1)stringAlternative
verification.signature (anyOf 2)nullAlternative
verification.verifiedbooleanRequired within parent
verification.verified_atJSONRequired within parent
verification.verified_at (anyOf 1)stringAlternative
verification.verified_at (anyOf 2)nullAlternative

SDK function policy ID: github.git_create_commit. Catalog operation: git/create-commit. Rules can name either ID; function rules distinguish managed calls and conservatively cover raw calls sharing the route. Existing grant permissions and policy rules apply. wait() returns an immediate result or waits for a required approval; it never approves the request itself. Persist the approval ID to resume after a restart.

Provider errors retain their response; JSON decoding raises ProviderAPIError for provider failures. ManagedOperationError identifies contract/input/retention errors. See error handling and provider-specific behavior. Sensitive input may be refused before approval storage. A decoding error never resubmits a write.

Pinned headers: {"X-GitHub-Api-Version": "2026-03-10", "User-Agent": "Alter", "Accept": "application/vnd.github+json"}

Official provider source

Report an issue with this page

Necessary

Required for sign-in, security, authorization, and remembering your choices.

Always active

Analytics

Helps us understand which product and documentation features are useful.

Performance diagnostics

Uses performance tracing and privacy-masked session replay to diagnose problems.

You can change these choices at any time from Cookie settings.