API-токен

Эта страница открывается по ссылке из ответа API с кодом WIDGET_TOKEN_SCOPE или WIDGET_TOKEN_IN_HEADER. Ответ значит одно: запрос пришёл с токеном виджета, а для интеграции нужен API-токен. Ниже — как его выпустить и что поменять у себя. Действие разовое и занимает несколько минут.

Что произошло

В Rent in Hand два токена:

Раньше интеграции ходили токеном виджета. Теперь для них — 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-токен даёт тот же доступ, что и вход в кабинет под этим пользователем. Храните его как пароль: в настройках интеграции, не в коде сайта и не в публичных репозиториях. Заведите под интеграцию отдельного сотрудника в кабинете и выпускайте токен, войдя его логином, — тогда у интеграции ровно те права, которые ей нужны, а смена пароля директора её не сломает.

Дальше