---
title: "List API changelog entries"
method: GET
path: "/v1/changelog"
tags: ["Changelog"]
---

# List API changelog entries

`GET /v1/changelog`

## Request

- Base URL: `https://zernio.com/api`
- URL: `https://zernio.com/api/v1/changelog`
- Auth: none required

The API changelog, newest first. No API key needed; one address may make 120 requests a minute. Each entry is what the `api.changelog.published` webhook delivered: the announcement in `message`, its `impact` on existing integrations, and in `changes` the deterministic diff of the OpenAPI spec (operations and schemas added, removed and modified) for automation to act on. Page with `before` set to the previous page's `nextCursor`.

## Query parameters

- `type` 'new_feature' | 'breaking_change' | 'improvement' | 'deprecation' | 'minor'
- `impact` 'none' | 'additive' | 'action_required'
- `platform` string
- `before` string, date-time
- `limit` integer

## Response `200`

Changelog entries

- object
  - `entries` ApiChangelogEntry[], required
    - `id` string, required: Stable entry id; the same entry is never published twice.
    - `type` 'new_feature' | 'breaking_change' | 'improvement' | 'deprecation' | 'minor', required: When `impact` is set, `breaking_change` means exactly `impact: action_required`.
    - `impact` 'none' | 'additive' | 'action_required' | 'null', nullable, required: What an integrator has to do, computed from the OpenAPI diff rather than from the prose. `action_required`: an existing call or parser can break (an operation, parameter or field removed, a field newly required, a type narrowed, an enum value removed, or authentication changed). `additive`: only new or looser things, existing integrations keep working. `none`: descriptions or examples only. Null on entries published before October 2026.
    - `platforms` string[], required: Platform and area slugs the entry is about: a platform (`instagram`, `facebook`, `threads`, `tiktok`, `x`, `linkedin`, `youtube`, `pinterest`, `reddit`, `bluesky`, `telegram`, `snapchat`, `whatsapp`, `discord`, `slack`, `google-business`, `imessage`), an ads platform (`meta-ads`, `google-ads`, `tiktok-ads`, `linkedin-ads`, `pinterest-ads`, `x-ads`) or an area (`ads`, `publishing`, `inbox`, `telephony`, `commerce`, `analytics`, `webhooks`, `general`). Filter with the `platform` query parameter.
    - `title` string, nullable, required: The change in a few words, for example `Delete inbox conversations`. Null on older entries.
    - `summary` string, nullable, required: One or two plain sentences on what changed and why it matters. Null when `title` is.
    - `message` string, required: The details in Markdown: endpoints, fields and how to use them.
    - `publishedAt` string, date-time, required
    - `specVersion` string, nullable, required: The `info.version` of the OpenAPI spec the entry describes, when known.
    - `url` string, uri, required: The entry on the docs changelog.
    - `changes` object, required: Deterministic diff of the OpenAPI spec behind the entry. Empty lists when nothing of that kind changed.
      - `endpoints` object, required
        - `added` ApiChangelogOperationRef[], required
          - `method` string, required
          - `path` string, required
          - `operationId` string
          - `tags` string[]: OpenAPI tags of the operation.
          - `xPlatforms` string[]: The operation's `x-platforms` list, verbatim.
        - `removed` ApiChangelogOperationRef[], required
          - `method` string, required
          - `path` string, required
          - `operationId` string
          - `tags` string[]: OpenAPI tags of the operation.
          - `xPlatforms` string[]: The operation's `x-platforms` list, verbatim.
        - `modified` ApiChangelogOperationRef[], required
          - `method` string, required
          - `path` string, required
          - `operationId` string
          - `tags` string[]: OpenAPI tags of the operation.
          - `xPlatforms` string[]: The operation's `x-platforms` list, verbatim.
      - `schemas` object, required
        - `added` string[], required: Component schema names.
        - `removed` string[], required
        - `modified` string[], required
  - `nextCursor` string, date-time, nullable, required: `before` value for the next page, or null when this page was not full.

## Other responses

- `400`: Invalid request
- `429`: The connected account's upstream platform quota is exhausted. Reddit rate-limits per connected Reddit user (1000 requests per 10-minute window), and that budget is shared by every operation using that account. Retry after the window resets rather than retrying immediately; repeated calls while exhausted do not succeed and keep the budget spent. Google Ads: writes and reports run on one developer token shared by every Google Ads account on Zernio. The token holds Standard access (no daily operations cap), so this only happens when Google throttles the token or your ad account. The envelope has `code: rate_limited`, `platform: google`, `details.quotaScope: DEVELOPER` (`ACCOUNT` when it is your own ad account's quota), `details.resetsAt` (ISO instant when Google accepts requests again) and `Retry-After` counting down to it. Retrying earlier cannot succeed. Meta ads: every Meta throttle (codes 4, 17, 32, 613 and the business-use-case codes 80000-80014) returns 429 `rate_limited`, even when Meta itself answers HTTP 400. `Retry-After` comes from Meta's `x-business-use-case-usage` estimate when Meta sends one, otherwise it is Meta's documented 60-second minimum (30 seconds for the one-write-per-30-seconds limit on a single object). Pinterest ads: Pinterest rate-limits per user and app, per category (ads_read, ads_write, ads_analytics). `Retry-After` comes from Pinterest's `x-ratelimit-reset` when it sends one, otherwise 60 seconds.

## Changes

- **2026-10-22** `c083c0fa652b`: 2 info
  - added the required property `entries/items/summary` to the response with the `200` status
  - added the required property `entries/items/title` to the response with the `200` status
- **2026-10-10** `bd40951608f4`: 8 info
  - added the new optional `query` request parameter `impact`
  - added the optional property `entries/items/changes/endpoints/added/items/tags` to the response with the `200` status
  - added the optional property `entries/items/changes/endpoints/added/items/xPlatforms` to the response with the `200` status
  - added the optional property `entries/items/changes/endpoints/modified/items/tags` to the response with the `200` status
  - …4 more
- **2026-10-06** `f8c8f34fb41a`: 2 warning
  - added the new `account` enum value to the `details/budgetScope` response property for the response status `400`
  - added the new `account` enum value to the `details/budgetScope` response property for the response status `429`
- **2026-10-02** `d556591af3f6`: 2 info
  - added the optional property `docUrl` to the response with the `400` status
  - added the optional property `docUrl` to the response with the `429` status
- **2026-10-02** `42a5a2dd988a`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/changelog/get.md)

---

[API](https://skmtc.dev/zernio/apis/zernio-api.md) · [All operations](https://skmtc.dev/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zernio/apis/zernio-api/revisions/4e74db179e73?raw)
