Систематическое руководство по безопасности API-ключей, охватывающее белые списки IP-адресов, белые списки моделей, лимиты расходов и то, как проверять утечку ключей
Максимальная покупательная способность ключа определяется вашим балансом аккаунта — то есть если утечет любой один ключ, ваш наихудший возможный убыток будет равен всему, что осталось на вашем счете.Защита ваших ключей сводится к четырем вещам: выдавайте отдельные ключи для каждой цели, задавайте каждому ключу границу полномочий, ограничивайте сумму, которую может потратить один ключ, и не храните ключи там, где их может увидеть кто-то другой.
Самый часто упускаемый пункт: если оставить на ключе включенную «Неограниченную квоту», этот один ключ откроет доступ ко всему балансу вашего аккаунта. Особенно для тестовых ключей всегда должен быть установлен лимит расходов.
Белый список IP-адресов (рекомендуется для production)
Это самая надежная защита из доступных. После настройки только запросы с указанных IP-адресов смогут использовать token — даже если ключ утечет, с любого другого компьютера он бесполезен.
Формат
Пример
Один IP-адрес
192.168.1.1
Диапазон CIDR
192.168.1.0/24
Несколько адресов
Можно указать несколько записей вместе
На production-серверах обычно фиксированный IP, поэтому они отлично подходят для белого списка IP. Укажите публичный исходящий IP-адрес вашего сервера, а не его внутренний адрес.
Не включайте это для подключений с динамическим IP. Домашний широкополосный доступ и офисные сети меняют исходящий IP, и каждый вызов будет завершаться ошибкой сразу после его изменения. Для таких сред используйте лимит расходов.
Белый список доступных моделей (для выделенных tokens)
Если оставить поле “Доступные модели” пустым, ограничений не будет — token сможет вызывать любую model на платформе. После заполнения этого поля token сможет только использовать модели, которые вы указали.У этого есть и плюсы, и минусы:
Подходит
tokens для одной задачи: сервис, который только генерирует изображения, token, которым вы делитесь с внешним сотрудником, или изоляция бюджета по каждой модели.
Не подходит
Ежедневное личное использование и пробное тестирование. Вам придется возвращаться в консоль каждый раз, когда вы переключаете models, а несовпадающие псевдонимы model могут ломать вызовы.
Это относится ко всем, и особенно к тестовым ключам.При создании токена отключите «Неограниченная квота» и укажите сумму в поле «Авторизованная квота» — либо используйте один из пресетов ниже под полем ($5 / $20 / $50 / $100 / $200 / $500).Смысл квоты в том, чтобы ограничить ваши потери суммой, которую вы можете себе позволить:
Скомпрометированный ключ с квотой $20 обойдется вам максимум в $20
Скомпрометированный ключ с включенной «Неограниченной квотой» может стоить вам весь баланс аккаунта
Максимальная сумма расходов по токену ограничена балансом вашего аккаунта. Квота $500 не резервирует и не замораживает эти деньги — это лишь верхний предел расходов этого токена. Реально он все равно может потратить только то, что доступно на балансе.
Никогда не используйте один ключ и для боевого трафика, и для локального тестирования. Когда они разделены, вы сможете полностью отключить проблемный test token, не затрагивая production.
Боевой ключ
Тестовый ключ
Список разрешенных IP
Рекомендуется (IP сервера постоянный)
Обычно отключен (IP меняется)
Разрешенная квота
Оцените по трафику, оставьте запас
Обязательно задайте, рекомендуется $5–$50
Доступные модели
Необязательно; зафиксируйте для стабильных нагрузок
Оставьте пустым для удобного переключения моделей
Срок действия
Можно настроить без срока действия
Укажите дату истечения
Количество
Один на проект или сервис
Один на тестовую задачу, отключайте после завершения
Присваивайте tokens понятные названия в консоли (например, prod-image-service, test-model-compare-0729) вместо имен по умолчанию. Так вы гораздо быстрее найдете и отключите нужный token, когда что-то пойдет не так. См. Tokens и группы.
Это безусловно самый распространенный путь утечки. Если ключ однажды попадает в Git, он остается в истории коммитов даже после удаления файла, и любой, у кого есть доступ к репозиторию, может его извлечь.Вместо этого читайте их из переменных окружения:
import osapi_key = os.environ["APIYI_API_KEY"] # Correctapi_key = "sk-your-api-key" # Wrong: a real key hardcoded in source
Добавьте .env в .gitignore и проверяйте перед коммитом. Эта команда подходит для самопроверки:
grep -rnE '(^|[^A-Za-z0-9])sk-[A-Za-z0-9]{10,}' .
Префикс (^|[^A-Za-z0-9]) в этом шаблоне важен. Без него sk- внутри обычных слов вроде task-, risk- и disk- вызывает лавину ложных срабатываний, которая скрывает реальные результаты.
Перед публикацией документации или технического материала проверьте текст, примеры кода и скриншоты. Скриншоты консоли, записи терминала и журналы ошибок нередко содержат ключ целиком. Используйте заполнитель вроде sk-your-api-key в каждом примере.
Публичные репозитории GitHub особенно опасны. Они постоянно сканируются автоматическими ботами, и утекший ключ часто используется в течение нескольких минут. Прежде чем публиковать проект в open source, убедитесь, что ни код, ни история коммитов не содержат реальный ключ.
Этому пути утечки всего несколько лет, и его чаще всего недооценивают.Вставка ключа в чат кажется временной мерой, но на практике:
Транскрипты попадают на диск
Инструменты AI для программирования обычно хранят полный разговор на вашем компьютере в виде файлов обычного текста, сохраняют их бессрочно и никогда не очищают автоматически.
Возобновление повторно передает
Возобновление старой сессии снова отправляет весь транскрипт как контекст, поэтому ключ не остается статичным.
Снимки файлов дублируют его
Эти инструменты часто создают снимки файлов до и после изменений, поэтому скрипт с ключом оказывается скопирован несколько раз.
Любой локальный процесс может прочитать их
Эти файлы доступны для чтения любой программе, запущенной от вашего имени — это более слабая граница, чем у вашего репозитория кода.
Всегда используйте одноразовый ключ для AI-инструментов и агентов: создайте его отдельно, задайте ему небольшую квоту (например, $5) и короткий срок действия, затем удалите его в консоли сразу после завершения задачи. Никогда не передавайте рабочий ключ AI-инструменту.
Перейдите на страницу token и удалите или отключите скомпрометированный token. Это единственное действие, которое немедленно прекращает утечку, и оно выполняется до любого расследования.
2
Создайте replacement token
Выпустите новый token — на этот раз с лимитом расходов и любыми применимыми границами разрешений — и обновите конфигурацию приложения.
3
Проверьте логи на предмет последствий
Просмотрите ваши журналы вызовов на предмет аномалий в период утечки: незнакомые модели, необычный объем или запросы в часы, когда вы не работали.
4
Устраните источник утечки
Выясните, где именно произошла утечка ключа — в коде, документации, скриншотах, транскриптах чата — и удалите это везде. Иначе ключ на замену утечет тем же способом.
Я настроил IP whitelist, и теперь каждый вызов завершается ошибкой. Что пошло не так?
Скорее всего, указан неверный IP. Вам нужен публичный исходящий IP сервера, а не внутренний адрес вроде 192.168.x.x.Если вы вызываете из домашнего широкополосного подключения или офисной сети, исходящий IP меняется вместе с вашим ISP, и такие среды плохо подходят для IP whitelist — используйте вместо этого лимит расходов.Чтобы устранить проблему, сначала очистите IP whitelist, убедитесь, что вызовы снова работают, а затем добавляйте правильные IP по одному.
Если задать квоту, деньги будут списаны или заморожены заранее?
Нет. Авторизованная квота — это только потолок расходов для этого token, а не предоплата и не блокировка средств.Вы можете назначить пяти token по квоте $100 каждому, имея на аккаунте только $50 — они будут делить эти $50, и когда они закончатся, ни один из token работать не будет. Максимальная расходная способность token всегда ограничена балансом аккаунта.
Сколько token может создать один аккаунт?
Ограничений нет; создавайте столько, сколько нужно.Мы рекомендуем разделять их по схеме проект плюс среда, например prod-support-bot, prod-image-service, test-model-eval. Более гранулярные token позволяют отключить ровно один, не затрагивая ничего остального, а расходы и логи каждого token можно проверять независимо.
Когда квота token исчерпана, он становится недействительным?
Нет. После исчерпания квоты вызовы отклоняются, но сам token сохраняется. Просто отредактируйте token и увеличьте разрешенную квоту в консоли, чтобы продолжить — не нужно создавать новый или обновлять конфигурацию.Именно поэтому стоит задавать лимит расходов: это восстановимый ограничитель, а не необратимое удаление.
Как понять, что кто-то еще использует мой key?
Проверьте логи вызовов. Самые важные три признака: models, которые вы никогда не используете, вызовы вне рабочего времени и объем запросов, не соответствующий вашей нагрузке.См. Как расследовать неожиданное использование ключа? для полной процедуры.
Полная справка по созданию, редактированию и группировке tokens.
Белый список моделей Token
Стоит ли задавать доступные модели и на что обратить внимание.
Изучение использования ключа
Используйте логи, чтобы определить реального инициатора неожиданных обращений.
Безопасность данных платформы
Как APIYI шифрует трафик и защищает ваши данные на стороне платформы.
Безопасность никогда не бывает мелочью. Все настройки выше находятся на странице управления token — нескольких минут настройки достаточно, чтобы закрыть большую часть риска.
Была ли эта страница полезной?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"API易文档中心","description":"企业级专业稳定的AI大模型API中转站,一个令牌、无限模型。支持OpenAI、Claude、Gemini、DeepSeek、Qwen等400+热门AI模型。","colors":{"primary":"#2563eb","light":"#3b82f6","dark":"#1d4ed8"},"logo":{"light":"https://mintcdn.com/apiyillc/LjCT1O0GrSur6F2v/logo/light.svg?fit=max\u0026auto=format\u0026n=LjCT1O0GrSur6F2v\u0026q=85\u0026s=4119ef17a74cc54be127f34578d8b5fa","dark":"https://mintcdn.com/apiyillc/LjCT1O0GrSur6F2v/logo/dark.svg?fit=max\u0026auto=format\u0026n=LjCT1O0GrSur6F2v\u0026q=85\u0026s=1f046ae9580247d96549ade642b5ecc4"},"favicon":"https://mintcdn.com/apiyillc/OMY6ItCc2mC1yzgA/logo/logo.webp?fit=max\u0026auto=format\u0026n=OMY6ItCc2mC1yzgA\u0026q=85\u0026s=62a7977ef801070e689df2d0291b9d13","api":{"openapi":["api-reference/nano-banana-2-generate-openapi.yaml","api-reference/nano-banana-2-edit-openapi.yaml","api-reference/nano-banana-2-generate-openapi-en.yaml","api-reference/nano-banana-2-edit-openapi-en.yaml","api-reference/nano-banana-pro-generate-openapi.yaml","api-reference/nano-banana-pro-edit-openapi.yaml","api-reference/nano-banana-pro-generate-openapi-en.yaml","api-reference/nano-banana-pro-edit-openapi-en.yaml","api-reference/gpt-image-2-all-generate-openapi.yaml","api-reference/gpt-image-2-all-edit-openapi.yaml","api-reference/gpt-image-2-all-generate-openapi-en.yaml","api-reference/gpt-image-2-all-edit-openapi-en.yaml","api-reference/gpt-image-2-all-chat-openapi.yaml","api-reference/gpt-image-2-all-chat-openapi-en.yaml","api-reference/gpt-image-2-vip-generate-openapi.yaml","api-reference/gpt-image-2-vip-edit-openapi.yaml","api-reference/gpt-image-2-vip-chat-openapi.yaml","api-reference/gpt-image-2-vip-generate-openapi-en.yaml","api-reference/gpt-image-2-vip-edit-openapi-en.yaml","api-reference/gpt-image-2-vip-chat-openapi-en.yaml"],"playground":{"display":"interactive","proxy":true},"examples":{"defaults":"required"}},"navbar":{"links":[{"href":"https://api.apiyi.com","label":"首页"},{"href":"https://imagen.apiyi.com","label":"AI出图"},{"href":"https://icover.ai","label":"AI视频"}],"primary":{"type":"button","label":"控制台","href":"https://api.apiyi.com/account/profile"}},"footer":{"socials":{"website":"https://api.apiyi.com"},"links":[{"header":"AI 集成","items":[{"label":"skill.md","href":"https://docs.apiyi.com/skill.md"},{"label":"llms.txt","href":"https://docs.apiyi.com/llms.txt"},{"label":"llms-full.txt","href":"https://docs.apiyi.com/llms-full.txt"},{"label":"model-registry.json","href":"https://docs.apiyi.com/model-registry.json"},{"label":"AI 开发者套件(中文)","href":"/developer-kit"},{"label":"AI Developer Kit (EN)","href":"/en/developer-kit"}]},{"header":"用户口碑 / Wall of Love","items":[{"label":"用户口碑(中文)","href":"/wall-of-love"},{"label":"Wall of Love (EN)","href":"/en/wall-of-love"}]}]},"seo":{"indexing":"all"},"icons":{"library":"lucide"},"banner":{"content":"🚀 **gemini-4-argon 和 Nano Banana 2.1 均已上线 | Now Live**:[详情 Details](https://docs.apiyi.com/changelog)","dismissible":true},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","aistudio"],"display":"header"},"metadata":{"timestamp":false},"styling":{"latex":true},"navigation":{"global":{"anchors":[]},"languages":[{"language":"zh","href":""},{"language":"en","navbar":{"links":[{"href":"https://api.apiyi.com","label":"Home"},{"href":"https://imagen.apiyi.com","label":"AI Image"},{"href":"https://icover.ai","label":"AI Video"}],"primary":{"type":"button","label":"Console","href":"https://api.apiyi.com/account/profile"}},"href":"en"},{"language":"zh-Hant","banner":{"content":"本頁由程式自動轉換為繁體中文,用詞以台灣正體為準;如有歧義請以[簡體中文版](/)為準。","dismissible":true},"footer":{"socials":{"website":"https://api.apiyi.com"},"links":[{"header":"AI 整合","items":[{"label":"skill.md","href":"https://docs.apiyi.com/skill.md"},{"label":"llms.txt","href":"https://docs.apiyi.com/llms.txt"},{"label":"llms-full.txt","href":"https://docs.apiyi.com/llms-full.txt"},{"label":"model-registry.json","href":"https://docs.apiyi.com/model-registry.json"},{"label":"AI 開發者套件(中文)","href":"/developer-kit"},{"label":"AI Developer Kit (EN)","href":"/en/developer-kit"}]},{"header":"使用者口碑 / Wall of Love","items":[{"label":"使用者口碑(中文)","href":"/wall-of-love"},{"label":"Wall of Love (EN)","href":"/en/wall-of-love"}]}]},"navbar":{"links":[{"href":"https://api.apiyi.com","label":"首頁"},{"href":"https://imagen.apiyi.com","label":"AI出圖"},{"href":"https://icover.ai","label":"AI影片"}],"primary":{"type":"button","label":"控制台","href":"https://api.apiyi.com/account/profile"}},"href":"zh-Hant"},{"language":"ja","banner":{"content":"このページは AI により翻訳されています。内容に相違がある場合は[English 版](/en)を正としてください。","dismissible":true},"footer":{"socials":{"website":"https://api.apiyi.com"},"links":[{"header":"AI統合","items":[{"label":"skill.md","href":"https://docs.apiyi.com/skill.md"},{"label":"llms.txt","href":"https://docs.apiyi.com/llms.txt"},{"label":"llms-full.txt","href":"https://docs.apiyi.com/llms-full.txt"},{"label":"model-registry.json","href":"https://docs.apiyi.com/model-registry.json"},{"label":"AI開発者キット(中国語)","href":"/developer-kit"},{"label":"AI Developer Kit (EN)","href":"/en/developer-kit"}]},{"header":"ユーザーの声 / Wall of Love","items":[{"label":"ユーザーの声(中国語)","href":"/wall-of-love"},{"label":"Wall of Love(英語)","href":"/en/wall-of-love"}]}]},"navbar":{"links":[{"href":"https://api.apiyi.com","label":"ホーム"},{"href":"https://imagen.apiyi.com","label":"AI画像生成"},{"href":"https://icover.ai","label":"AI動画生成"}],"primary":{"type":"button","label":"コンソール","href":"https://api.apiyi.com/account/profile"}},"href":"ja"},{"language":"ko","banner":{"content":"이 페이지는 AI로 번역되었습니다. 내용이 다를 경우 [English 버전](/en)을 기준으로 하십시오.","dismissible":true},"footer":{"socials":{"website":"https://api.apiyi.com"},"links":[{"header":"AI 통합","items":[{"label":"skill.md","href":"https://docs.apiyi.com/skill.md"},{"label":"llms.txt","href":"https://docs.apiyi.com/llms.txt"},{"label":"llms-full.txt","href":"https://docs.apiyi.com/llms-full.txt"},{"label":"model-registry.json","href":"https://docs.apiyi.com/model-registry.json"},{"label":"AI 개발자 키트(중국어)","href":"/developer-kit"},{"label":"AI Developer Kit (EN)","href":"/en/developer-kit"}]},{"header":"사용자 후기 / Wall of Love","items":[{"label":"사용자 후기(중국어)","href":"/wall-of-love"},{"label":"Wall of Love (영문)","href":"/en/wall-of-love"}]}]},"navbar":{"links":[{"href":"https://api.apiyi.com","label":"홈"},{"href":"https://imagen.apiyi.com","label":"AI 이미지 생성"},{"href":"https://icover.ai","label":"AI 동영상 생성"}],"primary":{"type":"button","label":"콘솔","href":"https://api.apiyi.com/account/profile"}},"href":"ko"},{"language":"ru","banner":{"content":"Эта страница переведена с помощью ИИ. При расхождениях ориентируйтесь на [английскую версию](/en).","dismissible":true},"footer":{"socials":{"website":"https://api.apiyi.com"},"links":[{"header":"AI-интеграция","items":[{"label":"skill.md","href":"https://docs.apiyi.com/skill.md"},{"label":"llms.txt","href":"https://docs.apiyi.com/llms.txt"},{"label":"llms-full.txt","href":"https://docs.apiyi.com/llms-full.txt"},{"label":"model-registry.json","href":"https://docs.apiyi.com/model-registry.json"},{"label":"Набор AI-разработчика (кит.)","href":"/developer-kit"},{"label":"AI Developer Kit (EN)","href":"/en/developer-kit"}]},{"header":"Отзывы пользователей / Wall of Love","items":[{"label":"Отзывы пользователей (на китайском)","href":"/wall-of-love"},{"label":"Wall of Love (EN)","href":"/en/wall-of-love"}]}]},"navbar":{"links":[{"href":"https://api.apiyi.com","label":"Главная"},{"href":"https://imagen.apiyi.com","label":"Генерация изображений"},{"href":"https://icover.ai","label":"Генерация видео"}],"primary":{"type":"button","label":"Консоль","href":"https://api.apiyi.com/account/profile"}},"href":"ru"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"apiyillc","hasAudioNarration":false,"actualSubdomain":"apiyillc","customDomains":["docs.apiyi.com"],"gitSource":{"type":"github","owner":"pdmaker","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae0d5098f66b62075dad5fc","collectionId":"724b8a67-54f3-42ef-b8c1-b2f6004aff10","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae0d5098f66b62075dad5fc"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{},"buildId":"6ae0d5098f66b62075dad5fc","clientVersion":"0.0.3990","searchFilterCounts":[{"language":"zh","tag":"首页","count":213},{"language":"en","tag":"Home","count":213},{"language":"ja","tag":"ホーム","count":213},{"language":"ko","tag":"홈","count":213},{"language":"ru","tag":"Главная","count":213},{"language":"zh-Hant","tag":"首頁","count":213},{"language":"zh","tag":"图片 API(官转)","count":80},{"language":"en","tag":"Image API (Official)","count":80},{"language":"ja","tag":"画像API(公式)","count":80},{"language":"ko","tag":"이미지 API (공식)","count":80},{"language":"ru","tag":"Image API (официальный)","count":80},{"language":"zh-Hant","tag":"圖片 API(官轉)","count":80},{"language":"zh","tag":"公告","count":76},{"language":"en","tag":"Announcements","count":76},{"language":"zh","tag":"AI风向标","count":73},{"language":"en","tag":"AI Radar","count":73},{"language":"zh","tag":"常见问题","count":63},{"language":"en","tag":"FAQ","count":63},{"language":"ja","tag":"FAQ","count":63},{"language":"ko","tag":"FAQ","count":63},{"language":"ru","tag":"FAQ","count":63},{"language":"zh-Hant","tag":"常見問題","count":63},{"language":"zh","tag":"使用场景","count":49},{"language":"en","tag":"Use Cases","count":49},{"language":"ja","tag":"活用例","count":49},{"language":"ko","tag":"활용 사례","count":49},{"language":"ru","tag":"Сценарии использования","count":49},{"language":"zh-Hant","tag":"使用場景","count":49},{"language":"zh","tag":"基础 API","count":47},{"language":"en","tag":"Basic API","count":47},{"language":"ja","tag":"基本API","count":47},{"language":"ko","tag":"기본 API","count":47},{"language":"ru","tag":"Базовый API","count":47},{"language":"zh-Hant","tag":"基礎 API","count":47},{"language":"zh","tag":"视频 API(官转)","count":38},{"language":"en","tag":"Video API (Official)","count":38},{"language":"ja","tag":"動画API(公式)","count":38},{"language":"ko","tag":"동영상 API (공식)","count":38},{"language":"ru","tag":"Video API (официальный)","count":38},{"language":"zh-Hant","tag":"影片 API(官轉)","count":38},{"language":"zh","tag":"模型价格","count":35},{"language":"en","tag":"Model Pricing","count":35},{"language":"ja","tag":"モデル料金","count":35},{"language":"ko","tag":"모델 요금","count":35},{"language":"ru","tag":"Цены на модели","count":35},{"language":"zh-Hant","tag":"模型價格","count":35},{"language":"zh","tag":"文本生成","count":27},{"language":"en","tag":"Text Generation","count":27},{"language":"ja","tag":"テキスト生成","count":27},{"language":"ko","tag":"텍스트 생성","count":27},{"language":"ru","tag":"Генерация текста","count":27},{"language":"zh-Hant","tag":"文本生成","count":27},{"language":"ja","tag":"課金とセキュリティ","count":17},{"language":"ko","tag":"결제 및 보안","count":17},{"language":"ru","tag":"Оплата и безопасность","count":17},{"language":"zh-Hant","tag":"充值與安全","count":17},{"language":"ja","tag":"NanoBananaベストプラクティス","count":15},{"language":"ko","tag":"NanoBanana 모범 사례","count":15},{"language":"ru","tag":"Лучшие практики NanoBanana","count":15},{"language":"zh-Hant","tag":"NanoBanana最佳實踐","count":15}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"models/models.css","content":".mp-layout{display:flex;gap:2.5rem;max-width:1400px;margin:0 auto;padding:2.5rem 1.5rem 4rem;font-size:15px;line-height:1.7;color:rgb(var(--gray-500, 113 115 119))}html.dark .mp-layout{color:rgb(var(--gray-400, 159 161 165))}.mp-rail{display:none}@media (min-width:1024px){.mp-rail{display:block;width:13rem;flex-shrink:0}}.mp-rail-nav{position:sticky;top:9.25rem;font-size:.875rem}.mp-rail-head{font-weight:600;margin:0 0 .375rem;color:rgb(var(--gray-900, 23 25 29))}html.dark .mp-rail-head{color:rgb(var(--gray-200, 223 225 229))}.mp-rail-link{display:block;padding:.22rem 0;color:rgb(var(--gray-500, 113 115 119));text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mp-content a,.mp-content code.mp-ep-rec,.mp-rail-link:hover{color:rgb(var(--primary, 37 99 235))}html.dark .mp-rail-link{color:rgb(var(--gray-400, 159 161 165))}html.dark .mp-content a,html.dark .mp-content code.mp-ep-rec,html.dark .mp-rail-link:hover{color:rgb(var(--primary-light, 59 130 246))}.mp-rail-vendors{max-height:45vh;overflow-y:auto}.mp-mt{margin-top:1rem}.mp-content{min-width:0;flex:1}.mp-content h2,.mp-title{color:rgb(var(--gray-900, 23 25 29))}.mp-title{font-size:2rem;font-weight:700;letter-spacing:-.02em;margin:0 0 .5rem}html.dark .mp-content strong,html.dark .mp-title{color:#fff}.mp-desc{color:rgb(var(--gray-500, 113 115 119));margin:0 0 1.5rem}html.dark .mp-content th,html.dark .mp-desc{color:rgb(var(--gray-400, 159 161 165))}.mp-content h2{font-size:1.375rem;font-weight:600;margin:2.75rem 0 1rem;padding-bottom:.45rem;border-bottom:1px solid rgb(var(--gray-200, 223 225 229)/.7);scroll-margin-top:12rem}@media (min-width:1024px){.mp-content h2{scroll-margin-top:16.5rem}}html.dark .mp-content h2{border-color:rgb(255 255 255/.1);color:#fff}.mp-content p,.mp-content ul{margin:.75rem 0}.mp-content ul{padding-left:1.4rem}.mp-content li{margin:.4rem 0}.mp-content strong{color:rgb(var(--gray-900, 23 25 29))}.mp-content a{text-decoration:none}.mp-content a:hover{text-decoration:underline}.mp-content code{font-size:.85em;background:rgb(var(--gray-100, 239 241 245)/.8);border:1px solid rgb(var(--gray-200, 223 225 229)/.7);padding:.1em .35em;border-radius:.375rem}html.dark .mp-content code{background:rgb(255 255 255/.06);border-color:rgb(255 255 255/.1)}.mp-content code.mp-ep-rec{background:rgb(var(--primary, 37 99 235)/.08);border-color:rgb(var(--primary, 37 99 235)/.45);font-weight:600}html.dark .mp-content code.mp-ep-rec{background:rgb(var(--primary-light, 59 130 246)/.14);border-color:rgb(var(--primary-light, 59 130 246)/.5)}.mp-content table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:.875rem;margin:1rem 0 1.5rem}.mp-content td,.mp-content th{padding:.55rem 1.25rem .55rem 0;white-space:nowrap}.mp-content th{text-align:left;font-weight:500;color:rgb(var(--gray-500, 113 115 119));border-bottom:1px solid rgb(var(--gray-200, 223 225 229)/.7)}.mp-content td{border-bottom:1px solid rgb(var(--gray-200, 223 225 229)/.45)}html.dark .mp-content th{border-color:rgb(255 255 255/.1)}html.dark .mp-content td{border-color:rgb(255 255 255/.07)}.mp-search{display:contents}.mp-search-bar{position:sticky;top:5rem;z-index:20;margin:0 0 1.75rem;background:rgb(var(--background-light, 255 255 255));padding:.75rem 0 .85rem;box-shadow:0 10px 14px -10px rgb(var(--gray-950, 11 13 17)/.28)}@media (min-width:1024px){.mp-search-bar{top:9.25rem}}html.dark .mp-search-bar{background:rgb(var(--background-dark, 10 11 16));box-shadow:0 8px 12px -10px rgb(0 0 0/.7)}.mp-search-label{margin:0 0 .5rem;padding-left:.6rem;border-left:3px solid rgb(var(--primary, 37 99 235));font-size:.9rem;font-weight:600;line-height:1.4;color:rgb(var(--primary, 37 99 235))}html.dark .mp-search-label{border-left-color:rgb(var(--primary-light, 59 130 246));color:rgb(var(--primary-light, 59 130 246))}.mp-search-input{width:100%;box-sizing:border-box;border:1px solid rgb(var(--gray-400, 159 161 165)/.3);border-radius:.75rem;padding:.7rem 1rem .7rem 2.65rem;font-size:.9rem;background-color:rgb(var(--background-light, 255 255 255));background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23717377' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:.9rem center;color:rgb(var(--gray-900, 23 25 29));outline:0;transition:border-color .15s ease,background-color .15s ease,box-shadow .15s ease}.mp-search-input::placeholder{color:rgb(var(--gray-500, 113 115 119))}.mp-search-input:hover{border-color:rgb(var(--gray-600, 81 83 87)/.3)}.mp-search-input:focus{border-color:rgb(var(--primary, 37 99 235));box-shadow:0 0 0 3px rgb(var(--primary, 37 99 235)/.16)}html.dark .mp-search-input{background-color:rgb(var(--background-dark, 10 11 16));background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%239fa1a5' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E\");border-color:rgb(var(--gray-600, 81 83 87)/.3);color:rgb(var(--gray-100, 239 241 245))}html.dark .mp-search-input::placeholder{color:rgb(255 255 255/.5)}html.dark .mp-search-input:hover{border-color:rgb(var(--gray-500, 113 115 119)/.35)}html.dark .mp-search-input:focus{border-color:rgb(var(--primary-light, 59 130 246));box-shadow:0 0 0 3px rgb(var(--primary-light, 59 130 246)/.22)}.mp-search-empty,.mp-search-meta{color:rgb(var(--gray-500, 113 115 119))}.mp-search-meta{font-size:.75rem;margin:.75rem 0 .25rem}.mp-search-empty{font-size:.875rem;margin-top:.75rem}html.dark .mp-search-empty,html.dark .mp-search-meta{color:rgb(var(--gray-400, 159 161 165))}.mp-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.8125rem}@media (min-width:1024px){.mp-jump{display:none}}"},{"filePath":"styles/agent-prompt.css","content":"div.prompt{border:1.5px solid rgb(var(--primary, 37 99 235)/.35);background:rgb(var(--primary, 37 99 235)/.035);padding:1.25rem 1.25rem 1rem;row-gap:.75rem}html.dark div.prompt{border-color:rgb(var(--primary-light, 59 130 246)/.4);background:rgb(var(--primary-light, 59 130 246)/.06)}div.prompt [data-component-part=prompt-content-wrapper]{width:100%}div.prompt [data-component-part=prompt-actions-wrapper]{width:100%;justify-content:flex-end}div.prompt [data-component-part=prompt-description]{flex:1;font-size:14px;line-height:1.65}div.prompt [data-component-part=prompt-description]>div>*{margin:0}div.prompt [data-component-part=prompt-description]>div>*+*{margin-top:.6rem}div.prompt [data-component-part=prompt-description] strong{font-size:15px;font-weight:650;color:rgb(var(--gray-900, 23 25 29))}html.dark div.prompt [data-component-part=prompt-description] strong{color:#fff}div.prompt [data-component-part=prompt-description]>div>*+p{color:rgb(var(--gray-600, 80 82 86))}html.dark div.prompt [data-component-part=prompt-description]>div>*+p{color:rgb(var(--gray-400, 159 161 165))}div.prompt [data-component-part=prompt-description] code{font-size:.85em;background:rgb(var(--gray-100, 239 241 245)/.9);border:1px solid rgb(var(--gray-200, 223 225 229)/.7);padding:.05em .35em;border-radius:.375rem}html.dark div.prompt [data-component-part=prompt-description] code{background:rgb(255 255 255/.06);border-color:rgb(255 255 255/.1)}div.prompt [data-component-part=prompt-description] blockquote{margin:0;padding:.75rem .9rem;font-style:normal;border:1px dashed rgb(var(--gray-300, 191 193 197));border-radius:.6rem;background:rgb(var(--background-light, 255 255 255));font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;line-height:1.6;color:rgb(var(--gray-600, 80 82 86));overflow-wrap:anywhere;-webkit-mask-image:linear-gradient(to bottom,#000 70%,transparent 100%);mask-image:linear-gradient(to bottom,#000 70%,transparent 100%)}div.prompt [data-component-part=prompt-description] blockquote ol,div.prompt [data-component-part=prompt-description] blockquote p{margin:0}div.prompt [data-component-part=prompt-description] blockquote li{padding:0}div.prompt [data-component-part=prompt-description] blockquote>*+*{margin-top:.5rem}div.prompt [data-component-part=prompt-description] blockquote code{background:0 0;border:0;padding:0;font-size:1em}div.prompt [data-component-part=prompt-description] blockquote a{color:inherit;text-decoration:none;pointer-events:none}html.dark div.prompt [data-component-part=prompt-description] blockquote{border-color:rgb(255 255 255/.15);background:rgb(var(--background-dark, 13 13 13));color:rgb(var(--gray-400, 159 161 165))}div.prompt [data-component-part=prompt-action-copy-button]{padding:.6rem 1.25rem;font-size:14px;line-height:20px;font-weight:600;border-radius:.65rem;gap:.45rem;box-shadow:0 1px 2px rgb(0 0 0/.08),0 4px 12px rgb(var(--primary, 37 99 235)/.25)}div.prompt [data-component-part=prompt-action-copy-button]::before{content:\"\";width:16px;height:16px;flex-shrink:0;background:currentColor;-webkit-mask:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='14' height='14' x='8' y='8' rx='2' ry='2'/%3E%3Cpath d='M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2'/%3E%3C/svg%3E\") center/contain no-repeat;mask:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='14' height='14' x='8' y='8' rx='2' ry='2'/%3E%3Cpath d='M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2'/%3E%3C/svg%3E\") center/contain no-repeat}div.prompt [data-component-part=prompt-action-copy-button] svg{width:12px;height:12px}@media (max-width:640px){div.prompt [data-component-part=prompt-actions-wrapper]>*{flex:1}}"}],"page":{"pagePath":"ru/faq/key-security-management","slug":"/ru/faq/key-security-management","pageMetadata":{"title":"Как безопасно управлять API-ключами?","description":"Систематическое руководство по безопасности API-ключей, охватывающее белые списки IP-адресов, белые списки моделей, лимиты расходов и то, как проверять утечку ключей","icon":"shield-check","href":"/ru/faq/key-security-management"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Систематическое руководство по безопасности API-ключей, охватывающее белые списки IP-адресов, белые списки моделей, лимиты расходов и то, как проверять утечку ключей\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Card,CardGroup,CodeBlock,Heading,Info,Note,OptimizedImage,Step,Steps,Table,Tip,Warning}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`краткий-ответ`,children:`Краткий ответ`}),`\n`,_jsxs(_components.p,{children:[`Максимальная покупательная способность ключа определяется вашим `,_jsx(_components.strong,{children:`балансом аккаунта`}),` — то есть если утечет любой один ключ, ваш наихудший возможный убыток будет равен всему, что осталось на вашем счете.`]}),`\n`,_jsxs(_components.p,{children:[`Защита ваших ключей сводится к четырем вещам: `,_jsx(_components.strong,{children:`выдавайте отдельные ключи для каждой цели, задавайте каждому ключу границу полномочий, ограничивайте сумму, которую может потратить один ключ, и не храните ключи там, где их может увидеть кто-то другой.`})]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Самый часто упускаемый пункт`}),`: если оставить на ключе включенную «Неограниченную квоту», этот один ключ откроет доступ ко всему балансу вашего аккаунта. Особенно для тестовых ключей всегда должен быть установлен лимит расходов.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`1-установите-для-token-границу-прав-доступа`,children:`1. Установите для token границу прав доступа`}),`\n`,_jsxs(_components.p,{children:[`При создании token отметьте `,_jsx(_components.strong,{children:`«Включить расширенные параметры»`}),`, чтобы показать настройки белого списка IP и доступных моделей.`]}),`\n`,_jsx(OptimizedImage,{className:`mint-block dark:mint-hidden`,src:`https://mintcdn.com/apiyillc/FBHa7JBOo1YFoQia/images/token-security-advanced-options.png?fit=max\u0026auto=format\u0026n=FBHa7JBOo1YFoQia\u0026q=85\u0026s=7c84c17523049b5806fea2ebcff96ea8`,alt:`Расширенные параметры token: доступные модели и белый список IP`,\"data-og-width\":`1246`,width:`1246`,\"data-og-height\":`1192`,height:`1192`,\"data-path\":`images/token-security-advanced-options.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/apiyillc/FBHa7JBOo1YFoQia/images/token-security-advanced-options.png?w=280\u0026fit=max\u0026auto=format\u0026n=FBHa7JBOo1YFoQia\u0026q=85\u0026s=ceb3eeee2b376322a41473011daf1bec 280w, https://mintcdn.com/apiyillc/FBHa7JBOo1YFoQia/images/token-security-advanced-options.png?w=560\u0026fit=max\u0026auto=format\u0026n=FBHa7JBOo1YFoQia\u0026q=85\u0026s=a9620dd0ebc1720f441db166b7b39aed 560w, https://mintcdn.com/apiyillc/FBHa7JBOo1YFoQia/images/token-security-advanced-options.png?w=840\u0026fit=max\u0026auto=format\u0026n=FBHa7JBOo1YFoQia\u0026q=85\u0026s=d5e5cc2a60219ea12d98cfeaf5189b56 840w, https://mintcdn.com/apiyillc/FBHa7JBOo1YFoQia/images/token-security-advanced-options.png?w=1100\u0026fit=max\u0026auto=format\u0026n=FBHa7JBOo1YFoQia\u0026q=85\u0026s=b6ffdfb598a94683a7aeb1674b362d1d 1100w, https://mintcdn.com/apiyillc/FBHa7JBOo1YFoQia/images/token-security-advanced-options.png?w=1650\u0026fit=max\u0026auto=format\u0026n=FBHa7JBOo1YFoQia\u0026q=85\u0026s=3b2ffc4b1d0a8dde0a999370f2f3b277 1650w, https://mintcdn.com/apiyillc/FBHa7JBOo1YFoQia/images/token-security-advanced-options.png?w=2500\u0026fit=max\u0026auto=format\u0026n=FBHa7JBOo1YFoQia\u0026q=85\u0026s=87413debbac46b67441f738602b69be3 2500w`}),`\n`,_jsx(OptimizedImage,{className:`mint-hidden dark:mint-block`,src:`https://mintcdn.com/apiyillc/FBHa7JBOo1YFoQia/images/token-security-advanced-options.png?fit=max\u0026auto=format\u0026n=FBHa7JBOo1YFoQia\u0026q=85\u0026s=7c84c17523049b5806fea2ebcff96ea8`,alt:`Расширенные параметры token: доступные модели и белый список IP`,\"data-og-width\":`1246`,width:`1246`,\"data-og-height\":`1192`,height:`1192`,\"data-path\":`images/token-security-advanced-options.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/apiyillc/FBHa7JBOo1YFoQia/images/token-security-advanced-options.png?w=280\u0026fit=max\u0026auto=format\u0026n=FBHa7JBOo1YFoQia\u0026q=85\u0026s=ceb3eeee2b376322a41473011daf1bec 280w, https://mintcdn.com/apiyillc/FBHa7JBOo1YFoQia/images/token-security-advanced-options.png?w=560\u0026fit=max\u0026auto=format\u0026n=FBHa7JBOo1YFoQia\u0026q=85\u0026s=a9620dd0ebc1720f441db166b7b39aed 560w, https://mintcdn.com/apiyillc/FBHa7JBOo1YFoQia/images/token-security-advanced-options.png?w=840\u0026fit=max\u0026auto=format\u0026n=FBHa7JBOo1YFoQia\u0026q=85\u0026s=d5e5cc2a60219ea12d98cfeaf5189b56 840w, https://mintcdn.com/apiyillc/FBHa7JBOo1YFoQia/images/token-security-advanced-options.png?w=1100\u0026fit=max\u0026auto=format\u0026n=FBHa7JBOo1YFoQia\u0026q=85\u0026s=b6ffdfb598a94683a7aeb1674b362d1d 1100w, https://mintcdn.com/apiyillc/FBHa7JBOo1YFoQia/images/token-security-advanced-options.png?w=1650\u0026fit=max\u0026auto=format\u0026n=FBHa7JBOo1YFoQia\u0026q=85\u0026s=3b2ffc4b1d0a8dde0a999370f2f3b277 1650w, https://mintcdn.com/apiyillc/FBHa7JBOo1YFoQia/images/token-security-advanced-options.png?w=2500\u0026fit=max\u0026auto=format\u0026n=FBHa7JBOo1YFoQia\u0026q=85\u0026s=87413debbac46b67441f738602b69be3 2500w`}),`\n`,_jsx(Heading,{level:`3`,id:`белый-список-ip-адресов-рекомендуется-для-production`,children:`Белый список IP-адресов (рекомендуется для production)`}),`\n`,_jsxs(_components.p,{children:[`Это `,_jsx(_components.strong,{children:`самая надежная защита из доступных`}),`. После настройки только запросы с указанных IP-адресов смогут использовать token — даже если ключ утечет, с любого другого компьютера он бесполезен.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Формат`}),_jsx(_components.th,{children:`Пример`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Один IP-адрес`}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`192.168.1.1`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Диапазон CIDR`}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`192.168.1.0/24`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Несколько адресов`}),_jsx(_components.td,{children:`Можно указать несколько записей вместе`})]})]})]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`На production-серверах обычно фиксированный IP, поэтому они отлично подходят для белого списка IP. Укажите `,_jsx(_components.strong,{children:`публичный исходящий IP-адрес`}),` вашего сервера, а не его внутренний адрес.`]})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Не включайте это для подключений с динамическим IP.`}),` Домашний широкополосный доступ и офисные сети меняют исходящий IP, и каждый вызов будет завершаться ошибкой сразу после его изменения. Для таких сред используйте лимит расходов.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`белый-список-доступных-моделей-для-выделенных-tokens`,children:`Белый список доступных моделей (для выделенных tokens)`}),`\n`,_jsxs(_components.p,{children:[`Если оставить поле “Доступные модели” `,_jsx(_components.strong,{children:`пустым, ограничений не будет`}),` — token сможет вызывать любую model на платформе. После заполнения этого поля token сможет `,_jsx(_components.strong,{children:`только`}),` использовать модели, которые вы указали.`]}),`\n`,_jsx(_components.p,{children:`У этого есть и плюсы, и минусы:`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Подходит`,icon:`circle-check`,children:_jsx(_components.p,{children:`tokens для одной задачи: сервис, который только генерирует изображения, token, которым вы делитесь с внешним сотрудником, или изоляция бюджета по каждой модели.`})}),_jsx(Card,{title:`Не подходит`,icon:`circle-x`,children:_jsx(_components.p,{children:`Ежедневное личное использование и пробное тестирование. Вам придется возвращаться в консоль каждый раз, когда вы переключаете models, а несовпадающие псевдонимы model могут ломать вызовы.`})})]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`В большинстве случаев мы `,_jsx(_components.strong,{children:`не рекомендуем`}),` задавать доступные модели. См. `,_jsx(_components.a,{href:`/ru/faq/token-model-whitelist`,children:`Нужно ли задавать доступные модели для token?`}),` для полного анализа компромиссов.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`2-установите-лимит-расходов-на-токен`,children:`2. Установите лимит расходов на токен`}),`\n`,_jsxs(_components.p,{children:[`Это относится ко `,_jsx(_components.strong,{children:`всем`}),`, и особенно к тестовым ключам.`]}),`\n`,_jsx(_components.p,{children:`При создании токена отключите «Неограниченная квота» и укажите сумму в поле «Авторизованная квота» — либо используйте один из пресетов ниже под полем ($5 / $20 / $50 / $100 / $200 / $500).`}),`\n`,_jsx(OptimizedImage,{className:`mint-block dark:mint-hidden`,src:`https://mintcdn.com/apiyillc/FBHa7JBOo1YFoQia/images/token-security-quota.png?fit=max\u0026auto=format\u0026n=FBHa7JBOo1YFoQia\u0026q=85\u0026s=2b37947ea48dc8503723b6fef3e67171`,alt:`Token quota settings: disable unlimited quota and set an amount`,\"data-og-width\":`1256`,width:`1256`,\"data-og-height\":`1024`,height:`1024`,\"data-path\":`images/token-security-quota.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/apiyillc/FBHa7JBOo1YFoQia/images/token-security-quota.png?w=280\u0026fit=max\u0026auto=format\u0026n=FBHa7JBOo1YFoQia\u0026q=85\u0026s=a6fdf66eb66a28a7e58b736e95d96d7e 280w, https://mintcdn.com/apiyillc/FBHa7JBOo1YFoQia/images/token-security-quota.png?w=560\u0026fit=max\u0026auto=format\u0026n=FBHa7JBOo1YFoQia\u0026q=85\u0026s=3137a580a55722d6c20caa6124197525 560w, https://mintcdn.com/apiyillc/FBHa7JBOo1YFoQia/images/token-security-quota.png?w=840\u0026fit=max\u0026auto=format\u0026n=FBHa7JBOo1YFoQia\u0026q=85\u0026s=2f2baff69b4564d1c1aae2373d172c9a 840w, https://mintcdn.com/apiyillc/FBHa7JBOo1YFoQia/images/token-security-quota.png?w=1100\u0026fit=max\u0026auto=format\u0026n=FBHa7JBOo1YFoQia\u0026q=85\u0026s=fe33db0a3f70c0b88211239ed54fd075 1100w, https://mintcdn.com/apiyillc/FBHa7JBOo1YFoQia/images/token-security-quota.png?w=1650\u0026fit=max\u0026auto=format\u0026n=FBHa7JBOo1YFoQia\u0026q=85\u0026s=57cda0ca0ddf59c5d02396e54a083f6e 1650w, https://mintcdn.com/apiyillc/FBHa7JBOo1YFoQia/images/token-security-quota.png?w=2500\u0026fit=max\u0026auto=format\u0026n=FBHa7JBOo1YFoQia\u0026q=85\u0026s=c43f6dd07acb336b74246fd1e15d9e23 2500w`}),`\n`,_jsx(OptimizedImage,{className:`mint-hidden dark:mint-block`,src:`https://mintcdn.com/apiyillc/FBHa7JBOo1YFoQia/images/token-security-quota.png?fit=max\u0026auto=format\u0026n=FBHa7JBOo1YFoQia\u0026q=85\u0026s=2b37947ea48dc8503723b6fef3e67171`,alt:`Token quota settings: disable unlimited quota and set an amount`,\"data-og-width\":`1256`,width:`1256`,\"data-og-height\":`1024`,height:`1024`,\"data-path\":`images/token-security-quota.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/apiyillc/FBHa7JBOo1YFoQia/images/token-security-quota.png?w=280\u0026fit=max\u0026auto=format\u0026n=FBHa7JBOo1YFoQia\u0026q=85\u0026s=a6fdf66eb66a28a7e58b736e95d96d7e 280w, https://mintcdn.com/apiyillc/FBHa7JBOo1YFoQia/images/token-security-quota.png?w=560\u0026fit=max\u0026auto=format\u0026n=FBHa7JBOo1YFoQia\u0026q=85\u0026s=3137a580a55722d6c20caa6124197525 560w, https://mintcdn.com/apiyillc/FBHa7JBOo1YFoQia/images/token-security-quota.png?w=840\u0026fit=max\u0026auto=format\u0026n=FBHa7JBOo1YFoQia\u0026q=85\u0026s=2f2baff69b4564d1c1aae2373d172c9a 840w, https://mintcdn.com/apiyillc/FBHa7JBOo1YFoQia/images/token-security-quota.png?w=1100\u0026fit=max\u0026auto=format\u0026n=FBHa7JBOo1YFoQia\u0026q=85\u0026s=fe33db0a3f70c0b88211239ed54fd075 1100w, https://mintcdn.com/apiyillc/FBHa7JBOo1YFoQia/images/token-security-quota.png?w=1650\u0026fit=max\u0026auto=format\u0026n=FBHa7JBOo1YFoQia\u0026q=85\u0026s=57cda0ca0ddf59c5d02396e54a083f6e 1650w, https://mintcdn.com/apiyillc/FBHa7JBOo1YFoQia/images/token-security-quota.png?w=2500\u0026fit=max\u0026auto=format\u0026n=FBHa7JBOo1YFoQia\u0026q=85\u0026s=c43f6dd07acb336b74246fd1e15d9e23 2500w`}),`\n`,_jsxs(_components.p,{children:[`Смысл квоты в том, чтобы `,_jsx(_components.strong,{children:`ограничить ваши потери суммой, которую вы можете себе позволить`}),`:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Скомпрометированный ключ с квотой $20 обойдется вам максимум в $20`}),`\n`,_jsxs(_components.li,{children:[`Скомпрометированный ключ с включенной «Неограниченной квотой» может стоить вам `,_jsx(_components.strong,{children:`весь баланс аккаунта`})]}),`\n`]}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`Максимальная сумма расходов по токену `,_jsx(_components.strong,{children:`ограничена балансом вашего аккаунта`}),`. Квота $500 не резервирует и не замораживает эти деньги — это лишь верхний предел расходов этого токена. Реально он все равно может потратить только то, что доступно на балансе.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`3-храните-боевые-и-тестовые-ключи-раздельно`,children:`3. Храните боевые и тестовые ключи раздельно`}),`\n`,_jsx(_components.p,{children:`Никогда не используйте один ключ и для боевого трафика, и для локального тестирования. Когда они разделены, вы сможете полностью отключить проблемный test token, не затрагивая production.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{}),_jsx(_components.th,{children:`Боевой ключ`}),_jsx(_components.th,{children:`Тестовый ключ`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Список разрешенных IP`})}),_jsx(_components.td,{children:`Рекомендуется (IP сервера постоянный)`}),_jsx(_components.td,{children:`Обычно отключен (IP меняется)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Разрешенная квота`})}),_jsx(_components.td,{children:`Оцените по трафику, оставьте запас`}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Обязательно задайте`}),`, рекомендуется $5–$50`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Доступные модели`})}),_jsx(_components.td,{children:`Необязательно; зафиксируйте для стабильных нагрузок`}),_jsx(_components.td,{children:`Оставьте пустым для удобного переключения моделей`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Срок действия`})}),_jsx(_components.td,{children:`Можно настроить без срока действия`}),_jsx(_components.td,{children:`Укажите дату истечения`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Количество`})}),_jsx(_components.td,{children:`Один на проект или сервис`}),_jsx(_components.td,{children:`Один на тестовую задачу, отключайте после завершения`})]})]})]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Присваивайте tokens `,_jsx(_components.strong,{children:`понятные названия`}),` в консоли (например, `,_jsx(_components.code,{children:`prod-image-service`}),`, `,_jsx(_components.code,{children:`test-model-compare-0729`}),`) вместо имен по умолчанию. Так вы гораздо быстрее найдете и отключите нужный token, когда что-то пойдет не так. См. `,_jsx(_components.a,{href:`/ru/faq/token-and-groups`,children:`Tokens и группы`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`4-не-храните-ключи-в-этих-местах`,children:`4. Не храните ключи в этих местах`}),`\n`,_jsx(Heading,{level:`3`,id:`репозитории-кода`,children:`Репозитории кода`}),`\n`,_jsxs(_components.p,{children:[`Это безусловно самый распространенный путь утечки. Если ключ однажды попадает в Git, `,_jsx(_components.strong,{children:`он остается в истории коммитов даже после удаления файла`}),`, и любой, у кого есть доступ к репозиторию, может его извлечь.`]}),`\n`,_jsx(_components.p,{children:`Вместо этого читайте их из переменных окружения:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` os`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`api_key `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` os.environ[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"APIYI_API_KEY\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Correct`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`api_key `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"sk-your-api-key\"`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Wrong: a real key hardcoded in source`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Добавьте `,_jsx(_components.code,{children:`.env`}),` в `,_jsx(_components.code,{children:`.gitignore`}),` и `,_jsx(_components.strong,{children:`проверяйте перед коммитом`}),`. Эта команда подходит для самопроверки:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`grep`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -rnE`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '(^|[^A-Za-z0-9])sk-[A-Za-z0-9]{10,}'`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` .`})]}),`\n`]})})}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Префикс `,_jsx(_components.code,{children:`(^|[^A-Za-z0-9])`}),` в этом шаблоне важен. Без него `,_jsx(_components.code,{children:`sk-`}),` внутри обычных слов вроде `,_jsx(_components.code,{children:`task-`}),`, `,_jsx(_components.code,{children:`risk-`}),` и `,_jsx(_components.code,{children:`disk-`}),` вызывает лавину ложных срабатываний, которая скрывает реальные результаты.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`публичная-документация-скриншоты-и-журналы`,children:`Публичная документация, скриншоты и журналы`}),`\n`,_jsxs(_components.p,{children:[`Перед публикацией документации или технического материала проверьте текст, примеры кода и `,_jsx(_components.strong,{children:`скриншоты`}),`. Скриншоты консоли, записи терминала и журналы ошибок нередко содержат ключ целиком. Используйте заполнитель вроде `,_jsx(_components.code,{children:`sk-your-api-key`}),` в каждом примере.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Публичные репозитории GitHub особенно опасны.`}),` Они постоянно сканируются автоматическими ботами, и утекший ключ часто используется в течение нескольких минут. Прежде чем публиковать проект в open source, убедитесь, что ни код, ни история коммитов не содержат реальный ключ.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`переписка-с-ai-и-ai-агентами`,children:`Переписка с AI и AI-агентами`}),`\n`,_jsx(_components.p,{children:`Этому пути утечки всего несколько лет, и его чаще всего недооценивают.`}),`\n`,_jsx(_components.p,{children:`Вставка ключа в чат кажется временной мерой, но на практике:`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Транскрипты попадают на диск`,icon:`hard-drive`,children:_jsx(_components.p,{children:`Инструменты AI для программирования обычно хранят полный разговор на вашем компьютере в виде файлов обычного текста, сохраняют их бессрочно и никогда не очищают автоматически.`})}),_jsx(Card,{title:`Возобновление повторно передает`,icon:`repeat`,children:_jsx(_components.p,{children:`Возобновление старой сессии снова отправляет весь транскрипт как контекст, поэтому ключ не остается статичным.`})}),_jsx(Card,{title:`Снимки файлов дублируют его`,icon:`copy`,children:_jsx(_components.p,{children:`Эти инструменты часто создают снимки файлов до и после изменений, поэтому скрипт с ключом оказывается скопирован несколько раз.`})}),_jsx(Card,{title:`Любой локальный процесс может прочитать их`,icon:`folder-open`,children:_jsxs(_components.p,{children:[`Эти файлы доступны для чтения `,_jsx(_components.strong,{children:`любой программе, запущенной от вашего имени`}),` — это более слабая граница, чем у вашего репозитория кода.`]})})]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Всегда используйте одноразовый ключ для AI-инструментов и агентов`}),`: создайте его отдельно, задайте ему небольшую квоту (например, $5) и короткий срок действия, затем удалите его в консоли сразу после завершения задачи. Никогда не передавайте рабочий ключ AI-инструменту.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`что-делать-если-ключ-уже-утек`,children:`Что делать, если ключ уже утек`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Немедленно удалите или отключите token`,children:_jsxs(_components.p,{children:[`Перейдите на `,_jsx(_components.a,{href:`https://api.apiyi.com/token`,children:`страницу token`}),` и удалите или отключите скомпрометированный token. Это единственное действие, которое немедленно прекращает утечку, и оно выполняется `,_jsx(_components.strong,{children:`до любого расследования`}),`.`]})}),_jsx(Step,{title:`Создайте replacement token`,children:_jsx(_components.p,{children:`Выпустите новый token — на этот раз с лимитом расходов и любыми применимыми границами разрешений — и обновите конфигурацию приложения.`})}),_jsx(Step,{title:`Проверьте логи на предмет последствий`,children:_jsxs(_components.p,{children:[`Просмотрите ваши `,_jsx(_components.a,{href:`/ru/faq/call-logs`,children:`журналы вызовов`}),` на предмет аномалий в период утечки: незнакомые модели, необычный объем или запросы в часы, когда вы не работали.`]})}),_jsx(Step,{title:`Устраните источник утечки`,children:_jsx(_components.p,{children:`Выясните, где именно произошла утечка ключа — в коде, документации, скриншотах, транскриптах чата — и удалите это везде. Иначе ключ на замену утечет тем же способом.`})})]}),`\n`,_jsx(Heading,{level:`2`,id:`частые-вопросы`,children:`Частые вопросы`}),`\n`,_jsxs(AccordionGroup,{children:[_jsxs(Accordion,{title:`Я настроил IP whitelist, и теперь каждый вызов завершается ошибкой. Что пошло не так?`,id:`ya-nastroil-ip-whitelist-i-teper-kazhdiy-vyzov-zavershaetsya-oshibkoy-chto-poshlo-ne-tak`,children:[_jsxs(_components.p,{children:[`Скорее всего, указан неверный IP. Вам нужен `,_jsx(_components.strong,{children:`публичный исходящий IP`}),` сервера, а не внутренний адрес вроде `,_jsx(_components.code,{children:`192.168.x.x`}),`.`]}),_jsx(_components.p,{children:`Если вы вызываете из домашнего широкополосного подключения или офисной сети, исходящий IP меняется вместе с вашим ISP, и такие среды плохо подходят для IP whitelist — используйте вместо этого лимит расходов.`}),_jsx(_components.p,{children:`Чтобы устранить проблему, сначала очистите IP whitelist, убедитесь, что вызовы снова работают, а затем добавляйте правильные IP по одному.`})]}),_jsxs(Accordion,{title:`Если задать квоту, деньги будут списаны или заморожены заранее?`,id:`esli-zadat-kvotu-dengi-budut-spisany-ili-zamorozheny-zaranee`,children:[_jsxs(_components.p,{children:[`Нет. Авторизованная квота — это только `,_jsx(_components.strong,{children:`потолок расходов`}),` для этого token, а не предоплата и не блокировка средств.`]}),_jsx(_components.p,{children:`Вы можете назначить пяти token по квоте $100 каждому, имея на аккаунте только $50 — они будут делить эти $50, и когда они закончатся, ни один из token работать не будет. Максимальная расходная способность token всегда ограничена балансом аккаунта.`})]}),_jsxs(Accordion,{title:`Сколько token может создать один аккаунт?`,id:`skolko-token-mozhet-sozdat-odin-akkaunt`,children:[_jsx(_components.p,{children:`Ограничений нет; создавайте столько, сколько нужно.`}),_jsxs(_components.p,{children:[`Мы рекомендуем разделять их по схеме `,_jsx(_components.strong,{children:`проект плюс среда`}),`, например `,_jsx(_components.code,{children:`prod-support-bot`}),`, `,_jsx(_components.code,{children:`prod-image-service`}),`, `,_jsx(_components.code,{children:`test-model-eval`}),`. Более гранулярные token позволяют отключить ровно один, не затрагивая ничего остального, а расходы и логи каждого token можно проверять независимо.`]})]}),_jsxs(Accordion,{title:`Когда квота token исчерпана, он становится недействительным?`,id:`kogda-kvota-token-ischerpana-on-stanovitsya-nedeystvitelnym`,children:[_jsxs(_components.p,{children:[`Нет. После исчерпания квоты вызовы отклоняются, но сам token сохраняется. Просто `,_jsx(_components.strong,{children:`отредактируйте token и увеличьте разрешенную квоту`}),` в консоли, чтобы продолжить — не нужно создавать новый или обновлять конфигурацию.`]}),_jsx(_components.p,{children:`Именно поэтому стоит задавать лимит расходов: это восстановимый ограничитель, а не необратимое удаление.`})]}),_jsxs(Accordion,{title:`Как понять, что кто-то еще использует мой key?`,id:`kak-ponyat-chto-kto-to-esche-ispolzuet-moy-key`,children:[_jsxs(_components.p,{children:[`Проверьте логи вызовов. Самые важные три признака: `,_jsx(_components.strong,{children:`models, которые вы никогда не используете`}),`, `,_jsx(_components.strong,{children:`вызовы вне рабочего времени`}),` и `,_jsx(_components.strong,{children:`объем запросов, не соответствующий вашей нагрузке`}),`.`]}),_jsxs(_components.p,{children:[`См. `,_jsx(_components.a,{href:`/ru/faq/troubleshoot-key-usage`,children:`Как расследовать неожиданное использование ключа?`}),` для полной процедуры.`]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`связанные-документы`,children:`Связанные документы`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Tokens и группы`,icon:`key`,href:`/ru/faq/token-and-groups`,children:_jsx(_components.p,{children:`Полная справка по созданию, редактированию и группировке tokens.`})}),_jsx(Card,{title:`Белый список моделей Token`,icon:`list`,href:`/ru/faq/token-model-whitelist`,children:_jsx(_components.p,{children:`Стоит ли задавать доступные модели и на что обратить внимание.`})}),_jsx(Card,{title:`Изучение использования ключа`,icon:`search`,href:`/ru/faq/troubleshoot-key-usage`,children:_jsx(_components.p,{children:`Используйте логи, чтобы определить реального инициатора неожиданных обращений.`})}),_jsx(Card,{title:`Безопасность данных платформы`,icon:`shield`,href:`/ru/faq/data-security`,children:_jsx(_components.p,{children:`Как APIYI шифрует трафик и защищает ваши данные на стороне платформы.`})})]}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`Безопасность никогда не бывает мелочью. Все настройки выше находятся на `,_jsx(_components.a,{href:`https://api.apiyi.com/token`,children:`странице управления token`}),` — нескольких минут настройки достаточно, чтобы закрыть большую часть риска.`]})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Как безопасно управлять API-ключами?","description":"Систематическое руководство по безопасности API-ключей, охватывающее белые списки IP-адресов, белые списки моделей, лимиты расходов и то, как проверять утечку ключей","icon":"shield-check","href":"/ru/faq/key-security-management"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Краткий ответ","slug":"краткий-ответ","depth":2,"children":[]},{"title":"1. Установите для token границу прав доступа","slug":"1-установите-для-token-границу-прав-доступа","depth":2,"children":[{"title":"Белый список IP-адресов (рекомендуется для production)","slug":"белый-список-ip-адресов-рекомендуется-для-production","depth":3,"children":[]},{"title":"Белый список доступных моделей (для выделенных tokens)","slug":"белый-список-доступных-моделей-для-выделенных-tokens","depth":3,"children":[]}]},{"title":"2. Установите лимит расходов на токен","slug":"2-установите-лимит-расходов-на-токен","depth":2,"children":[]},{"title":"3. Храните боевые и тестовые ключи раздельно","slug":"3-храните-боевые-и-тестовые-ключи-раздельно","depth":2,"children":[]},{"title":"4. Не храните ключи в этих местах","slug":"4-не-храните-ключи-в-этих-местах","depth":2,"children":[{"title":"Репозитории кода","slug":"репозитории-кода","depth":3,"children":[]},{"title":"Публичная документация, скриншоты и журналы","slug":"публичная-документация-скриншоты-и-журналы","depth":3,"children":[]},{"title":"Переписка с AI и AI-агентами","slug":"переписка-с-ai-и-ai-агентами","depth":3,"children":[]}]},{"title":"Что делать, если ключ уже утек","slug":"что-делать-если-ключ-уже-утек","depth":2,"children":[]},{"title":"Частые вопросы","slug":"частые-вопросы","depth":2,"children":[]},{"title":"Связанные документы","slug":"связанные-документы","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"dynamicCss":".mint-block {\n display: block\n}\n.mint-hidden {\n display: none\n}\n.dark\\:mint-block:is(.dark *) {\n display: block\n}\n.dark\\:mint-hidden:is(.dark *) {\n display: none\n}","subdomain":"apiyillc","siteName":"API易文档中心","title":"Как безопасно управлять API-ключами? - API易文档中心","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"zh":{"href":"/faq/key-security-management","matchLevel":1},"en":{"href":"/en/faq/key-security-management","matchLevel":1},"zh-Hant":{"href":"/zh-Hant/faq/key-security-management","matchLevel":1},"ja":{"href":"/ja/faq/key-security-management","matchLevel":1},"ko":{"href":"/ko/faq/key-security-management","matchLevel":1},"ru":{"href":"/ru/faq/key-security-management","matchLevel":0}}},"lastModified":"2026-07-29T16:11:15.843Z","originalFileLocation":"ru/faq/key-security-management.mdx","locale":"ru"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Систематическое руководство по безопасности API-ключей, охватывающее белые списки IP-адресов, белые списки моделей, лимиты расходов и то, как проверять утечку ключей\">\u003cmeta data-mint-head name=\"application-name\" content=\"API易文档中心\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/apiyillc/sQlsuRwD6o27XLvg/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/apiyillc/sQlsuRwD6o27XLvg/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/apiyillc/sQlsuRwD6o27XLvg/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/apiyillc/sQlsuRwD6o27XLvg/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/apiyillc/sQlsuRwD6o27XLvg/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/apiyillc/sQlsuRwD6o27XLvg/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/apiyillc/sQlsuRwD6o27XLvg/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/apiyillc/sQlsuRwD6o27XLvg/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/apiyillc/sQlsuRwD6o27XLvg/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Как безопасно управлять API-ключами? - API易文档中心\">\u003cmeta data-mint-head property=\"og:description\" content=\"Систематическое руководство по безопасности API-ключей, охватывающее белые списки IP-адресов, белые списки моделей, лимиты расходов и то, как проверять утечку ключей\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"API易文档中心\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.apiyi.com/ru/faq/key-security-management\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://apiyillc.mintlify.app/_mintlify/api/og/v2?division=Tokens+%D0%B8+%D0%B6%D1%83%D1%80%D0%BD%D0%B0%D0%BB%D1%8B\u0026amp;title=%D0%9A%D0%B0%D0%BA+%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE+%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D1%8F%D1%82%D1%8C+API-%D0%BA%D0%BB%D1%8E%D1%87%D0%B0%D0%BC%D0%B8%3F\u0026amp;description=%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5+%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE+%D0%BF%D0%BE+%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8+API-%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9%2C+%D0%BE%D1%85%D0%B2%D0%B0%D1%82%D1%8B%D0%B2%D0%B0%D1%8E%D1%89%D0%B5%D0%B5+%D0%B1%D0%B5%D0%BB%D1%8B%D0%B5+%D1%81%D0%BF%D0%B8%D1%81%D0%BA%D0%B8+IP-%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D0%BE%D0%B2%2C+%D0%B1%D0%B5%D0%BB%D1%8B%D0%B5+%D1%81%D0%BF%D0%B8%D1%81%D0%BA%D0%B8+%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D0%B5%D0%B9%2C+%D0%BB%D0%B8%D0%BC%D0%B8%D1%82%D1%8B+%D1%80%D0%B0%D1%81%D1%85%D0%BE%D0%B4%D0%BE%D0%B2+%D0%B8+%D1%82%D0%BE%2C+%D0%BA%D0%B0%D0%BA+%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D1%82%D1%8C+%D1%83%D1%82%D0%B5%D1%87%D0%BA%D1%83+%D0%BA\u0026amp;theme=421dcf1ed22dd4b5d53fa3cb\u0026amp;signature=c047917c9796c44bc942be68755592e41351b1d48f565cb46e7141e230b40e27\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Как безопасно управлять API-ключами? - API易文档中心\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Систематическое руководство по безопасности API-ключей, охватывающее белые списки IP-адресов, белые списки моделей, лимиты расходов и то, как проверять утечку ключей\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://apiyillc.mintlify.app/_mintlify/api/og/v2?division=Tokens+%D0%B8+%D0%B6%D1%83%D1%80%D0%BD%D0%B0%D0%BB%D1%8B\u0026amp;title=%D0%9A%D0%B0%D0%BA+%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE+%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D1%8F%D1%82%D1%8C+API-%D0%BA%D0%BB%D1%8E%D1%87%D0%B0%D0%BC%D0%B8%3F\u0026amp;description=%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5+%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE+%D0%BF%D0%BE+%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8+API-%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9%2C+%D0%BE%D1%85%D0%B2%D0%B0%D1%82%D1%8B%D0%B2%D0%B0%D1%8E%D1%89%D0%B5%D0%B5+%D0%B1%D0%B5%D0%BB%D1%8B%D0%B5+%D1%81%D0%BF%D0%B8%D1%81%D0%BA%D0%B8+IP-%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D0%BE%D0%B2%2C+%D0%B1%D0%B5%D0%BB%D1%8B%D0%B5+%D1%81%D0%BF%D0%B8%D1%81%D0%BA%D0%B8+%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D0%B5%D0%B9%2C+%D0%BB%D0%B8%D0%BC%D0%B8%D1%82%D1%8B+%D1%80%D0%B0%D1%81%D1%85%D0%BE%D0%B4%D0%BE%D0%B2+%D0%B8+%D1%82%D0%BE%2C+%D0%BA%D0%B0%D0%BA+%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D1%82%D1%8C+%D1%83%D1%82%D0%B5%D1%87%D0%BA%D1%83+%D0%BA\u0026amp;theme=421dcf1ed22dd4b5d53fa3cb\u0026amp;signature=c047917c9796c44bc942be68755592e41351b1d48f565cb46e7141e230b40e27\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/apiyillc/sQlsuRwD6o27XLvg/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"API易文档中心\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2563eb\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.apiyi.com/ru/faq/key-security-management\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/ru/faq/key-security-management.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ru\" href=\"https://docs.apiyi.com/ru/faq/key-security-management\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh\" href=\"https://docs.apiyi.com/faq/key-security-management\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.apiyi.com/en/faq/key-security-management\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh-Hant\" href=\"https://docs.apiyi.com/zh-Hant/faq/key-security-management\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ja\" href=\"https://docs.apiyi.com/ja/faq/key-security-management\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ko\" href=\"https://docs.apiyi.com/ko/faq/key-security-management\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.apiyi.com/faq/key-security-management\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.apiyi.com/#organization\",\"name\":\"API易文档中心\",\"url\":\"https://docs.apiyi.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/apiyillc/LjCT1O0GrSur6F2v/logo/light.svg?fit=max\u0026auto=format\u0026n=LjCT1O0GrSur6F2v\u0026q=85\u0026s=4119ef17a74cc54be127f34578d8b5fa\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.apiyi.com#website\",\"name\":\"API易文档中心\",\"url\":\"https://docs.apiyi.com\",\"publisher\":{\"@id\":\"https://docs.apiyi.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.apiyi.com/ru/faq/key-security-management#webpage\",\"url\":\"https://docs.apiyi.com/ru/faq/key-security-management\",\"name\":\"Как безопасно управлять API-ключами?\",\"description\":\"Систематическое руководство по безопасности API-ключей, охватывающее белые списки IP-адресов, белые списки моделей, лимиты расходов и то, как проверять утечку ключей\",\"dateModified\":\"2026-07-29T16:11:15.843Z\",\"isPartOf\":{\"@id\":\"https://docs.apiyi.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.apiyi.com/ru/faq/key-security-management#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.apiyi.com/ru/faq/key-security-management#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Tokens и журналы\",\"item\":\"https://docs.apiyi.com/ru/faq/log-duration-vs-client-wait\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Как безопасно управлять API-ключами?\",\"item\":\"https://docs.apiyi.com/ru/faq/key-security-management\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.apiyi.com/ru/faq/key-security-management#article\",\"headline\":\"Как безопасно управлять API-ключами?\",\"name\":\"Как безопасно управлять API-ключами?\",\"description\":\"Систематическое руководство по безопасности API-ключей, охватывающее белые списки IP-адресов, белые списки моделей, лимиты расходов и то, как проверять утечку ключей\",\"url\":\"https://docs.apiyi.com/ru/faq/key-security-management\",\"mainEntityOfPage\":{\"@id\":\"https://docs.apiyi.com/ru/faq/key-security-management#webpage\"},\"dateModified\":\"2026-07-29T16:11:15.843Z\",\"publisher\":{\"@id\":\"https://docs.apiyi.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.apiyi.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"API易文档中心\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"API易文档中心","nav":{"global":{"anchors":[]},"languages":[{"language":"zh","pages":[{"title":"zh","href":"/faq/key-security-management"}]},{"language":"en","navbar":{"links":[{"href":"https://api.apiyi.com","label":"Home"},{"href":"https://imagen.apiyi.com","label":"AI Image"},{"href":"https://icover.ai","label":"AI Video"}],"primary":{"type":"button","label":"Console","href":"https://api.apiyi.com/account/profile"}},"pages":[{"title":"en","href":"/en/faq/key-security-management"}]},{"language":"zh-Hant","banner":{"content":"本頁由程式自動轉換為繁體中文,用詞以台灣正體為準;如有歧義請以[簡體中文版](/)為準。","dismissible":true},"footer":{"socials":{"website":"https://api.apiyi.com"},"links":[{"header":"AI 整合","items":[{"label":"skill.md","href":"https://docs.apiyi.com/skill.md"},{"label":"llms.txt","href":"https://docs.apiyi.com/llms.txt"},{"label":"llms-full.txt","href":"https://docs.apiyi.com/llms-full.txt"},{"label":"model-registry.json","href":"https://docs.apiyi.com/model-registry.json"},{"label":"AI 開發者套件(中文)","href":"/developer-kit"},{"label":"AI Developer Kit (EN)","href":"/en/developer-kit"}]},{"header":"使用者口碑 / Wall of Love","items":[{"label":"使用者口碑(中文)","href":"/wall-of-love"},{"label":"Wall of Love (EN)","href":"/en/wall-of-love"}]}]},"navbar":{"links":[{"href":"https://api.apiyi.com","label":"首頁"},{"href":"https://imagen.apiyi.com","label":"AI出圖"},{"href":"https://icover.ai","label":"AI影片"}],"primary":{"type":"button","label":"控制台","href":"https://api.apiyi.com/account/profile"}},"pages":[{"title":"zh-Hant","href":"/zh-Hant/faq/key-security-management"}]},{"language":"ja","banner":{"content":"このページは AI により翻訳されています。内容に相違がある場合は[English 版](/en)を正としてください。","dismissible":true},"footer":{"socials":{"website":"https://api.apiyi.com"},"links":[{"header":"AI統合","items":[{"label":"skill.md","href":"https://docs.apiyi.com/skill.md"},{"label":"llms.txt","href":"https://docs.apiyi.com/llms.txt"},{"label":"llms-full.txt","href":"https://docs.apiyi.com/llms-full.txt"},{"label":"model-registry.json","href":"https://docs.apiyi.com/model-registry.json"},{"label":"AI開発者キット(中国語)","href":"/developer-kit"},{"label":"AI Developer Kit (EN)","href":"/en/developer-kit"}]},{"header":"ユーザーの声 / Wall of Love","items":[{"label":"ユーザーの声(中国語)","href":"/wall-of-love"},{"label":"Wall of Love(英語)","href":"/en/wall-of-love"}]}]},"navbar":{"links":[{"href":"https://api.apiyi.com","label":"ホーム"},{"href":"https://imagen.apiyi.com","label":"AI画像生成"},{"href":"https://icover.ai","label":"AI動画生成"}],"primary":{"type":"button","label":"コンソール","href":"https://api.apiyi.com/account/profile"}},"pages":[{"title":"ja","href":"/ja/faq/key-security-management"}]},{"language":"ko","banner":{"content":"이 페이지는 AI로 번역되었습니다. 내용이 다를 경우 [English 버전](/en)을 기준으로 하십시오.","dismissible":true},"footer":{"socials":{"website":"https://api.apiyi.com"},"links":[{"header":"AI 통합","items":[{"label":"skill.md","href":"https://docs.apiyi.com/skill.md"},{"label":"llms.txt","href":"https://docs.apiyi.com/llms.txt"},{"label":"llms-full.txt","href":"https://docs.apiyi.com/llms-full.txt"},{"label":"model-registry.json","href":"https://docs.apiyi.com/model-registry.json"},{"label":"AI 개발자 키트(중국어)","href":"/developer-kit"},{"label":"AI Developer Kit (EN)","href":"/en/developer-kit"}]},{"header":"사용자 후기 / Wall of Love","items":[{"label":"사용자 후기(중국어)","href":"/wall-of-love"},{"label":"Wall of Love (영문)","href":"/en/wall-of-love"}]}]},"navbar":{"links":[{"href":"https://api.apiyi.com","label":"홈"},{"href":"https://imagen.apiyi.com","label":"AI 이미지 생성"},{"href":"https://icover.ai","label":"AI 동영상 생성"}],"primary":{"type":"button","label":"콘솔","href":"https://api.apiyi.com/account/profile"}},"pages":[{"title":"ko","href":"/ko/faq/key-security-management"}]},{"language":"ru","banner":{"content":"Эта страница переведена с помощью ИИ. При расхождениях ориентируйтесь на [английскую версию](/en).","dismissible":true},"footer":{"socials":{"website":"https://api.apiyi.com"},"links":[{"header":"AI-интеграция","items":[{"label":"skill.md","href":"https://docs.apiyi.com/skill.md"},{"label":"llms.txt","href":"https://docs.apiyi.com/llms.txt"},{"label":"llms-full.txt","href":"https://docs.apiyi.com/llms-full.txt"},{"label":"model-registry.json","href":"https://docs.apiyi.com/model-registry.json"},{"label":"Набор AI-разработчика (кит.)","href":"/developer-kit"},{"label":"AI Developer Kit (EN)","href":"/en/developer-kit"}]},{"header":"Отзывы пользователей / Wall of Love","items":[{"label":"Отзывы пользователей (на китайском)","href":"/wall-of-love"},{"label":"Wall of Love (EN)","href":"/en/wall-of-love"}]}]},"navbar":{"links":[{"href":"https://api.apiyi.com","label":"Главная"},{"href":"https://imagen.apiyi.com","label":"Генерация изображений"},{"href":"https://icover.ai","label":"Генерация видео"}],"primary":{"type":"button","label":"Консоль","href":"https://api.apiyi.com/account/profile"}},"tabs":[{"tab":"Главная","icon":"house","pages":[{"title":"Главная","href":"/ru"}]},{"tab":"Сценарии использования","icon":"layout-grid","pages":[{"title":"Сценарии использования","href":"/ru/scenarios"}]},{"tab":"FAQ","icon":"circle-question-mark","groups":[{"group":"Обзор","pages":[{"title":"Обзор часто задаваемых вопросов","sidebarTitle":"Часто задаваемые вопросы","icon":"circle-question-mark","href":"/ru/faq"}]},{"group":"Возможности сайта","icon":"compass","pages":[{"title":"Tokens \u0026 Группы","icon":"key","href":"/ru/faq/token-and-groups"},{"title":"Что такое группа? Объяснение User Group и Token Group","icon":"layers","href":"/ru/faq/groups-explained"},{"title":"Чем отличаются группы CodexReverse, ClaudeCode и по умолчанию?","icon":"code","href":"/ru/faq/codex-claudecode-default-groups"},{"title":"Есть ли интеграция одним кликом?","icon":"plug","href":"/ru/faq/one-click-integration"}]},{"group":"Tokens и журналы","icon":"key","pages":[{"title":"В журнале указано, что вызов завершился и был тарифицирован, но мой клиент так и не получил ответ — как это отладить?","icon":"stethoscope","href":"/ru/faq/log-duration-vs-client-wait"},{"title":"Почему я не могу использовать некоторые модели?","icon":"lock","href":"/ru/faq/model-availability"},{"title":"Что такое персональный token доступа и как заменить системный token?","icon":"key-round","href":"/ru/faq/personal-access-token"},{"title":"Как создать KEY?","icon":"key","href":"/ru/faq/token-management"},{"title":"Нужно ли задавать доступные модели для token?","description":"Подробное объяснение механизма доступных моделей для token API.YI, рекомендации по использованию и типичные сценарии","icon":"list-check","href":"/ru/faq/token-model-whitelist"},{"title":"Как безопасно управлять API-ключами?","icon":"shield-check","href":"/ru/faq/key-security-management"},{"title":"В чем разница между режимами тарификации token?","description":"Подробное объяснение 5 режимов тарификации token в API.YI, сценариев использования и лучших практик","icon":"calculator","href":"/ru/faq/token-billing-modes"},{"title":"Как посмотреть мои записи вызовов?","icon":"file-text","href":"/ru/faq/call-logs"},{"title":"Где найти идентификатор запроса?","icon":"search","href":"/ru/faq/request-id-troubleshooting"},{"title":"Как читать суммы тарификации в логах?","icon":"receipt","href":"/ru/faq/log-billing-explained"},{"title":"Как долго хранятся журналы вызовов и когда они очищаются?","icon":"clock","href":"/ru/faq/log-retention-policy"},{"title":"Что нужно знать о настройках часового пояса в логах и экспорте данных?","icon":"globe","href":"/ru/faq/log-timezone-and-export"},{"title":"Могу ли я просматривать подробные логи в backend для устранения неполадок?","icon":"toggle-right","href":"/ru/faq/user-logs-control"},{"title":"Как расследовать неожиданное использование API Key?","icon":"key","href":"/ru/faq/troubleshoot-key-usage"}]},{"group":"Корпоративные услуги","icon":"building-2","pages":[{"title":"Что такое Enterprise-группа? Когда следует ее использовать?","icon":"building-2","href":"/ru/faq/enterprise-group-vertex-fallback"},{"title":"Есть ли более быстрый или корпоративный маршрут для генерации изображений?","icon":"route","href":"/ru/faq/image-generation-fast-enterprise-route"},{"title":"Надёжен ли корпоративный сервис APIYI? Подлинны ли модели?","icon":"badge-check","href":"/ru/faq/enterprise-trust"},{"title":"В чем разница между корпоративными и индивидуальными пользователями?","icon":"building-2","href":"/ru/faq/enterprise-vs-individual"},{"title":"Как корпоративным клиентам пополнять баланс?","icon":"landmark","href":"/ru/faq/enterprise-recharge"},{"title":"Как университетским клиентам оформить возмещение без лишних хлопот?","icon":"graduation-cap","href":"/ru/faq/university-reimbursement"},{"title":"Предлагает ли APIYI SLA-гарантии?","icon":"shield-check","href":"/ru/faq/sla-guarantee"},{"title":"Нужна ли мини-программе Agent регистрация алгоритма?","icon":"file-check","href":"/ru/faq/agent-miniapp-algorithm-filing"},{"title":"Как обеспечить соответствие требованиям для продукта, ориентированного на Китай, при использовании зарубежных моделей?","icon":"scale","href":"/ru/faq/overseas-model-compliance"}]},{"group":"Оплата и безопасность","icon":"shield","pages":[{"title":"Что означает суффикс -c в названиях model?","icon":"tag","href":"/ru/faq/model-name-suffix-c"},{"title":"Цены совпадают с официальными тарифами — зачем покупать у APIYI?","icon":"badge-percent","href":"/ru/faq/official-pricing-advantages"},{"title":"Почему APIYI может стоить ниже официальных тарифов?","icon":"trending-down","href":"/ru/faq/why-cheaper-than-official"},{"title":"Что означает модельный 'множитель'?","icon":"calculator","href":"/ru/faq/model-multiplier"},{"title":"Сколько вычислительных ресурсов дают 100 RMB?","icon":"calculator","href":"/ru/faq/rmb-to-computing-power"},{"title":"Что такое механизм предварительного списания для API-вызовов?","icon":"calculator","href":"/ru/faq/pre-deduction-quota"},{"title":"Поддерживает ли APIYI тарификацию кэша?","icon":"database","href":"/ru/faq/cache-billing"},{"title":"Какие способы оплаты поддерживает APIYI?","icon":"credit-card","href":"/ru/faq/payment-methods"},{"title":"Какие акции по пополнению доступны?","icon":"gift","href":"/ru/faq/recharge-promotions"},{"title":"Истекает ли срок действия моего баланса APIYI? Каков срок действия?","icon":"hourglass","href":"/ru/faq/balance-validity-period"},{"title":"Как настроить оповещения о балансе?","icon":"bell","href":"/ru/faq/balance-alerts"},{"title":"Почему я не могу отправлять запросы при оставшемся балансе?","icon":"credit-card","href":"/ru/faq/balance-insufficient"},{"title":"Что делать, если сумма счета меньше $100?","icon":"receipt","href":"/ru/faq/invoice-minimum-amount"},{"title":"Я указал неверные данные в счёте. Можно ли перевыпустить счёт?","icon":"receipt","href":"/ru/faq/invoice-reissue"},{"title":"Какова политика возврата средств APIYI?","icon":"receipt","href":"/ru/faq/refund-policy"},{"title":"Как подать заявку на партнерство агента? Могу ли я получать возврат, приглашая друзей?","icon":"users","href":"/ru/faq/referral-program"},{"title":"Как обеспечивается безопасность контента и соблюдение требований?","icon":"shield-check","href":"/ru/faq/content-safety"},{"title":"Как APIYI обеспечивает безопасность данных?","icon":"shield","href":"/ru/faq/data-security"}]},{"group":"Сеть и подключение","icon":"wifi","pages":[{"title":"Как избежать тайм-аутов API?","icon":"timer","href":"/ru/faq/timeout-configuration"},{"title":"Нужен ли мне прокси для использования API?","icon":"wifi","href":"/ru/faq/network-proxy"},{"title":"Python выдаёт SSLEOFError, но curl работает?","icon":"shield-alert","href":"/ru/faq/openssl-pq-handshake-eof"},{"title":"Где находятся серверы APIYI? Какой сервер мне выбрать?","icon":"server","href":"/ru/faq/server-location"},{"title":"Медленное скачивание изображений/видео из CDN или таймаут — что делать?","icon":"gauge","href":"/ru/faq/cdn-download-slow"},{"title":"Является ли http тем же самым, что и HTTP/1.1?","icon":"network","href":"/ru/faq/http-vs-http11"},{"title":"Как снизить задержку API генерации изображений?","icon":"gauge","href":"/ru/faq/image-api-network-latency-optimization"},{"title":"Веб-сайт или API возвращает 502 — что мне делать?","icon":"refresh-cw","href":"/ru/faq/website-502-error"},{"title":"Скрипт получает 502, но в журналах вызовов ничего нет?","icon":"unplug","href":"/ru/faq/proxy-empty-502"},{"title":"Запросы на генерацию изображений обрываются примерно через 90 секунд при работе через прокси?","icon":"unplug","href":"/ru/faq/proxy-idle-timeout-disconnect"},{"title":"Запрос на генерацию изображения зависает без результата, но в журнале указана ошибка записи?","icon":"hourglass","href":"/ru/faq/image-direct-large-response-stall"}]},{"group":"Аккаунт и вход","icon":"user","pages":[{"title":"Как обеспечить безопасность аккаунта? Зачем привязывать 2FA и Passkey?","icon":"shield-check","href":"/ru/faq/account-security-2fa-passkey"},{"title":"Какие почтовые провайдеры поддерживает APIYI для регистрации?","icon":"mail","href":"/ru/faq/email-registration"},{"title":"Как войти с помощью Passkey?","icon":"fingerprint-pattern","href":"/ru/faq/passkey-login"},{"title":"Вход через GitHub показывает «Учетная запись уже привязана»?","icon":"github","href":"/ru/faq/github-bindng-bindng-error"},{"title":"Что делать, если вы забыли пароль?","icon":"lock","href":"/ru/faq/forgot-password"},{"title":"Почему мой API Key недействителен?","icon":"key","href":"/ru/faq/invalid-api-key"},{"title":"Как удалить учетную запись?","icon":"trash","href":"/ru/faq/account-deletion"}]}]},{"tab":"Обновления в реальном времени","icon":"activity","pages":[{"title":"Обновления в реальном времени","href":"/ru/live"}]},{"tab":"Объявления","icon":"megaphone","pages":[{"title":"Объявления","href":"/ru/changelog"}]},{"tab":"Акции","icon":"gift","pages":[{"title":"Акции","href":"/ru/faq/recharge-promotions"}]},{"tab":"Цены на модели","icon":"circle-dollar-sign","pages":[{"title":"Цены на модели","href":"/ru/models"}]}]}]},"title":"Как безопасно управлять API-ключами? - API易文档中心","buildId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","deploymentId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","dynamics":["10e4515597","a74be98ba7"],"chunks":["BannerMarkdown-CJDb0dYK.js","dist-Cv_O2fky.js","lib--scc4DXi.js","lib-B8HbPgcC.js","clsx-BGBGWFTt.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","zoom-image-lightbox-D7yRe3On.js","lightbox-handle-r17bVUz3.js"]}