Docs/API Reference/Conversations

List conversations

Conversations · GET /v1/conversations

List conversations

GET/v1/conversations

Request

curl https://api.repull.dev/v1/conversations?limit=20 \
  -H "Authorization: Bearer $REPULL_API_KEY"

Response

{
  "data": [
    {
      "id": "123",
      "platform": "airbnb",
      "guestId": "123",
      "listingId": "123",
      "reservationId": "123",
      "subject": "Example text",
      "lastMessageAt": "2026-06-01T12:00:00.000Z",
      "lastMessagePreview": "Example text",
      "unreadCount": 0,
      "status": "open",
      "createdAt": "2026-06-01T12:00:00.000Z",
      "updatedAt": "2026-06-01T12:00:00.000Z",
      "externalThreadId": "123"
    }
  ],
  "pagination": {
    "nextCursor": "eyJpZCI6MTIzfQ==",
    "hasMore": true,
    "total": 0
  }
}

Captured from a real response. Regenerated on every release, and CI fails if this shape stops matching the API.

Query Parameters

accountstring

Only one connected account's records, as `provider:externalAccountId` (e.g. `airbnb:79730216`, `booking:10167991`, `vrbo:36`, `hostaway:…`) — the pair on every webhook `account` block, on `connect.session.completed`, and on each record's `account`. See /for-platforms.

cursorstring

Opaque cursor returned in the previous response's `pagination.nextCursor`. Omit to fetch the first page.

offsetinteger

First-class alias for cursor-based pagination. Mutually exclusive with `cursor` — passing both returns 422. Accepts integers in `[0, 10000]`; deeper walks must use `cursor` (constant per-page cost). The response always includes `pagination.nextCursor` so consumers can switch from offset → cursor mid-walk for deep pagination without re-keying.

limitinteger

Max items per page. Hard cap is 100.

platformstring

Restrict to threads on a single channel.

statusstring

Filter by archive status. `archived` currently always returns an empty page — kept for forward-compat.

AI