API-токен
Эта страница открывается по ссылке из ответа API с кодом WIDGET_TOKEN_SCOPE или WIDGET_TOKEN_IN_HEADER. Ответ значит одно: запрос пришёл с токеном виджета, а для интеграции нужен API-токен. Ниже — как его выпустить и что поменять у себя. Действие разовое и занимает несколько минут.
Что произошло
В Rent in Hand два токена:
- Токен виджета (32 символа, кабинет → Профиль → Токен виджета) вставляется в код страницы сайта проката. Его видит любой посетитель сайта, поэтому API принимает его только параметром
?get_token=и только на маршрутах виджета бронирования: витрина, расчёт, сохранение и оплата брони, вход арендатора. На остальных маршрутах он получает403с кодомWIDGET_TOKEN_SCOPE, в заголовкеAuthorization—401с кодомWIDGET_TOKEN_IN_HEADER. - API-токен — секрет вашей интеграции. Открывает все методы API с правами пользователя, который его выпустил. Хранится у вас и в код сайта не попадает.
Раньше интеграции ходили токеном виджета. Теперь для них — API-токен.
Как выпустить API-токен
1. Войдите логином и паролем пользователя кабинета — в ответе будет токен доступа:
curl "https://api.rentinhand.ru/v2/login" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"login": "ВАШ_ЛОГИН", "password": "ВАШ_ПАРОЛЬ"}'
Поле data.access_token из ответа нужно только для следующего шага.
2. Выпустите API-токен, передав токен доступа в заголовке:
curl -X POST "https://api.rentinhand.ru/v2/api-token" \
-H "Authorization: Bearer ТОКЕН_ДОСТУПА_ИЗ_ШАГА_1" \
-H "Accept: application/json"
Ответ 201:
{"data": {"token": "AbCdEf0123456789AbCdEf0123456789", "time_start": "2026-09-15T12:00:00+0300", "time_end": "2027-09-15T00:00:00+0300", "last_used_at": null}}
data.token — ваш API-токен. Сохраните его: повторный POST /v2/api-token вернёт тот же токен с ответом 200, пока он действует. Если у кабинета нет действующего тарифа (оплаченного или тестового периода), токен не выпускается: 422 с кодом API_TOKEN_NO_TARIFF или 403 с кодом TARIFF_EXPIRED — второй приходит, когда кабинет без подписки закрыт для изменений целиком. В обоих случаях продлите тариф и повторите шаг 2.
3. Замените токен в интеграции. Достаточно подставить новое значение туда, где стоял токен виджета:
GET https://api.rentinhand.ru/v2/rent?get_token=ВАШ_API_ТОКЕН
Лучше передавать его заголовком — так токен не попадает в адресную строку и журналы прокси:
curl "https://api.rentinhand.ru/v2/rent?per_page=200" \
-H "Authorization: Bearer ВАШ_API_ТОКЕН" \
-H "Accept: application/json"
Оба способа равнозначны.
Срок действия
time_end в ответе — конец уже оплаченного периода тарифа вместе с продлениями, оплаченными вперёд; на тестовом периоде — конец тестового периода, null — тариф без даты окончания. Продление тарифа продлевает и выпущенный токен: выпускать новый и менять его в интеграции не нужно.
Если к time_end следующий период не оплачен, API ответит 401 с кодом TOKEN_EXPIRED. После продления тарифа тот же токен снова принимается, не позже чем через минуту.
Отозвать токен досрочно — DELETE /v2/api-token с тем же заголовком Authorization, что в шаге 2. Действует только последний выпущенный токен: новый POST /v2/api-token выпускается, только если прежний отозван, а отозванный отвечает 401 с кодом TOKEN_EXPIRED и после продления не оживает. Отзыв работает и без оплаченного тарифа: если токен мог утечь, отзовите его, не дожидаясь продления.
Виджет продолжает работать
Токен виджета никуда не делся: сниппет на сайте менять не нужно, бронирование через виджет работает как раньше. Меняется только то, чем ходит ваша интеграция.
Безопасность
API-токен даёт тот же доступ, что и вход в кабинет под этим пользователем. Храните его как пароль: в настройках интеграции, не в коде сайта и не в публичных репозиториях. Заведите под интеграцию отдельного сотрудника в кабинете и выпускайте токен, войдя его логином, — тогда у интеграции ровно те права, которые ей нужны, а смена пароля директора её не сломает.
Дальше
- Справочник методов — все методы с параметрами и примерами ответов, там же «Начало работы».
- Вопросы — в чат поддержки на сайте. Приложите метод, адрес и полный ответ сервера: по полю
codeмы сразу поймём, что произошло.