05Основы API
Ключи и вход
Каждый запрос к API подписан ключом. Здесь — как его создать, как передать, что ответит API, если с ним что-то не так, и как хранить.
Как выглядит ключ
Рабочий ключ состоит из префикса rg_live_ и ещё 40 знаков. Полностью он показывается один раз, при создании. Мы храним только его отпечаток, поэтому восстановить потерянный ключ нельзя — создайте новый.
rg_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Логин и пароль от кабинета для API не подходят: у них другое назначение, и API их не принимает.
Как передать ключ
Подойдёт любой из двух заголовков, один на запрос: Authorization: Bearer <ключ> или X-API-Key: <ключ>. Если переданы оба, действует непустой Bearer; при неверном Bearer второй заголовок уже не проверяется.
Проверить ключ проще всего запросом баланса: он ничего не списывает.
# Вариант 1: заголовок Authorization curl --fail-with-body --max-time 20 \ https://api.rendergrid.io/ api/ public/ v1/ balance \ -H "Authorization: Bearer $RENDERGRID_API_KEY" # Вариант 2: заголовок X-API-Key curl --fail-with-body --max-time 20 \ https:// api.rendergrid.io/ api/ public/ v1/ balance \ -H "X-API-Key: $RENDERGRID_API_KEY"
import os import requests key = os.environ["RENDERGRID_API_KEY"] response = requests.get( "https://api.rendergrid.io/ api/ public/ v1/ balance", headers={"Authorization": f"Bearer {key}"}, timeout=(5, 20), ) response.raise_for_status() print(response.json())
// Node.js 22+, файл .mjs const url = "https://api.rendergrid.io/ api/ public/ v1/ balance"; const key = process.env.RENDERGRID_API_KEY; const response = await fetch(url, { headers: { Authorization: `Bearer ${key}` }, signal: AbortSignal.timeout(20_000), }); if (!response.ok) { const body = await response.text(); throw new Error(`HTTP ${response.status}: ${body}`); } console.log(await response.json());
{
"currency": "USD",
"balance": "42.5000",
"overdraft_limit": "0.0000",
"available": "42.5000"
}Создать, заменить, отозвать
Создайте ключ
В кабинете, в разделе «Ключи API», нажмите «Создать ключ». Назовите его по интеграции: «сайт», «бот», «склад». Так проще понять, чей это ключ.
Скопируйте его сразу
После закрытия окна показать ключ ещё раз не получится. Положите его в переменную окружения или в хранилище секретов.
Заменяйте без остановки
Создайте новый ключ, подставьте его в интеграцию, проверьте один запрос и только потом отзовите старый. Отозванный ключ перестаёт работать сразу.
Баланс и лимиты аккаунта общие для всех его ключей. Отдельные ключи нужны, чтобы менять и отзывать доступ по интеграциям независимо.
В аккаунте может быть до 50 действующих ключей. Ключи, которые Playground выпускает на время вашей сессии, в этот счёт не входят. Заменённый ключ остаётся в счёте, пока не истечёт его срок.
Каждому ключу можно задать собственный месячный лимит трат. Это жёсткий предел для этого ключа: когда он исчерпан, запросы с ним получают 402 (подробнее).
Что отвечает API
Причину отказа читайте по error.code и error.details.reason, а не по тексту сообщения.
| Что случилось | Ответ API | Что делать |
|---|---|---|
| Ключ не передан | 401 ERR_API_KEY_INVALID, api_key_missing | Проверьте, что заголовок доходит до API |
| Ключ неверный, отозван или просрочен | 401 ERR_API_KEY_INVALID, api_key_invalid | Создайте новый ключ. Ответ в этих случаях одинаковый |
| Исчерпан месячный лимит ключа или аккаунта (если он задан) | 402 ERR_INSUFFICIENT_BALANCE, monthly_budget_exceeded | Поднимите лимит в кабинете или дождитесь нового месяца по UTC |
| Аккаунт отключён | 403 ERR_ACCOUNT_DISABLED, account_disabled | Остановите отправку и напишите в поддержку |
| API приостановлен менеджером | 403 ERR_API_SUSPENDED, api_suspended | Свяжитесь с менеджером. Кабинет при этом доступен |
HTTP/1.1 401 Unauthorized { "error": { "code": "ERR_API_KEY_INVALID", "message": "no API key on the request", "details": { "reason": "api_key_missing" } } }
Остальные отказы устроены так же. Их тексты message и значения details.reason собраны в разделе «Ошибки доступа».
Не повторяйте запросы при 401 и 403 в цикле. Больше 30 отказов в минуту с одного IP — и API на 120 секунд перестанет отвечать на запросы с него (burst_block). Подробнее — на странице «Лимиты».
Как хранить ключ
- Держите ключ в переменных окружения сервера или в менеджере секретов.
- Не кладите ключ в код сайта, мобильного приложения, публичный репозиторий и логи. Запросы к API отправляйте только с сервера.
- Выдавайте отдельный ключ каждой интеграции.
- Если ключ мог утечь, отзовите его сразу, а потом создайте новый.
Работаете через ИИ-ассистента? Не вставляйте ключ в чат — подробнее в разделе «Что не отдавать ассистенту».