API Reference

The changelog your AI agent writes

Install the MCP server in Claude Code, Cursor, or Codex — or call the REST API from GitHub Actions — and let your agents publish entries the moment they ship.

MCP server
npx @foothillslabs/changelog-mcp — drop-in for Claude Code + Cursor.
REST API
Versioned /api/v1 endpoints. Standard bearer tokens.
Pro / Founders
API access on Pro & Founders. Sha256-hashed keys, revocable at any time.

Quickstart — MCP (recommended)

  1. Upgrade to Pro or Founders.
  2. Mint a key at /settings/api-keys. Copy it immediately — you won't see it again.
  3. Add the MCP server to Claude Code:
export CHANGELOG_API_KEY=ck_live_...
claude mcp add changelog npx @foothillslabs/changelog-mcp

Now ask your agent: “Publish a changelog entry for the dark-mode toggle I just shipped.” It will call list_projects and create_changelog_entry automatically.

Quickstart — REST

curl -X POST https://changelog-ai.com/api/v1/projects/PROJECT_ID/entries \
  -H "Authorization: Bearer ck_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Added dark mode",
    "content": "Toggle in the user menu. System preference respected by default.",
    "labels": ["IMPROVEMENT"],
    "isDraft": false
  }'

Authentication

All requests require a bearer token in the Authorization header. Keys are workspace-scoped and can be revoked at any time from /settings/api-keys. We store only the sha256 hash of the token — if you lose it, mint a new one.

Authorization: Bearer ck_live_<32-byte-secret>

Endpoints

MethodPathPurpose
GET/api/v1/projectsList projects in the workspace
GET/api/v1/projects/{id}/entriesList entries for a project
POST/api/v1/projects/{id}/entriesCreate an entry (draft or published)
GET/api/v1/projects/{id}/entries/{eid}Fetch a single entry
PATCH/api/v1/projects/{id}/entries/{eid}Update an entry (including publish)
DELETE/api/v1/projects/{id}/entries/{eid}Delete an entry

Rate limits

  • 60 requests per minute per API key (sliding window).
  • 10 published entries per day per workspace (shared with dashboard).
  • Exceeded limits return 429 with a Retry-After header.

GitHub Actions recipe

- name: Publish changelog
  if: startsWith(github.ref, 'refs/tags/v')
  run: |
    curl -X POST https://changelog-ai.com/api/v1/projects/${{ vars.CHANGELOG_PROJECT_ID }}/entries \
      -H "Authorization: Bearer ${{ secrets.CHANGELOG_API_KEY }}" \
      -H "Content-Type: application/json" \
      -d "{
        \"title\": \"${{ github.ref_name }}\",
        \"content\": \"See https://github.com/${{ github.repository }}/releases/tag/${{ github.ref_name }}\",
        \"version\": \"${{ github.ref_name }}\",
        \"isDraft\": false
      }"

OpenAPI

A machine-readable OpenAPI 3 spec is available at /openapi.yaml. Use it to generate client SDKs for Python, Go, or any language.

Ready to ship?

Mint an API key and install the MCP server. Takes about two minutes.