REST API
Programmatically list and create changelog entries, or generate them from commits with AI.
The REST API lets you manage entries from your own tooling — CI pipelines, release scripts, internal dashboards. Requires a Pro plan or higher.
Authentication
Create an API key in your project's Settings → API keys. Send it as a Bearer token:
Authorization: Bearer <your-api-key>Base URL: https://launchly.dev
Error responses: 401 unauthorized (bad/missing key), 402 upgrade_required
(plan doesn't include API), 400 invalid (validation, with details).
List entries
GET /api/v1/entriescurl https://launchly.dev/api/v1/entries \
-H "Authorization: Bearer $LAUNCHLY_KEY"{
"entries": [
{ "id": "…", "title": "v2.1", "slug": "v2-1", "category": "feature",
"version": "2.1.0", "status": "published", "publishedAt": "2026-05-31T10:00:00.000Z" }
]
}Create an entry
POST /api/v1/entries| Field | Type | Notes |
|---|---|---|
title | string (1–200) | required |
body | string | required, Markdown |
category | feature | improvement | fix | announcement | default feature |
version | string (≤40) | optional |
visibility | external | internal | default external |
publish | boolean | default false (create as draft) |
curl -X POST https://launchly.dev/api/v1/entries \
-H "Authorization: Bearer $LAUNCHLY_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Scheduling",
"body": "You can now schedule releases.\n\n- Pick a future date\n- Auto-publishes",
"category": "feature",
"version": "2.1.0",
"publish": true
}'{ "entry": { "id": "…", "slug": "scheduling", "status": "published" } }When publish: true, the release is dispatched to the widget, feeds, email
subscribers, and connected channels (respecting visibility).
Generate from commits (AI)
POST /api/v1/entries/generateTurns a list of commit messages into a drafted entry.
| Field | Type | Notes |
|---|---|---|
commits | string[] (1–500) | required |
version | string (≤40) | optional |
category | enum | optional |
visibility | external | internal | default external |
publish | boolean | default false |
curl -X POST https://launchly.dev/api/v1/entries/generate \
-H "Authorization: Bearer $LAUNCHLY_KEY" \
-H "Content-Type: application/json" \
-d '{ "commits": ["feat: add scheduling", "fix: tz bug"], "version": "2.1.0" }'{ "entry": { "id": "…", "slug": "…", "title": "…", "status": "draft" }, "draft": { } }Errors: 503 ai_unavailable, 402 quota_exceeded (AI draft limit), 502 generation_failed.
Public endpoints (no key)
These are CORS-enabled and require no authentication:
| Endpoint | Purpose |
|---|---|
GET /api/widget/{slug} | Widget JSON — published entries |
POST /api/subscribe | Subscribe an email (double opt-in) |
POST /api/reactions | Toggle an emoji reaction on an entry |
POST /api/analytics | Record a view/click event |
Public endpoints are rate-limited per IP/anon-id (e.g. subscribe 8/10 min, reactions 30/min, analytics 60/min).