> ## Documentation Index
> Fetch the complete documentation index at: https://docs.myabode.ca/llms.txt
> Use this file to discover all available pages before exploring further.

# Pagination and filtering

> How myAbode Deals API list endpoints page with opaque cursors, how to filter by status, brokerage and update time, and how to run an incremental sync.

Every list endpoint returns the same envelope:

```json theme={null}
{
  "object": "list",
  "data": [ ... ],
  "has_more": true,
  "next_cursor": "eyJrIjpb..."
}
```

* `data` holds up to `limit` items (default 50, maximum 100). Deals and tasks come most recently updated first (tasks also accept `sort=priority`); users, offices and brokerages come in ID order. The [event feed](https://docs.myabode.ca/api/events.md) comes oldest first.
* `has_more` tells you whether another page exists.
* `next_cursor` is an opaque token. Send it back unchanged as `cursor` to get the next page, with the same filters (and, for tasks, the same `sort`).
* There is no total count. Count what you page through.

```bash theme={null}
curl "https://api.myabode.ca/v1/deals?limit=100&cursor=eyJrIjpb..." \
  -H "Authorization: Bearer $MYABODE_API_KEY"
```

A cursor the API can't read, or one sent with a different `sort`, returns `400 INVALID_CURSOR`. Retrying won't fix it. Drop the cursor and start again from the first page.

## Filters

Filters combine with AND. List filters such as `status` or `id` accept several values: repeat the parameter (`status=IN_PROGRESS&status=READY_FOR_PAYOUT`).

| Endpoint | Useful filters |
| - | - |
| `/v1/deals` | `status`, `brokerage`, `address`, `mls_number`, `id` (up to 100), `updated_since` |
| `/v1/tasks` | `deal`, `status`, `type`, `assignee_type`, `assignee_user`, `assignee_role`, `updated_since`, `sort=priority` |
| `/v1/users` | `status`, `office`, `role`, `brokerage`, `id` |
| `/v1/offices` | `brokerage` |

## Incremental sync with `updated_since`

To keep a copy up to date without re-reading everything, remember when your last sync started and ask only for what changed since:

```bash theme={null}
curl "https://api.myabode.ca/v1/deals?updated_since=2026-11-05T14:00:00Z" \
  -H "Authorization: Bearer $MYABODE_API_KEY"
```

For a complete, ordered record of every change, including deletions, use the [event feed](https://docs.myabode.ca/api/events.md).

## Unknown values

New enum values, such as a new deal status or task type, may be added without a new API version. Handle values you don't recognize instead of failing.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.