POST
POST /repos/{owner}/{repo}/releases/generate-notes — GitHub API
GitHub token (required); https://api.github.com
GitHub APIGenerate release notes content for a release
- 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
→ 350 tokens · Vary: Accept
→ 350 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/releases/generate-notes' \ -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 '{ "tag_name": "example-tag-name"}'
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. |
| tag_name | body | string | Yes | The tag name for the release. This can be an existing tag or a new one. |
| target_commitish | body | string | No | Specifies the commitish value that will be the target for the release's tag. Required if the supplied tag_name does not reference an existing tag. Ignored if the tag_name already exists. |
| previous_tag_name | body | string | No | The name of the previous tag to use as the starting point for the release notes. Use to manually specify the range for the set of changes considered as part this release. |
| configuration_file_path | body | string | No | Specifies a path to a file in the repository containing configuration settings used for generating the release notes. If unspecified, the configuration file located in the repository at '.github/release.yml' or '.github/release.yaml' will be used. If that is not present, the default configuration will be used. |
Response 200 OK
{
"name": "Release v1.0.0 is now available!",
"body": "string"
} Get a free GitHub API key → sponsored Affiliate link - we may earn a commission, at no extra cost to you.