Ошибки и лимиты

Ошибка — это HTTP-код и JSON:

{ "error": "invalid", "message": "birth_year: members must be 18+" }

Опирайтесь на error — коды стабильны. message — для людей и логов, его текст может меняться.

Коды ошибок

HTTP error Что значит Что делать
400 bad_json Тело — не JSON Проверить сериализацию
400 bad_id Параметр не UUID (match_id, to, up_to) Передавать id из ответов сети как есть
401 unauthorized Нет ключа, ключ неверный или контур площадки приостановлен Проверить заголовок Authorization: Bearer …
403 forbidden Действие запрещено: лайк или дизлайк своему же пользователю через сеть; участник скрыт по жалобам или удаляется (и ленты нет) Не повторять
404 not_found Нет такого участника, мэтча или сообщения — или он не ваш. и лайк тому, кого ваш пользователь не может видеть: блокировка, другой контур, скрытый Пользователь не отправлен в сеть, уже удалён или недоступен: убрать карточку
409 match_closed Мэтч закрыт Закрыть разговор у себя
409 matched Лайк уже дал мэтч — отменить нельзя Не повторять
409 location_change_limited Город меняли меньше суток назад: новый город или переезд дальше 50 км Сказать человеку, что сменить город можно через сутки; остальное отправить с прежним городом
409 match_frozen Кто-то из двоих удаляет аккаунт (30 дней может восстановить) или скрыт сетью по жалобам «Аккаунт удалён» или «Аккаунт недоступен»; писать снова можно после восстановления или reinstate
409 member_hidden Участник скрыт (consent.network: false): ленты нет, лайкнуть можно только того, кто лайкнул его, без суперлайка Предложить вернуться в сеть
409 photo_check_gone Только страница проверки фото: задание с жестом истекло или уже использовано Страница сама предложит начать заново
409 world_consent_required Лента scope=world участнику без согласия «Весь мир» Предложить включить «Весь мир»; до тех пор — обычная лента
422 invalid Данные не прошли проверку — поле в message Исправить данные; не повторять как есть
429 rate_limited Больше 600 запросов в минуту Подождать и повторить с паузой
429 super_like_limit Суперлайков за сутки больше 5 Сказать человеку, что суперлайки вернутся завтра; обычный лайк можно
429 photo_check_limit больше 10 проверок фото на одного человека за сутки Сказать человеку, что попробовать снова можно завтра
429 first_messages_limit Новый участник (первые 7 дней в сети) уже начал 20 разговоров за сутки Не повторять; сказать, что новые разговоры можно начать завтра. Отвечать в начатых можно
503 photo_check_off сервис сверки фото временно недоступен Повторить позже
500, 503 internal Ошибка или временная недоступность сети (503 бывает и при проверке ключа — ключ в порядке) Повторить с экспоненциальной паузой

Повторы на вашей стороне

  • Можно повторять: сетевые ошибки, таймауты, 429 rate_limited, 5xx. Паузы: 1 с, 2 с, 4 с… до минуты.
  • Безопасно повторять: PUT /v1/members, PUT /v1/members/…, DELETE /v1/members/…, POST /v1/activity, POST /v1/likes, POST /v1/dislikes, POST /v1/blocks, POST /v1/matches/{id}/read — повтор не создаст дублей.
  • Осторожно: POST /v1/matches/{id}/messages — повтор после таймаута может отправить сообщение дважды. Повторяйте, только если ответ точно не пришёл, и показывайте пользователю статус «не отправлено».

Лимиты

Что Значение
Запросы 600 в минуту на площадку, всплеск до 100
Тело запроса до 1 МБ
Лента до 50 анкет за запрос, до 200 разных людей на участника в сутки. Повтор страницы лимит не тратит
Пачка анкет (PUT /v1/members) до 100
Пачка дизлайков до 100
Отметки активности (POST /v1/activity) до 1000 за запрос
Входящие лайки до 100 за запрос
События (GET /v1/events) до 500 за запрос, хранятся 7 дней
История сообщений до 100 за запрос
Сообщение 1–4000 символов
Описание анкеты до 1000 символов
Фото 1–9 на анкету
external_id 1–128 символов
Смена города раз в сутки
Суперлайки 5 в сутки на участника, сообщение до 200 символов
Новые разговоры у новых участников 20 в сутки первые 7 дней
Доставка вебхука таймаут 10 секунд, повторы до 3 суток

Если вам не хватает лимитов — напишите, увеличим.

Дополнительные услуги

Коды entitlement_required (402), commerce_forbidden (403), commerce_conflict, quote_expired, boost_incompatible_with_incognito (409), invalid_commerce_request (422), commerce_unavailable и live_payments_unavailable (503) — в разделе Услуги сети. insufficient_test_credits (402) относится только к TEST. Не заменяйте идентификатор заказа после таймаута: повторите прежний запрос.

Непонятно? Напишите разработчику

Ответ и продолжение переписки — на сайте по секретной ссылке, которую вы получите после отправки. Входящая почта не принимается.