---
title: "Changes since a cursor"
method: GET
path: "/api/v2/sync/changes"
tags: ["Sync (v2)"]
---

# Changes since a cursor

`GET /api/v2/sync/changes`

## Request

- Base URL: `https://www.endlesstravelplans.com`
- URL: `https://www.endlesstravelplans.com/api/v2/sync/changes`
- Auth: HTTP bearer

## Query parameters

- `cursor` integer, nullable: The last cursor the client saw; 0 or absent means from the start of the ledger.
- `per_page` integer, nullable: Page size, at most 50.

## Response `200`

- object
  - `cursor` integer
  - `next_cursor` integer
  - `has_more` boolean
  - `retention_days` integer
  - `changes` object[]
    - `kind` string
    - `external_id` string
    - `action` string
    - `cursor` integer
    - `at` string

## Other responses

- `401`: unauthenticated: No valid bearer token was sent.
- `410`
- `422`: validation_failed: The request body failed validation; field messages are in `errors`.
- `429`: rate_limited: A throttle or a per-account allowance refused the request; `retry_after` or `remaining` may be present.
- `500`: server_error: Unhandled failure; quote `request_id` to support.

---

[API](https://skmtc.dev/endlesstravelplans/apis/endless-travel-plans-api.md) · [All operations](https://skmtc.dev/endlesstravelplans/apis/endless-travel-plans-api/llms.txt) · [OpenAPI document](https://skmtc.dev/endlesstravelplans/apis/endless-travel-plans-api/revisions/ae82ed3e4a8f?raw)
