Гайды

Инкрементальная синхронизация

Тянуть только новое и изменённое через курсор updated_after.

Чтобы держать свою копию отзывов в актуальном состоянии, не перечитывайте всё подряд. Используйте курсор updated_after — он возвращает только записи, изменившиеся у нас после указанного момента: новые отзывы, а также прежние, у которых появился ответ объекта, фото или пометка удаления.

Ось updated_at

У каждого отзыва есть updated_at (UTC) — момент последнего изменения записи в Rewio. Курсор updated_after фильтрует по этой оси. Не путайте с review_date (дата публикации на площадке, местное время) и с диапазоном published_from/to.

Алгоритм

  1. Первый прогон: скачайте всё постранично, запомните максимальный updated_at.
  2. Следующие прогоны: передавайте этот максимум в updated_after, обрабатывайте только пришедшее, снова обновляйте курсор.
import requests

BASE = "https://api.rewio.ru/v2"
HEADERS = {"X-API-Key": "hrev_ВАШ_КЛЮЧ"}

def sync(group_id, cursor=None):
    """Возвращает (обработанные_отзывы, новый_курсор)."""
    params = {"group_id": group_id, "limit": 100, "offset": 0,
              "sort_by": "date", "sort_order": "desc"}
    if cursor:
        params["updated_after"] = cursor  # ISO 8601 UTC, напр. 2026-07-01T00:00:00

    seen, newest = [], cursor
    while True:
        r = requests.get(f"{BASE}/reviews", headers=HEADERS, params=params)
        r.raise_for_status()
        page = r.json()
        for rev in page["data"]:
            seen.append(rev)
            if newest is None or rev["updated_at"] > newest:
                newest = rev["updated_at"]
        if not page["has_next"]:
            break
        params["offset"] += params["limit"]
    return seen, newest

# первый прогон
items, cursor = sync(20)
# ... сохраните cursor у себя ...
# следующий прогон (через N минут/часов)
new_items, cursor = sync(20, cursor)
print(f"новых/изменённых: {len(new_items)}")

Курсор храните у себя (в своей БД/конфиге). API не хранит вашу позицию. Берите значение updated_at из полученных записей — так вы не пропустите ничего на границе.

Когда лучше вебхуки

updated_after — это pull-модель: вы сами решаете, когда опросить. Если нужна реакция в момент появления отзыва без опроса — подпишитесь на вебхуки: Rewio сам пришлёт пуш после каждого обхода. Часто оба подхода совмещают: вебхук как триггер, updated_after как надёжная дозагрузка (на случай пропущенной доставки).

On this page