Programmatically manage your changelog entries, projects, and subscribers.
All API requests require a Bearer token in the Authorization header. Create tokens in Settings → API Tokens.
curl https://app.itslive.dev/api/v1/projects \
-H "Authorization: Bearer itslive_your_token_here"Base URL: https://app.itslive.dev/api/v1
/projectsList all your projects.
curl https://app.itslive.dev/api/v1/projects \
-H "Authorization: Bearer itslive_..."{
"projects": [
{
"id": "uuid",
"name": "My App",
"slug": "my-app",
"github_repo": "user/repo",
"plan": "pro",
"custom_domain": null,
"created_at": "2026-03-28T..."
}
]
}/projects/:id/entriesList changelog entries for a project. Returns entries sorted by creation date (newest first).
| Name | Type | Description |
|---|---|---|
limit | integer | Max entries to return (1-100, default 50) |
offset | integer | Number of entries to skip (default 0) |
published | boolean | Filter by published status ("true" or "false") |
curl "https://app.itslive.dev/api/v1/projects/PROJECT_ID/entries?published=true&limit=10" \
-H "Authorization: Bearer itslive_..."{
"entries": [
{
"id": "uuid",
"title": "Dark mode support",
"summary": "You can now switch to dark mode...",
"tags": ["Feature"],
"cover_image": null,
"pr_number": 42,
"pr_url": "https://github.com/...",
"pr_author": "username",
"is_published": true,
"published_at": "2026-03-28T...",
"created_at": "2026-03-28T..."
}
],
"pagination": { "limit": 50, "offset": 0, "total": null }
}/projects/:id/entriesCreate a new changelog entry.
| Field | Type | Description |
|---|---|---|
titlerequired | string | Entry title (1-200 chars) |
summaryrequired | string | Entry content in Markdown (1-5000 chars) |
tags | string[] | Tag names (e.g. ["Feature", "Fix"]) |
cover_image | string|null | URL to cover image |
is_published | boolean | Publish immediately (default true) |
published_at | string|null | ISO 8601 datetime for publish date |
curl -X POST https://app.itslive.dev/api/v1/projects/PROJECT_ID/entries \
-H "Authorization: Bearer itslive_..." \
-H "Content-Type: application/json" \
-d '{
"title": "Dark mode support",
"summary": "You can now switch to **dark mode** from settings.",
"tags": ["Feature"],
"is_published": true
}'{
"entry": {
"id": "uuid",
"title": "Dark mode support",
"summary": "You can now switch to dark mode...",
"tags": ["Feature"],
"is_published": true,
"published_at": "2026-03-28T...",
"created_at": "2026-03-28T..."
}
}/entries/:idGet a single changelog entry by ID.
curl https://app.itslive.dev/api/v1/entries/ENTRY_ID \
-H "Authorization: Bearer itslive_..."{
"entry": {
"id": "uuid",
"title": "Dark mode support",
"summary": "...",
"tags": ["Feature"],
"cover_image": null,
"is_published": true,
"published_at": "2026-03-28T...",
"created_at": "2026-03-28T..."
}
}/entries/:idUpdate a changelog entry. Only include fields you want to change.
| Field | Type | Description |
|---|---|---|
title | string | Updated title |
summary | string | Updated content (Markdown) |
tags | string[] | Updated tags |
cover_image | string|null | Updated cover image URL |
is_published | boolean | Publish or unpublish |
published_at | string|null | Override publish date |
curl -X PATCH https://app.itslive.dev/api/v1/entries/ENTRY_ID \
-H "Authorization: Bearer itslive_..." \
-H "Content-Type: application/json" \
-d '{"title": "Updated title", "is_published": true}'{
"entry": {
"id": "uuid",
"title": "Updated title",
...
}
}/entries/:idPermanently delete a changelog entry.
curl -X DELETE https://app.itslive.dev/api/v1/entries/ENTRY_ID \
-H "Authorization: Bearer itslive_..."{
"ok": true
}/projects/:id/subscribersList email subscribers for a project.
| Name | Type | Description |
|---|---|---|
limit | integer | Max results (1-100, default 50) |
offset | integer | Number to skip (default 0) |
confirmed | boolean | Filter by confirmation status ("true" or "false") |
curl "https://app.itslive.dev/api/v1/projects/PROJECT_ID/subscribers?confirmed=true" \
-H "Authorization: Bearer itslive_..."{
"subscribers": [
{
"id": "uuid",
"email": "user@example.com",
"confirmed": true,
"created_at": "2026-03-28T..."
}
],
"pagination": { "limit": 50, "offset": 0, "total": 42 }
}The API returns standard HTTP status codes and a JSON body with an error message.
| Code | Meaning |
|---|---|
200 | Success |
201 | Created |
400 | Bad request — invalid parameters or body |
401 | Unauthorized — missing or invalid token |
403 | Forbidden — requires Pro plan |
404 | Not found — resource doesn't exist or you don't own it |
500 | Server error |
{
"error": "Invalid or revoked token"
}The API is rate limited to 100 requests per minuteper token. If you exceed this limit, you'll receive a 429 response.