Обновить API-ключ
Изменить переданные настройки ключа и сохранить пропущенные поля
Для пользователей из материкового Китая: используйте https://api.toapis.cn в качестве эндпоинта (Base URL). Замените https://api.toapis.com на https://api.toapis.cn во всех примерах этого документа.
Поведение
Изменяет настройки указанного ключа — например, имя, лимиты, статус или срок действия. В теле запроса должно быть хотя бы одно поле: имя, список моделей, дневной/месячный лимиты, unlimited, остаток квоты, статус, срок действия; непереданные поля сохраняют текущие значения.
Включение и статус
- Одно изменение настроек не включает ключ.
- Если в том же запросе явно передан
status=enabled, обновлённые срок действия,unlimitedи квота проверяются вместе: истёкший ключ или ключ с исчерпанным лимитом включить нельзя, возвращается 409. - Отозванный ключ возвращает 404.
- Если
statusопущен, сохранённый статус не меняется: ключиdisabled/expired/exhaustedне восстанавливаются от обновления других полей; у ключаenabledчитаемый статус вычисляется из квоты и срока, поэтому после обновления он может вернуться вenabled.
Проверка и запись
- Поля сумм проверяются как при создании: JSON-числа и значения без точной конверсии отклоняются.
model_limitsравный[]снимает ограничение моделей; дневной/месячный лимитыnullили"0"снимают лимит без сброса счётчиков использования.- Установка
remaining_creditsперезаписывает сохранённый в базе остаток; дальнейшие списания и возвраты идут от нового значения, а уже возникшие, но ещё не записанные пакетные списания применятся позже. - Обновление не меняет накопленное использование и баланс аккаунта.
- Если любое поле не проходит проверку, запрос не записывается целиком — частичного обновления не бывает. Обновление выполняется в транзакции с проверкой итоговой конфигурации и записывает только явно переданные поля.
- Инвалидация кэша и границы применения для выполняющихся запросов прежние.
Аутентификация
AuthorizationstringзаголовокобязательноИспользуйте Bearer YOUR_SYSTEM_ACCESS_TOKEN. Ключ модели не подходит, X-User-Id не нужен. См. правила доступа.
Параметры запроса
api_key_idstringпутьобязательноДесятичный строковый ID собственного обычного ключа, не секрет sk-.
Непустое тело требует Content-Type: application/json и ограничено 16384 байтами. Верхний уровень должен быть JSON-объектом. Неизвестные и повторные поля, а также query-параметры отклоняются. Срок чтения тела записи составляет 10 секунд.
statusstringтелоТолько enabled или disabled. expired, exhausted и deleted доступны только для чтения.
expires_atstring | nullтелоБудущее время RFC 3339, дробные секунды округляются вверх. null или пропуск при создании означает бессрочно; пропуск при обновлении сохраняет значение.
namestringтелоПри передаче имя обрезается по краям и должно быть непустым, не более 50 байт UTF-8. Пропуск сохраняет имя.
model_limitsarrayтелоЗаменяет весь список моделей. [] снимает ограничения; null запрещен. Уберите пробелы по краям элементов, исключите пустые строки и запятые, удалите повторы с сохранением порядка. После объединения запятыми максимум 1024 байта UTF-8.
daily_limit_creditsstring | nullтелоДневной лимит credits, null или строка "0" снимают лимит.
monthly_limit_creditsstring | nullтелоМесячный лимит credits, null или строка "0" снимают лимит.
unlimitedbooleanтелоЛогическое значение; null запрещен. При переключении в false без remaining_credits сохраняется записанный остаток, который может быть уже исчерпан. Ключ автоматически не включается.
remaining_creditsstring | nullтелоУстанавливает абсолютный остаток credits, а не прибавляет его. При итоговом unlimited=false допустима только неотрицательная десятичная строка; при true только пропуск или null. Пропуск сохраняет записанный остаток; null не обнуляет остаток, записанный у безлимитного ключа.
allow_ipsarrayтелоСписок IP источника только для этого ключа модели. Массив отдельных IPv4/IPv6 адресов с удалением пробелов, нормализацией и удалением повторов. [] снимает ограничение; null и неверный адрес дают 400. CIDR, имена хостов, порты и IPv6 zone не поддерживаются. Пропуск в PATCH сохраняет значение.
Примеры запросов
Пример запроса
curl --request PATCH \
--url 'https://api.toapis.com/api/v1/api-keys/43' \
--header 'Authorization: Bearer YOUR_SYSTEM_ACCESS_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"status": "disabled"}'import requests
response = requests.patch(
"https://api.toapis.com/api/v1/api-keys/43",
headers={"Authorization": "Bearer YOUR_SYSTEM_ACCESS_TOKEN"},
json={'status': 'disabled'},
timeout=30,
)
response.raise_for_status()
print(response.json())const response = await fetch("https://api.toapis.com/api/v1/api-keys/43", {
method: "PATCH",
headers: { Authorization: "Bearer YOUR_SYSTEM_ACCESS_TOKEN", "Content-Type": "application/json" },
body: JSON.stringify({"status": "disabled"}),
signal: AbortSignal.timeout(30_000),
});
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${await response.text()}`);
}
console.log(await response.json());Поля ответа
Примеры содержат вымышленные данные. Метаданные описаны в деталях ключа, общий контракт и ошибки в подключении.
Примеры ответов
Пример ответа
{
"code": 0,
"message": "",
"data": {
"id": "43",
"name": "Example Key",
"key_hint": "****xyz9",
"status": "disabled",
"created_at": "2026-11-01T08:00:00Z",
"expires_at": "2027-01-01T00:00:00Z",
"unlimited": false,
"remaining_credits": "500",
"daily_limit_credits": null,
"monthly_limit_credits": null,
"model_limits": [],
"allow_ips": []
}
}