Быстрый старт
Как получить API-токен, выполнить первый аутентифицированный запрос и прочитать ответ.
Три шага: выпустить токен, вызвать эндпоинт с ним, прочитать конверт ответа.
1. Выпустите токен
Токены создаются в интерфейсе платформы, под сессией пользователя, а не через этот API. Откройте экран API-токенов своей команды, выберите области доступа (scopes), которые нужны интеграции, и создайте токен.
Токеном нельзя выпустить токен. Управление токенами живёт по пути
/v1/api-tokens, и этот путь намеренно не входит в публичную поверхность:
API-токен, способный выпускать API-токены, мог бы расширить собственные области
доступа — а это ровно та привилегия, ради удержания которой существует модель
scopes.
Токен выглядит так:
fgd_live_a1b2c3d4e5f6789012345678abcdef01234567890abcdef1234567890abcdef
За префиксом fgd_live_ идут 64 шестнадцатеричных символа криптографически
случайного секрета.
Секрет показывается ровно один раз
При создании — и больше никогда. Платформа хранит только SHA-256-хеш, поэтому нет ни экрана, ни обращения в поддержку, ни запроса к базе, который позволил бы восстановить значение позже. Скопируйте его в своё хранилище секретов до закрытия диалога; если значение потеряно, выполните ротацию токена и возьмите новое.
Несколько ограничений, о которых стоит знать заранее:
| ограничение | значение |
|---|---|
| токенов на команду | 50 |
| лимит частоты по умолчанию | 60 запросов/минуту |
| максимальный лимит частоты | 600 запросов/минуту |
| максимальный срок действия | 365 дней с момента создания |
2. Выполните запрос
Передавайте токен как bearer-учётные данные:
curl https://api.foxguide.io/v1/tables \
-H 'Authorization: Bearer fgd_live_a1b2c3d4...'
Продакшн-хост — https://api.foxguide.io. Стейджинг-хост
https://api.stage.foxguide.io обслуживает тот же контракт на данных стейджинга.
По умолчанию не выдаётся ничего. Токен достигает эндпоинта только тогда, когда его список областей доступа называет сущность этого эндпоинта и действие, которое эндпоинт выполняет — см. Аутентификация: там разобрана модель и тот отказ, который вы встретите при недостающей области доступа.
3. Прочитайте ответ
Одиночный ресурс приходит сам по себе либо обёрнутым в data. Коллекция всегда
приходит конвертом с блоком pagination:
{
"data": [ { "id": "tbl_...", "name": "Leads" } ],
"pagination": { "limit": 20, "offset": 0, "hasMore": true, "total": 137 }
}
Ошибки плоские и всегда одной формы:
{ "error": "INSUFFICIENT_SCOPE", "message": "API token does not have scope table:write" }
Ветвитесь по HTTP-статусу и по полю error — никогда по наличию полезной
нагрузки. Ошибки разбирают статусы и то, какие из них имеет
смысл повторять; Постраничная выдача — обход коллекции.
Ротация без простоя
Когда токен нужно заменить, выполняйте ротацию, а не «удалить и создать заново». Ротация выпускает новый секрет и оставляет старый действительным ещё на 24 часа (льготный период), поэтому работающая интеграция может подхватить новое значение в своём темпе, а не падать между двумя вызовами.
Что дальше
- Аутентификация — области доступа, запрет по умолчанию и
INSUFFICIENT_SCOPE - Лимиты частоты — что означает 429 и что с этим делать
- Вебхуки — получать события вместо опроса
- Справочник API — все публичные эндпоинты, сгенерированные из контракта