rewio-ru Replies API

Ответы на отзывы от лица организации: публикация, замена и удаление. Форма запроса одна для всех площадок.

Operations 5

GET /v3/reviews/{review_id}/reply Состояние вашего ответа #
PUT /v3/reviews/{review_id}/reply Опубликовать или заменить ответ #
DELETE /v3/reviews/{review_id}/reply Удалить ответ #
PUT /v3/reviews/{review_id}/skip Пропустить отзыв #
DELETE /v3/reviews/{review_id}/skip Вернуть пропущенный отзыв #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/rewio-ru:rewio-ru-replies-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

rewio-ru-replies-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Review Aggregator Replies API
  description: 'Единый REST API для отзывов: сервис собирает отзывы с площадок (Яндекс Карты, 2ГИС, Google, Островок, ДокДок и др.), приводит их к общей модели и отдаёт с фильтрами и аналитикой.


    📚 **Гайды, quickstart и полный справочник – на портале разработчика: https://docs.rewio.ru**


    #### Как начать

    1. Создайте **объект** – единицу бизнеса, отзывы по которой собираем.

    2. Добавьте в него **ссылки** на страницы объекта на нужных площадках.

    3. Запрашивайте **отзывы** и **аналитику** – данные обновляются дважды в сутки.


    #### Что вы получаете по каждому отзыву

    - **Текст**, **автор**, **оценка** – приведена к единой шкале 1–5 независимо от площадки

    - **Ответ организации** – текст и дата

    - **Изображения и видео** – превью и полноразмерные ссылки


    #### Работа с отзывами

    На тарифе «Полный»:

    - **Ответы** – публикация, замена и удаление ответа от лица организации (на пробном доступе – 3 на площадку)

    - **Жалобы** – подача жалобы на отзыв через форму площадки и её итог (на пробном доступе – 3 на площадку)

    - **Дополнительный сбор** – новые отзывы по объекту вне расписания, раз в сутки (на пробном доступе – 5 сборов)


    #### Соглашения

    - **Базовый URL:** `https://api.rewio.ru`. Актуальная версия – `/v3`.

    - **Авторизация:** заголовок `X-API-Key: ` в каждом запросе. Области ключа: `read_only` / `full`.

    - **Формат:** JSON на вход и выход.

    - **Даты:** UTC, ISO 8601 без таймзоны (`2026-02-25T09:28:07`). Время площадки (`review_date`, `reply_date`) приводится к UTC везде, где это возможно; в противном случае – как на площадке.

    - **Оценки:** нормализованы к единой шкале 1–5 независимо от площадки; исходное значение площадки сохраняется отдельно (`rating_original`).

    - **Списки:** ключ элементов всегда `data`. Постраничные ответы – `{data, total, limit, offset, has_next}` (параметры `limit` 1–1000 и `offset`); полные списки – только `{data}`.

    - **Ошибки:** единый формат `{"detail": "...", "code": "..."}` с машиночитаемым `code`. Отдельно стоит `402`: доступ приостановлен (закончился пробный период или оплата) либо площадка не входит в тариф – повтор запроса не поможет.

    - **Ограничение частоты:** при слишком частых запросах – `429`; повторите с задержкой.


    #### Проба

    В блоке авторизации уже подставлен тестовый ключ (только чтение) – можно сразу выполнить любой GET-запрос.


    **Тестовый ключ (только чтение):** `hrev_FaDGMKJEDDeCR5BCBgEg0aEjMogI7O7hOzE53YY4T1M`

    **Тестовый объект:** Отель Националь, **object_id = 20**


    Бесплатный тестовый доступ на создание 30 объектов.

    **Подключение и доступ:** 📧 info@rewio.ru · ✈️ @const_rewio'
  version: 3.0.0
servers:
- url: https://api.rewio.ru
  description: Production
tags:
- name: replies
  description: 'Ответы на отзывы от лица организации: публикация, замена и удаление. Форма запроса одна для всех площадок.'
