The Mouve API is in active development and not yet live. Follow the changelog for the launch announcement.

Mouve Developers

Pagination

One cursor convention for every list endpoint — opaque cursors, next_cursor, and no totals.

Every list endpoint paginates the same way:

curl "https://api.mouve.it/public/v1/timeline?scope=discovery&limit=20" \
  -H "Authorization: Bearer $MOUVE_TOKEN"
{
  "data": [
    { "id": "…", "text": "…", "created_at": "2026-08-29T10:12:44Z" }
  ],
  "meta": {
    "next_cursor": "eyJ2IjoxLCJxIjoiOWYyYic…"
  }
}

Request the next page by passing the cursor back verbatim:

curl "https://api.mouve.it/public/v1/timeline?scope=discovery&limit=20&cursor=eyJ2IjoxLCJxIjoiOWYyYic…" \
  -H "Authorization: Bearer $MOUVE_TOKEN"

Rules

  • limit — 1 to 100, default 20 (/timeline caps at 50). Out-of-range values are a 400 VALIDATION_FAILED, not silently clamped.
  • cursor — opaque, up to 512 characters. Do not parse, construct, or modify cursors; their internal format may change at any time without notice and is not part of the API contract.
  • meta.next_cursor: null means you have reached the end.
  • There is no total count. This is a documented omission, not a gap: totals over visibility-filtered feeds are both expensive and misleading. Read pages until next_cursor is null.
  • A cursor is bound to the query that produced it — the same endpoint and the same filters. Replaying a cursor against a different endpoint or with different filters is a 400 INVALID_CURSOR.
  • An invalid or corrupted cursor is always a 400 INVALID_CURSOR — never a silent reset to the first page.

Ordering

Lists are ordered newest-first by creation time (stable, microsecond precision, ties broken by id). New items appearing while you paginate do not shift or duplicate the pages you have already read.

On this page