ShipRelease REST API
Programmatic access to generate, retrieve, and manage release notes. Available on the Business plan.
API access is available on the Business plan. View pricing →
Authentication
All API requests must include your API key in the Authorization header:
Authorization: Bearer rf_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxx
Generate your API key in Settings → API Keys. Keep it secret — treat it like a password.
Base URL
https://shiprelease.app/api/v1
Endpoints
/releases/generateGenerate release notes by analyzing commits and diffs between two SHAs.
{
"repo_full_name": "your-org/your-repo", // required
"base_sha": "abc1234", // required
"head_sha": "def5678", // required
"format": "product", // technical | product | customer
"version": "v2.1.0" // optional
}{
"id": "rel_01j9x...",
"title": "v2.1.0 — Dashboard Improvements & Performance",
"content": "## ✨ New\n- ...",
"has_breaking_changes": false,
"breaking_changes_summary": "",
"categories": {
"added": ["New dark mode toggle in settings"],
"fixed": ["Fixed authentication timeout on slow connections"],
"changed": [],
"removed": [],
"security": [],
"breaking": []
},
"created_at": "2026-05-06T14:32:00Z"
}/releasesList all generated releases. Supports pagination.
?repo=your-org/your-repo // filter by repo (optional) &limit=20 // default 20, max 100 &cursor=rel_01j9x... // for pagination
/releases/:idRetrieve a specific release by ID.
/releases/:idDelete a release. This is irreversible.
Rate limits
- 60 requests per minute per API key.
- 100 generations per hour.
- Rate limit headers are included in every response: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
- Exceeding the limit returns HTTP 429 — retry after the time in the Retry-After header.
Error codes
400Bad Request
Missing or invalid parameters. Check the error.details field.
401Unauthorized
Invalid or missing API key.
403Forbidden
Valid key but insufficient plan for this endpoint.
404Not Found
Release or repo not found, or not owned by this account.
429Too Many Requests
Rate limit exceeded. Respect the Retry-After header.
500Server Error
Something went wrong on our end. Retrying usually works.
Need help integrating?
Our team is happy to assist with integration questions on the Business plan.
Contact us →