API-ключи и учётные данные
Страница API Keys позволяет управлять ключами доступа к внешним провайдерам: языковым моделям (LLM), распознаванию речи (STT), синтезу речи (TTS), эмбеддингам и другим сервисам.
Обзор
API-ключи являются общими для всей организации — все проекты и агенты внутри организации используют одни и те же ключи. Это упрощает управление и позволяет быстро переключать провайдеров.
Типы провайдеров
| Тип | Тег | Описание |
|---|---|---|
| LLM | Синий | Провайдеры языковых моделей (OpenAI, Anthropic, xAI, Google и др.) |
| STT | Зелёный | Провайдеры распознавания речи (Deepgram) |
| TTS | Фиолетовый | Провайдеры синтеза речи (Cartesia, ElevenLabs, Inworld) |
| Embedding | Голубой | Провайдеры эмбеддингов для баз знаний |
| Image | Оранжевый | Провайдеры генерации изображений |
| Video | Красный | Провайдеры генерации видео |
| Integration | Синий | Учётные данные для произвольных HTTP-API, доступные из JS-функций (CRM, ERP, ваши внутренние сервисы) |
Добавление ключа
- Нажмите Add Key.
- В переключателе Тип выберите:
- LLM-провайдер — для моделей, STT, TTS, эмбеддингов и других сервисов, которые платформа подключает автоматически.
- Интеграция — для произвольного HTTP-API, к которому будете обращаться из JS-функций. См. раздел «Интеграции» ниже.
- Для LLM-провайдера: выберите его из выпадающего списка (загружается динамически) и заполните поля учётных данных:
- Для большинства провайдеров — один API-ключ.
- Для некоторых (например, Yandex) — API-ключ, Folder ID и другие параметры.
- Для GigaChat — OAuth-токен и область действия.
- Задайте Label (необязательно) — метку для удобной идентификации.
- Нажмите Add.
API-ключ шифруется при сохранении. После добавления полный ключ недоступен для просмотра — отображается только маскированный префикс.
Таблица ключей
| Колонка | Описание |
|---|---|
| Provider | Иконка и название провайдера |
| Label | Пользовательская метка |
| API Key | Маскированный префикс ключа |
| Type | Тип провайдера (LLM, STT, TTS и т.д.) |
| Status | Active или Inactive |
| Last Used | Дата последнего использования |
| Created | Дата создания |
Редактирование
Для редактирования ключа используйте контекстное меню (правый клик) > Edit:
- Label — изменить метку.
- Status — переключить между Active и Inactive.
Изменить сам API-ключ нельзя. Для замены ключа удалите старый и создайте новый.
Удаление
Удалить ключ можно через контекстное меню (правый клик) > Delete. Также доступно массовое удаление — выберите несколько ключей через чекбоксы и нажмите Delete Selected.
Удаление API-ключа немедленно прекращает работу всех агентов, использующих модели этого провайдера. Убедитесь, что ключ больше не нужен.
Интеграции
В отличие от ключей LLM/STT/TTS, которые платформа автоматически подхватывает при вызове моделей, интеграции — это произвольные учётные данные для сторонних HTTP-API (CRM, ERP, биллинг, ваши внутренние сервисы, 1С и т.д.). Они доступны из JS-функций под именем, которое вы зададите при создании.
Создание интеграции
-
Add Key → Тип: Интеграция.
-
Имя интеграции — короткий идентификатор, под которым она будет доступна в коде как
context.integrations.<имя>. Допустимы строчные латинские буквы, цифры и подчёркивание; должно начинаться с буквы; максимум 64 символа. Примеры:crm_main,stripe,onec_hrm,slack_alerts. -
Способ авторизации — определяет, какие поля сохранятся:
Способ Поля Когда выбирать Bearer / Token tokenБольшинство REST API (Stripe, Notion, GitHub, OpenAI-like, Telegram Bot API) Basic Auth username,password1С OData, корпоративные LDAP/AD-шлюзы, любая HTTP Basic API-ключ в HTTP-заголовке api_key,header_nameСервисы с кастомным заголовком ( X-Api-Key,X-Auth-Token,apikey)Произвольный JSON любые поля Нестандартные схемы: OAuth refresh-токены, подписанные запросы, multi-tenant ключи -
Базовый URL (необязательно) — корневой URL сервиса (например,
https://api.stripe.com/v1). Хвостовые слэши автоматически срезаются при сохранении. -
Label (необязательно) — метка для UI.
-
Add.
Использование в JS-функциях
В функции интеграция доступна как context.integrations.<имя> — объект с теми полями, которые вы заполнили.
// Bearer / Token
async function execute(context, axios, moment, console) {
const { token, base_url } = context.integrations.stripe;
const res = await axios.get(`${base_url}/customers`, {
headers: { Authorization: `Bearer ${token}` },
});
return { count: res.data.data.length };
}
// Basic Auth (axios соберёт заголовок автоматически)
async function execute(context, axios, moment, console) {
const { username, password, base_url } = context.integrations.onec_hrm;
const entity = encodeURIComponent("Catalog_Должности");
const res = await axios.get(
`${base_url}/odata/standard.odata/${entity}?$top=10&$format=json`,
{ auth: { username, password }, validateStatus: () => true }
);
return { status: res.status, items: res.data?.value ?? [] };
}
// API-ключ в HTTP-заголовке
async function execute(context, axios, moment, console) {
const { api_key, header_name, base_url } = context.integrations.shopify;
const res = await axios.get(`${base_url}/products.json`, {
headers: { [header_name]: api_key },
});
return res.data;
}
// Произвольный JSON — структура полностью на вашей стороне
async function execute(context, axios, moment, console) {
const { client_id, client_secret, base_url } =
context.integrations.custom_oauth;
// ...ваша логика подписи / получения токена...
}
Где доступны интеграции
context.integrations пробрасывается во всех сценариях исполнения JS:
- Function — ноды в workflow.
- Tools — кастомные функции, вызываемые агентом как инструмент.
- Error Handler — функции-обработчики ошибок (можно дёрнуть Sentry/Slack при сбое).
- Тестовый запуск — кнопка Run в редакторе функции.
Безопасность
- Значения шифруются при сохранении.
- Чувствительные поля (
password,token,api_key,secret, заголовокAuthorizationи т.п.) автоматически маскируются***в системных логах и трейсах. Сам HTTP-вызов идёт с реальным значением — маскируется только то, что попадает в логи. - Полное значение никогда не возвращается клиенту через API — UI показывает только префикс.
Не делайте return { token: context.integrations.crm.token }. Возвращённое значение попадает в state workflow'а и видно в UI истории выполнений. Используйте секреты только для подписи запросов внутри функции, а возвращайте уже бизнес-данные (результат API, нормализованные поля).
Несколько интеграций одного типа
Имя интеграции уникально в рамках организации — нельзя создать две crm_main. Если нужно несколько подключений к одному сервису, называйте их по контексту:
crm_main,crm_backup— основной и резервныйstripe_us,stripe_eu— разные регионыonec_hrm,onec_warehouse— разные базы 1С
Порядок использования ключей
При запуске агента платформа автоматически подбирает подходящий активный ключ:
- Определяется провайдер выбранной модели.
- Ищется активный ключ для этого провайдера.
- Если ключ найден — используется для вызова API.
- Если ключ не найден или неактивен — выполнение завершается с ошибкой.
Рекомендуется всегда иметь активный ключ для каждого провайдера, модели которого используются в ваших агентах. Используйте метки (labels) для различения ключей, если у вас их несколько.