# Пагинация

Длинные списки — каталог каналов и посты канала — отдаются страницами по курсору.

## Как это устроено

- `limit` — сколько строк на странице: от 1 до 100, по умолчанию 50.
- В ответе два поля: `results` — строки страницы, `next` — готовая ссылка на следующую страницу. `null` в `next` — страниц больше нет.
- Берите ссылку из `next` целиком. Курсор в ней закодирован и помнит сортировку и фильтры — собирать его самому не нужно.
- Курсор устойчив к новым данным: посты, которые появились, пока вы листаете, не сдвигают страницы и не дают повторов.
- Каждая страница — отдельный запрос и стоит столько же единиц, сколько метод.

## Пример: все посты канала

```python
import requests

# первая страница — до 100 постов
URL = "https://api.datool.ru/v1/max/channels/@citynews/posts/?limit=100"
HEADERS = {"Authorization": "Bearer dtk_…"}

posts = []
while URL:
    page = requests.get(URL, headers=HEADERS, timeout=30).json()
    posts += page["results"]
    # None — страниц больше нет
    URL = page["next"]
```

## Без страниц

Справочники рубрик и территорий, статистика по дням и список вебхуков отдаются целиком. Каталог с параметром `ids` (до 100 номеров) — тоже без страниц: карточки идут в порядке запроса.
