Skip to main content

Обзор API

API управления token позволяет вам управлять полным жизненным циклом ваших API-ключей в коде, вместо того чтобы кликать по консоли по одному key за раз. Наиболее распространенный сценарий использования — массовая выдача: предоставлять каждому члену команды, downstream-клиенту или проекту свой key, у каждого — свои лимиты на сколько он может потратить, к каким моделям он может обращаться, и как долго он остается действительным.

Лимит квоты

remain_quota ограничивает, сколько этот key может потратить в сумме

Лимит модели

models задает allowlist; обращения ко всему, что вне его, отклоняются

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

expired_time задает временную метку истечения, после которой key перестает работать
Если вам нужен только один или два key, консоль быстрее — см. Как создать API key. Этот API предназначен для автоматизированной выдачи, плановой ротации или интеграции управления key в ваши собственные системы.

Как получить ваш System Token

API для управления token аутентифицируется с помощью системного token, который не то же самое, что ключ API.
1

Открыть консоль

Перейдите на api.apiyi.com/account/profile, чтобы открыть страницу профиля
2

Найдите системный token

Найдите раздел «Параметры аккаунта - System Token» в нижней части страницы
3

Сгенерируйте AccessToken

Введите пароль вашей учетной записи, чтобы получить AccessToken, который можно использовать для последующих запросов к API
Получить системный token
Системный token может создавать и удалять API-ключи. Относитесь к нему как к паролю вашей учетной записи.Системный token не может напрямую вызывать модели — использование его с /v1/chat/completions отклоняется — но он может создавать API-ключи, которые могут. Утечка системного token поэтому значительно хуже, чем утечка одного API-ключа. Храните его в secret manager, а не в коде, никогда не добавляйте его в repository и периодически выполняйте его ротацию.

Эндпоинты

Все эндпоинты аутентифицируются одинаково: передавайте необработанный системный token в заголовке Authorization, без префикса Bearer. Базовый URL — https://api.apiyi.com.

Создание token

Пример запроса

Поля запроса

unlimited_quota по умолчанию = false, а remain_quota по умолчанию = 0 — если опустить оба поля, будет создан token с нулевой квотой, который нельзя использовать. Либо явно задайте remain_quota, либо установите unlimited_quota в true.
Используйте поле models для списка разрешённых моделей.Структура ответа также содержит model_limits, model_limits_enabled и allow_ips. Передача этих полей не вызывает ошибку — эндпоинт по-прежнему возвращает 200 — но сейчас они не влияют ни на что, и при повторном чтении token видно, что они не заданы. Используйте models, чтобы ограничить доступные модели. Ограничения по исходному IP пока нужно реализовать на своей стороне.

Пример ответа

key в ответе представлен в виде обычного текста и не включает префикс sk-. Вам нужно добавить его самостоятельно — в примере выше фактический API key — это sk-K1RPzapu….Сохраняйте и передавайте key сразу после создания и не оставляйте тела ответов, содержащие key, в файлах журналов.

Пакетное создание

На стороне сервера нет batch-эндпоинта — передача чего-то вроде count в теле запроса не оказывает эффекта и все равно создает один token. Пакетная выдача выполняется циклом на стороне клиента.

Использование трех лимитов

Лимит квоты

remain_quota ограничивает, сколько token может потратить. Конвертация соответствует API запроса баланса:

Правило конвертации

500,000 квот = $1.00 USD
Например, чтобы выдать downstream-клиенту ключ с лимитом $10, установите remain_quota в 5000000 с unlimited_quota, установленным в false. Потребление на текущий момент можно прочитать в поле used_quota token.

Лимит модели

models — это список разрешенных значений, разделенный запятыми. После задания вызов модели вне списка отклоняется:
Ответом будет HTTP 403, и плата не взимается. Если не указывать models, ограничение отсутствует.

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

expired_time — это Unix-метка времени в секундах, при этом -1 означает «никогда». Например, ключ, срок действия которого истекает через 30 дней:

Список токенов

Основные поля:

Обновление token

Эндпоинт обновления требует полный объект — это не патч.Правильная последовательность: GET полный объект token, измените поля, которые хотите поменять, затем PUT весь объект обратно. Отправка только измененных полей очистит остальные.

Отключение и удаление

Отключение (сохраняет запись)

После отключения ключ сразу перестает работать — запросы с ним возвращают 401 — но запись token и история его использования сохраняются.

Удаление (необратимо)

Пакетное удаление также выполняется в виде цикла на стороне клиента:
Удаление нельзя отменить. Если вы хотите лишь временно приостановить key, вместо этого отключите его — история использования останется доступной для сверки.

Часто задаваемые вопросы

Значение key в ответе не включает префикс sk-. Добавьте его сами: рабочий API key — это sk-, за которым следует возвращенное значение.
Скорее всего, при создании не было задано ни remain_quota, ни unlimited_quota не было установлено в true. Такая комбинация по умолчанию создает token с нулевой квотой. Создайте его заново, явно указав одно из двух значений.
Эти поля — вместе с model_limits_enabled — сейчас не применяются. При их передаче ошибка не возникает, но ничего не сохраняется. Используйте models, чтобы ограничить доступные модели; ограничения по исходному IP пока нужно реализовывать у себя.
На стороне сервера нет batch-эндпоинта, и передача чего-то вроде count в теле запроса не имеет эффекта. Вместо этого вызывайте create в цикле на клиенте — см. раздел пакетного создания выше.
Эндпоинт обновления требует полный объект. GET полный объект сначала, измените его, затем PUT весь объект обратно, а не только измененные поля.
Отключение (status: 2) немедленно прекращает работу ключа, но сохраняет запись и историю использования, и вы можете в любой момент вернуть его в 1. Удаление необратимо и удаляет запись. Для временной приостановки лучше использовать отключение.
Поле used_quota token — это совокупные расходы этого ключа (÷ 500,000 = USD). Для разбивки по периодам или детализации на уровне вызовов используйте API для запроса логов с фильтром token_name.

Важные примечания

Системный token не является API-ключом, и эти два типа нельзя взаимозаменять
  • API-ключ (начинается с sk-) предназначен для /v1/* inference-эндпоинтов
  • Системный token (обычная строка без префикса) предназначен для /api/* management-эндпоинтов
При их путанице возвращаются 401 и ошибка invalid-token соответственно.
Обращайтесь с ключами в открытом виде осторожноИ ответ на создание, и список token возвращают ключи в открытом виде. Поэтому:
  • Не записывайте тела ответов, содержащие key, в файлы логов и не коммитьте их в репозиторий
  • Передавайте ключи участникам команды по защищенным каналам, а не в групповых чатах
  • Эти данные в открытом виде не содержат префикс sk-, поэтому типовые сканеры секретов могут их не обнаружить — не полагайтесь на автоматические проверки, чтобы они нашли их за вас
Операционные рекомендации
  • При массовом создании добавляйте небольшую задержку между вызовами, чтобы не создавать слишком высокую мгновенную параллельность запросов
  • Присваивайте каждому ключу осмысленный name (например, team-alice или prod-webhook), чтобы позже можно было сопоставлять использование по token_name в логах
  • Для ротации: создайте новый ключ, переведите на него трафик, отключите старый ключ, понаблюдайте некоторое время и удаляйте его только после того, как убедитесь, что вызовов больше нет

Связанная документация