API Reference
ShipRelay provides release automation APIs for generation, status polling, and publish.
Authentication
Send your repository API key as a bearer token:
Authorization: Bearer sr_your_api_key
API keys are repository-scoped and available in Settings → Widget Installation.
Release API endpoints
| Endpoint | Method | Description |
|---|---|---|
/api/v1/releases | POST | Trigger async changelog generation for a tag |
/api/v1/releases/{draftId} | GET | Poll generation/draft/published status |
/api/v1/releases/{draftId}/publish | POST | Publish a ready draft |
POST /api/v1/releases
Request body:
{
"repository": "owner/repo-or-slug",
"tag": "v1.2.0",
"audience": "user"
}Audience options: developer, user, executive, marketing.
Success response:
{
"draftId": "...",
"status": "processing",
"draftUrl": "https://shiprelay.io/changelogs/..."
}Generation is asynchronous. Poll with GET status endpoint.
GET /api/v1/releases/{draftId}
Success response:
{
"draftId": "...",
"status": "draft",
"ready": true,
"draftUrl": "https://shiprelay.io/changelogs/...",
"changelogUrl": null
}Status values include processing, draft, and published.
POST /api/v1/releases/{draftId}/publish
No request body is required.
Success response:
{
"status": "published",
"draftId": "...",
"version": "v1.2.0",
"changelogUrl": "https://shiprelay.io/your-slug/v1.2.0"
}Publish uses the shared publish pipeline (same behavior as dashboard publish): hosted page update, email digest, outbound webhook delivery, and social snippet generation.
Rate limits
Release API requests are rate-limited to 10 requests per API key per hour.
Error responses
401— invalid or missing API key403— tier limit prevents publish action429— rate limit exceeded
Existing public endpoints
| Endpoint | Method | Auth | Description |
|---|---|---|---|
/api/badge/[slug] | GET | None | Returns SVG badge for README embedding |
/[slug]/feed.xml | GET | None | RSS/Atom feed for published changelogs |