paths:
  /v3/reviews/{review_id}/reply:
    get:
      tags:
      - replies
      summary: Состояние вашего ответа
      description: 'Состояние вашего ответа на карточке.


        `status`: `null` – отправлен, площадке ещё не передан; `pending` – площадка

        приняла, на карточке ещё не видели; `published` – ваш текст стоит на

        карточке; `deleted` – вашего ответа на карточке нет; `failed` – не

        опубликован. `submitted_at` – когда вы отправили текст, `published_at` –

        когда мы увидели его на карточке, `error` – почему ответ не опубликован или

        пропал.


        После того как площадка приняла ответ, мы сами читаем этот отзыв на ней:

        через 15 с, 30 с, 1, 2, 3, 5, 15, 30 минут, 1, 2 и 4 часа. Увидели ваш

        текст – `published`; не увидели за 4 часа – `failed` с кодом `not_visible`.

        Сбор площадки обновляет статус так же. Метод к площадке не обращается –

        опрашивайте его сколько нужно.


        Ответ, поставленный не через нас, здесь не показывается – он виден как

        `reply_text` самого отзыва в `GET /v3/reviews`; заменить или удалить его можно

        теми же `PUT` и `DELETE`. Метод доступен на любом тарифе.'
      operationId: get_reply_v3_v3_reviews__review_id__reply_get
      security:
      - APIKeyHeader: []
      parameters:
      - name: review_id
        in: path
        required: true
        schema:
          type: integer
          description: Encoded review ID
          title: Review Id
        description: Encoded review ID
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReplyStateV3'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
    put:
      tags:
      - replies
      summary: Опубликовать или заменить ответ
      description: 'Опубликовать ответ на отзыв или заменить уже стоящий.


        Ответ ставится в очередь и публикуется от вашего имени на площадке. Итог

        смотрите в `GET /v3/reviews/{review_id}/reply`: публикация асинхронная,

        и `202` здесь означает «приняли в работу», а не «уже на карточке».


        Ответить можно только на **нативный** отзыв площадки. На отзыв, который

        площадка лишь показывает у себя, но собран с другой (`provider` ≠ слаг

        площадки: `tbank`, `booking`, `tripadvisor`, …), придёт `409

        reply_not_replyable`.


        Заменить можно любой ответ организации на отзыве, в том числе

        поставленный не через Rewio. Где площадка не даёт переписать ответ

        (2ГИС), стоящий ответ снимается и на его место ставится новый.'
      operationId: put_reply_v3_v3_reviews__review_id__reply_put
      security:
      - APIKeyHeader: []
      parameters:
      - name: review_id
        in: path
        required: true
        schema:
          type: integer
          description: Encoded review ID
          title: Review Id
        description: Encoded review ID
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReplyWriteV3'
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReplyV3'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
    delete:
      tags:
      - replies
      summary: Удалить ответ
      description: 'Удалить ответ организации с площадки – ваш или поставленный не через Rewio.


        Удаление тоже асинхронное.'
      operationId: delete_reply_v3_v3_reviews__review_id__reply_delete
      security:
      - APIKeyHeader: []
      parameters:
      - name: review_id
        in: path
        required: true
        schema:
          type: integer
          description: Encoded review ID
          title: Review Id
        description: Encoded review ID
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReplyV3'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /v3/reviews/{review_id}/skip:
    put:
      tags:
      - replies
      summary: Пропустить отзыв
      description: 'Отметить, что отвечать на отзыв не будете: он уходит из `reply_state=unanswered`

        в `reply_state=skipped` и получает `is_skipped: true`.


        Нужен тариф с ответами («Полный», пробный), иначе `402 reply_requires_upgrade`.


        `204` – отметка поставлена; `200 {"is_skipped": true}` – она уже стояла.

        Повтор – не ошибка.'
      operationId: skip_review_v3_v3_reviews__review_id__skip_put
      security:
      - APIKeyHeader: []
      parameters:
      - name: review_id
        in: path
        required: true
        schema:
          type: integer
          description: Encoded review ID
          title: Review Id
        description: Encoded review ID
      responses:
        '204':
          description: Successful Response
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '200':
          description: 'Отметка уже стояла: `{"is_skipped": true}`.'
    delete:
      tags:
      - replies
      summary: Вернуть пропущенный отзыв
      description: 'Снять отметку «Пропустить»: отзыв возвращается в `reply_state=unanswered`.


        Отметки нет – тоже `204`. Тариф – как у «Пропустить».'
      operationId: unskip_review_v3_v3_reviews__review_id__skip_delete
      security:
      - APIKeyHeader: []
      parameters:
      - name: review_id
        in: path
        required: true
        schema:
          type: integer
          description: Encoded review ID
          title: Review Id
        description: Encoded review ID
      responses:
        '204':
          description: Successful Response
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    ErrorResponse:
      properties:
        detail:
          type: string
          title: Detail
        code:
          type: string
          title: Code
      type: object
      required:
      - detail
      - code
      title: ErrorResponse
      description: Standard error response returned by all exception handlers.
    ReplyErrorV3:
      properties:
        code:
          type: string
          title: Code
          description: Машинный код ошибки публикации.
        message:
          type: string
          title: Message
          description: Пояснение для человека.
          default: ''
      type: object
      required:
      - code
      title: ReplyErrorV3
      description: Последняя ошибка публикации.
    ReplyWriteV3:
      properties:
        text:
          type: string
          maxLength: 4000
          minLength: 1
          title: Text
          description: Текст ответа для публикации на площадке.
      type: object
      required:
      - text
      title: ReplyWriteV3
      description: Текст ответа, который нужно опубликовать.
      example:
        text: Спасибо за отзыв!
    ReplyV3:
      properties:
        text:
          type: string
          title: Text
          description: Текст ответа, который должен стоять на площадке.
        status:
          anyOf:
          - type: string
            enum:
            - pending
            - published
            - failed
            - deleted
          - type: 'null'
          title: Status
          description: 'Что с вашим ответом на карточке: `null` – отправлен, площадке ещё не передан; `pending` – площадка приняла, на карточке ещё не видели (проверяем через 15 с, 30 с, 1 мин … 4 ч); `published` – ваш текст стоит на карточке; `deleted` – вашего ответа на карточке нет: вы его удалили или он пропал (причина – в `error`); `failed` – не опубликован (почему – в `error`).'
        updated_at:
          type: string
          format: date-time
          title: Updated At
          description: Когда запись менялась в последний раз (UTC, ISO 8601).
      type: object
      required:
      - text
      - updated_at
      title: ReplyV3
      description: Ответ, принятый в работу.
    ReplyStateV3:
      properties:
        status:
          anyOf:
          - type: string
            enum:
            - pending
            - published
            - failed
            - deleted
          - type: 'null'
          title: Status
          description: 'Что с вашим ответом на карточке: `null` – отправлен, площадке ещё не передан; `pending` – площадка приняла, на карточке ещё не видели (проверяем через 15 с, 30 с, 1 мин … 4 ч); `published` – ваш текст стоит на карточке; `deleted` – вашего ответа на карточке нет: вы его удалили или он пропал (причина – в `error`); `failed` – не опубликован (почему – в `error`).'
        submitted_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Submitted At
          description: Когда вы отправили этот текст (UTC, ISO 8601).
        published_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Published At
          description: Когда мы увидели ваш текст на карточке (UTC, ISO 8601). `null`, пока не видели.
        error:
          anyOf:
          - $ref: '#/components/schemas/ReplyErrorV3'
          - type: 'null'
          description: 'Почему ответ не опубликован или пропал с карточки: `not_visible`, `not_taken_down`, `review_deleted`, `reply_missing`, `reply_replaced` или код отказа площадки.'
        updated_at:
          type: string
          format: date-time
          title: Updated At
          description: Когда запись об ответе менялась в последний раз (UTC, ISO 8601).
      type: object
      required:
      - updated_at
      title: ReplyStateV3
      description: 'Что с ВАШИМ ответом на карточке.


        Метод читает нашу запись и к площадке не обращается – опрашивать его можно с

        любой частотой. На площадку ходим мы сами: после того как площадка приняла

        ответ, читаем этот отзыв на ней через 15 с, 30 с, 1, 2, 3, 5, 15, 30 мин,

        1, 2 и 4 ч. Увидели ваш текст – `published`; не увидели за 4 часа –

        `failed` с кодом `not_visible`. Сбор площадки двигает статус так же.'
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key
    APIKeyCookie:
      type: apiKey
      in: cookie
      name: rewio_session