Skip to content
Инфраструктурный API

API-ключи

Выпустите привязанный к проекту API-ключ fvpn_v1_ в консоли, сделайте первый аутентифицированный вызов /platform/v1 и управляйте жизненным циклом ключа.

API-ключи — это учётные данные для взаимодействия сервер-сервер в плоскости /platform/v1: единый секрет fvpn_v1_…, который вы отправляете как Bearer-токен. Ключи:

  • привязаны к проекту — ключ аутентифицирует только внутри проекта, в котором был выпущен; сочетание его с любым другим X-Project-Id даёт 401;
  • хранятся в виде хеша — платформа хранит SHA-256-хеш, а не сам секрет;
  • показываются ровно один раз — открытый секрет появляется в ответе на выпуск (или ротацию) и больше никогда не может быть получен.

1. Выпустите ключ в консоли

В консоли откройте свой проект и перейдите в Platform → Settings → API keys (/console/p/{project}/platform/settings/api-keys). Создайте ключ, дайте ему узнаваемое имя (ci-deploy, billing-sync) и скопируйте секрет из одноразового показа — как только вы его закроете, видимым останется только отображаемый префикс (fvpn_v1_ab12…cd34).

Предпочитаете API? Та же операция — это POST /platform/v1/api-keys с Bearer-токеном вашей сессии консоли:

curl -X POST https://api.fvpn.net/platform/v1/api-keys \
  -H "Authorization: Bearer $STAFF_TOKEN" \
  -H "X-Project-Id: $FVPN_PROJECT_ID" \
  -H "Content-Type: application/json" \
  -d '{"name":"ci-deploy"}'

Ответ несёт скрытую запись о ключе плюс одноразовый секрет:

{
  "key": {
    "id": "8b9c1a2e-…",
    "name": "ci-deploy",
    "key_prefix": "fvpn_v1_ab12…cd34",
    "created_at": "2026-07-08T09:00:00Z",
    "last_used_at": null
  },
  "secret": "fvpn_v1_<96 hex characters>"
}

Сохраните секрет сейчас — он показывается ровно один раз.

2. Первый аутентифицированный вызов

Используйте ключ везде, где принимается Bearer-токен /platform/v1:

curl https://api.fvpn.net/platform/v1/api-keys \
  -H "Authorization: Bearer $FVPN_API_KEY" \
  -H "X-Project-Id: $FVPN_PROJECT_ID"

200 со скрытым списком ключей проекта подтверждает работу всего сценария целиком. Тот же вызов в каждом SDK — это первый пример любого быстрого старта.

3. Жизненный цикл ключа

ОперацияЭндпоинтПримечания
СписокGET /platform/v1/api-keysТолько скрытые записи — key_prefix, никогда сам секрет
РотацияPOST /platform/v1/api-keys/{id}/rotateНовый секрет возвращается один раз; старый секрет сразу даёт 401
ОтзывDELETE /platform/v1/api-keys/{id}Немедленно — ключ мгновенно перестаёт аутентифицировать

Последнее использование отслеживается. Поле last_used_at каждой записи фиксирует, когда ключ в последний раз аутентифицировал запрос (обновляется не чаще раза в минуту на ключ, поэтому устойчивый трафик не перегружает запись частой записью). Следите за ним, чтобы находить устаревшие ключи, которые стоит отозвать, — и меняйте ключи по собственному графику; ротация задумана как рутина, а не аварийная процедура.

Справочник

Полные формы запросов и ответов — в сгенерированном справочнике API в разделе platform-api-keys. Сценарий выпуск → вызов → отзыв на этой странице выполняется дословно скриптом scripts/quickstart-verify/api-key-auth.sh в репозитории.