Skip to main content
The Releases API lets you generate, edit, and distribute release notes. You point Swisstools at one or more GitHub repository URLs and a date range, and the AI generates a structured changelog from the commit history. From there you can refine the draft, publish it, export it as Markdown, and send it to a Slack channel or email list. All release endpoints require session authentication. See Authentication for details. Release status values: processing (AI generation in progress), draft (ready for editing), published (finalized and visible).

List Releases

GET /api/projects/:projectId/releases Returns all releases for the specified project, ordered by creation date descending. Path Parameters
string
required
The UUID of the project.
Request
Response

Generate Release

POST /api/projects/:projectId/releases/generate Triggers AI generation of release notes from GitHub commits in the given date range. The release is created immediately with status: "processing" and transitions to status: "draft" when the AI finishes (or status: "draft" with an errorMessage if generation fails). Poll the Get Release endpoint to check progress. Path Parameters
string
required
The UUID of the project.
Request Body
string
required
Start of the commit date range, ISO 8601 format (e.g., 2024-01-01).
string
required
End of the commit date range, ISO 8601 format (e.g., 2024-01-31).
array
required
One or more GitHub repository URLs to pull commits from (e.g., ["https://github.com/org/repo"]).
Request
Response201 Created

Get Release

GET /api/projects/:projectId/releases/:releaseId Returns a single release by its ID. Use this to poll for status transitions from processing to draft. Path Parameters
string
required
The UUID of the project.
string
required
The UUID of the release.
Request
Response

Update Release

PUT /api/projects/:projectId/releases/:releaseId Updates the title or content of a release. You can edit draft releases before publishing. Path Parameters
string
required
The UUID of the project.
string
required
The UUID of the release to update.
Request Body
string
Updated release title.
string
Updated Markdown content.
Request
Response

Delete Release

DELETE /api/projects/:projectId/releases/:releaseId Permanently deletes a release and all its attachments. Path Parameters
string
required
The UUID of the project.
string
required
The UUID of the release to delete.
Request
Response

Publish Release

POST /api/projects/:projectId/releases/:releaseId/publish Marks a draft release as published and records the current timestamp in publishedAt. Path Parameters
string
required
The UUID of the project.
string
required
The UUID of the release to publish.
Request
Response

Export Release

GET /api/projects/:projectId/releases/:releaseId/export Returns the release content as a downloadable Markdown file. Path Parameters
string
required
The UUID of the project.
string
required
The UUID of the release to export.
Request
Response200 OK with Content-Type: text/markdown and a Content-Disposition: attachment header containing the Markdown content.

Send to Slack

POST /api/projects/:projectId/releases/:releaseId/send-slack Sends the release to the Slack channel configured in the project’s release settings. Requires a Slack integration to be set up for the project. Path Parameters
string
required
The UUID of the project.
string
required
The UUID of the release to send.
Request
Response

Send via Email

POST /api/projects/:projectId/releases/:releaseId/send-email Sends the release to the email recipients configured in the project’s release settings. Path Parameters
string
required
The UUID of the project.
string
required
The UUID of the release to send.
Request
Response

Release Object

string
UUID that uniquely identifies the release.
string
UUID of the project that owns this release.
string
The release title, editable after generation.
string
The release body in Markdown format. Empty string while status is processing.
string
Current lifecycle state. One of processing, draft, or published.
string
ISO 8601 timestamp for the start of the commit range used to generate this release.
string
ISO 8601 timestamp for the end of the commit range.
array
Array of GitHub repository URLs that were analyzed.
integer
Number of commits included in the generated release notes.
string
Populated if AI generation failed; null otherwise.
string
ISO 8601 timestamp of when the release was published, or null if still a draft.
string
ISO 8601 timestamp of creation.
string
ISO 8601 timestamp of the last update.