Перейти к основному содержимому

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, ваши внутренние сервисы)

Добавление ключа

  1. Нажмите Add Key.
  2. В переключателе Тип выберите:
    • LLM-провайдер — для моделей, STT, TTS, эмбеддингов и других сервисов, которые платформа подключает автоматически.
    • Интеграция — для произвольного HTTP-API, к которому будете обращаться из JS-функций. См. раздел «Интеграции» ниже.
  3. Для LLM-провайдера: выберите его из выпадающего списка (загружается динамически) и заполните поля учётных данных:
    • Для большинства провайдеров — один API-ключ.
    • Для некоторых (например, Yandex) — API-ключ, Folder ID и другие параметры.
    • Для GigaChat — OAuth-токен и область действия.
  4. Задайте Label (необязательно) — метку для удобной идентификации.
  5. Нажмите Add.
Внимание

API-ключ шифруется при сохранении. После добавления полный ключ недоступен для просмотра — отображается только маскированный префикс.

Таблица ключей

КолонкаОписание
ProviderИконка и название провайдера
LabelПользовательская метка
API KeyМаскированный префикс ключа
TypeТип провайдера (LLM, STT, TTS и т.д.)
StatusActive или Inactive
Last UsedДата последнего использования
CreatedДата создания

Редактирование

Для редактирования ключа используйте контекстное меню (правый клик) > Edit:

  • Label — изменить метку.
  • Status — переключить между Active и Inactive.
Примечание

Изменить сам API-ключ нельзя. Для замены ключа удалите старый и создайте новый.

Удаление

Удалить ключ можно через контекстное меню (правый клик) > Delete. Также доступно массовое удаление — выберите несколько ключей через чекбоксы и нажмите Delete Selected.

Внимание

Удаление API-ключа немедленно прекращает работу всех агентов, использующих модели этого провайдера. Убедитесь, что ключ больше не нужен.

Интеграции

В отличие от ключей LLM/STT/TTS, которые платформа автоматически подхватывает при вызове моделей, интеграции — это произвольные учётные данные для сторонних HTTP-API (CRM, ERP, биллинг, ваши внутренние сервисы, 1С и т.д.). Они доступны из JS-функций под именем, которое вы зададите при создании.

Создание интеграции

  1. Add Key → Тип: Интеграция.

  2. Имя интеграции — короткий идентификатор, под которым она будет доступна в коде как context.integrations.<имя>. Допустимы строчные латинские буквы, цифры и подчёркивание; должно начинаться с буквы; максимум 64 символа. Примеры: crm_main, stripe, onec_hrm, slack_alerts.

  3. Способ авторизации — определяет, какие поля сохранятся:

    СпособПоляКогда выбирать
    Bearer / TokentokenБольшинство REST API (Stripe, Notion, GitHub, OpenAI-like, Telegram Bot API)
    Basic Authusername, password1С OData, корпоративные LDAP/AD-шлюзы, любая HTTP Basic
    API-ключ в HTTP-заголовкеapi_key, header_nameСервисы с кастомным заголовком (X-Api-Key, X-Auth-Token, apikey)
    Произвольный JSONлюбые поляНестандартные схемы: OAuth refresh-токены, подписанные запросы, multi-tenant ключи
  4. Базовый URL (необязательно) — корневой URL сервиса (например, https://api.stripe.com/v1). Хвостовые слэши автоматически срезаются при сохранении.

  5. Label (необязательно) — метка для UI.

  6. 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С

Порядок использования ключей

При запуске агента платформа автоматически подбирает подходящий активный ключ:

  1. Определяется провайдер выбранной модели.
  2. Ищется активный ключ для этого провайдера.
  3. Если ключ найден — используется для вызова API.
  4. Если ключ не найден или неактивен — выполнение завершается с ошибкой.
Совет

Рекомендуется всегда иметь активный ключ для каждого провайдера, модели которого используются в ваших агентах. Используйте метки (labels) для различения ключей, если у вас их несколько.