Перейти к основному содержанию
Долгоживущая учётка — это обязательство, которое тихо растёт: агент выводят из эксплуатации, демо заканчивается, подрядчик уходит — но ключ продолжает работать, пока кто-нибудь не вспомнит его отозвать. Истекающий API-ключ переворачивает этот default. Вы задаёте дату окончания, когда выпускаете ключ, и OrcaRouter перестаёт авторизовать его в момент, когда эта дата проходит — без задачи очистки, которую можно забыть, без окна утёкший-но-всё-ещё-живой. Срок действия — одно поле на объекте токена: expired_time. Эта страница — сфокусированное руководство по этому одному контролю. О стороне лимита расходов на том же экране см. Лимит квоты и срок действия.

1. Зачем задавать истекающий API-ключ

Смысл ключа с ограничением по времени — сделать безопасный исход default-исходом. Несколько случаев, где это окупается:

Эфемерные агенты

Запланированная задача или короткоживущий агент получает ключ, который умирает вместе с жизненным циклом деплоя. Забытый cron-task не может продолжать тратить месяцы спустя.

Демо и пробные периоды

Передайте проспекту ключ, который работает на длину оценки, а затем гаснет сам по себе — последующий отзыв не нужен.

Подрядчики и вендоры

Ограничьте учётку окном взаимодействия. Когда контракт кончается, кончается и ключ.

Доступ на время инцидента

Выдайте узкий короткоживущий ключ во время инцидента, чтобы повышенный доступ не пережил сам инцидент.
Срок действия естественно сочетается с остальным ключом минимальных полномочий — списком разрешённых моделей, списком разрешённых IP и лимитом расходов. Каждый из них ограничивает свою ось; вместе они удерживают радиус поражения скомпрометированного ключа малым. См. Чек-лист минимальных полномочий.

2. Поле expired_time

Срок действия ключа живёт в одном поле на объекте токена:
ПолеТипЗначение
expired_timeВременная метка Unix (секунды)Абсолютный момент, когда ключ перестаёт авторизовать. -1 означает никогда не истекает.
Две вещи, о которых стоит помнить:
  • expired_time абсолютна, а не длительность. Вы задаёте момент, когда ключ умирает, а не «через 30 дней» — выбор даты в консоли вычисляет временную метку за вас.
  • Default для нового ключа — -1 (никогда). Ключ истекает только если вы дадите ему реальную временную метку; оставив поле нетронутым, вы выпускаете неистекающий ключ.
Неистекающий ключ (expired_time = -1) — правильный выбор только для учётки, которую вы активно ротируете. Если вы можете назвать дату, когда ключ должен перестать работать — а для агентов, демо и подрядчиков вы обычно можете — задайте её. Без присмотра -1-ключ — тот, что с наибольшей вероятностью переживёт своё назначение.

3. Задайте срок действия в консоли

Установка срока действия — консольное действие на вашем сессионном / access-токене, а не что-то, что вы передаёте в вызове ретрансляции. Создание или редактирование ключа требует роли Developer или выше.
  1. Откройте Keys (/console/token) и создайте новый ключ или отредактируйте существующий.
  2. В поле expiry выберите дату и время, когда ключ должен перестать работать. Оставьте пустым (или задайте never), чтобы ключ оставался постоянным.
  3. Сохраните. Изменение вступает в силу немедленно — без передеплоя, без изменений в коде агента.
Редактирование срока действия на существующем ключе работает вживую: продлите ключ, который вот-вот истечёт, или подтяните его срок действия вперёд, чтобы вывести его из эксплуатации раньше, — и новый дедлайн применяется на следующем запросе.
Только вызовы ретрансляции /v1/* несут ключ sk-orca-…. Срок действия, который вы задаёте здесь, управляет этим ключом ретрансляции, но вы настраиваете его из консольной сессии, никогда не отправляя ключ ретрансляции на маршрут управления.

4. Что делает истёкший ключ

Когда ключ предъявлен после того, как его expired_time прошёл, шлюз отклоняет его на уровне аутентификации — запрос никогда не достигает модели, так что не стоит квоты. Статус ключа переходит в Expired — одно из автоматических конечных состояний, которых может достичь ключ:
СтатусКак достигается
EnabledАктивен; запросы авторизуются.
DisabledВы поставили на паузу; обратимо.
ExpiredПрошёл expired_time — достигается автоматически.
ExhaustedПревысил квоту / лимит расходов — достигается автоматически.
Expired терминален в том смысле, что ключ не будет авторизовать снова сам по себе. Если он нужен обратно, отредактируйте ключ, чтобы подвинуть expired_time в будущее (Developer+), и он вернётся в Enabled на следующем запросе — ключ, его лимиты и привязки политик все сохранены. Чтобы вывести ключ из эксплуатации навсегда вместо этого, отзовите его.
Срок действия vs. отключение vs. отзыв. Срок действия — это запланированный выключатель: вы решаете дедлайн заранее и уходите. Отключение — это ручная, обратимая пауза для инцидента. Отзыв (удаление) необратим. Тянитесь к сроку действия всякий раз, когда вы уже знаете, когда учётка должна перестать иметь значение.

5. Разобранный пример: двухнедельный демо-ключ

Предположим, вы даёте проспекту ключ на 14-дневную оценку. Вы хотите, чтобы он вызывал одну дешёвую модель, тратил не больше фиксированного бюджета и гас, когда пробный период кончается — всё без напоминания в календаре его отозвать. В диалоге New key задайте:
  • model_limits: ["openai/gpt-4o-mini"] — демо не может дотянуться до более дорогой модели.
  • credit_limit_usd: фиксированный пробный бюджет — зацикленный прогон не может его превысить.
  • expired_time: конец 14-дневного окна — ключ перестаёт авторизовать сам по себе, когда пробный период окончен.
После дедлайна любой дальнейший запрос на этом ключе отклоняется без траты квоты, и ключ показывает Expired в списке. Вам нечего убирать; учётка вывела себя из эксплуатации сама.
# Before expiry — authorized
curl https://api.orcarouter.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-orca-..." \
  -H "Content-Type: application/json" \
  -d '{"model": "openai/gpt-4o-mini", "messages": [{"role":"user","content":"ping"}]}'

# After expiry — the same call is rejected at the auth layer,
# the model is never invoked, and no quota is consumed.

6. Кто что может

Срок действия управляется тем же ролевым шлагбаумом, что и остальной жизненный цикл ключа, ограниченным вашим активным рабочим пространством:
ДействиеМинимальная роль
Просмотр срока действия ключаViewer
Установка или изменение expired_time (создание / редактирование ключа)Developer
Повторное раскрытие открытого текста обычного ключаDeveloper
Чтение открытого текста ключа с областью шлюза (is_firewall_gateway)Admin
О полном жизненном цикле — создание, отключение, отзыв — и паттерне ротации, который сочетается со сроком действия, см. Управление ключами.

7. Дальнейшие шаги

Лимит квоты и срок действия

Собрат срока действия по лимиту расходов — ограничьте ключ долларами, как и временем.

Ротация ключей

Передача без простоя, которая не даёт неистекающему ключу жить вечно.

Объект токена

Каждое поле, которое несёт ключ, включая expired_time, и что каждое из них ограничивает.

Чек-лист минимальных полномочий

Сочетайте срок действия с лимитами моделей, списками разрешённых IP и лимитами расходов для ключа с минимальным радиусом поражения.
Ключ, который знает, когда остановиться, — это на одну учётку меньше, которую вам нужно помнить вывести из эксплуатации. Задавайте expired_time всякий раз, когда можете назвать дату, — и пусть шлюз делает уборку за вас.