API Docs

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:

HTTP
Authorization: Bearer rf_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxx

Generate your API key in Settings → API Keys. Keep it secret — treat it like a password.

Base URL

BASE URL
https://shiprelease.app/api/v1

Endpoints

POST/releases/generate

Generate release notes by analyzing commits and diffs between two SHAs.

REQUEST BODY (JSON)
{
  "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
}
RESPONSE
{
  "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"
}
GET/releases

List all generated releases. Supports pagination.

QUERY PARAMS
?repo=your-org/your-repo  // filter by repo (optional)
&limit=20                  // default 20, max 100
&cursor=rel_01j9x...       // for pagination
GET/releases/:id

Retrieve a specific release by ID.

DELETE/releases/:id

Delete 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

400

Bad Request

Missing or invalid parameters. Check the error.details field.

401

Unauthorized

Invalid or missing API key.

403

Forbidden

Valid key but insufficient plan for this endpoint.

404

Not Found

Release or repo not found, or not owned by this account.

429

Too Many Requests

Rate limit exceeded. Respect the Retry-After header.

500

Server 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 →