GPT-6 Sol и Claude Opus 5.5 уже доступныGPT-6 Sol вдвое дешевле 5.6 Sol

Lovable API Key: где хранить ключ и как его защитить

Куда идёт ключ, четыре вещи, которые называют Lovable API Key, функция, которую мы запустили с GPT, Claude и DeepSeek, и что делать, если ключ утёк.

Kiki, OmniaKey COO10 мин чтения
На этой странице

В Lovable ваш Lovable API Key живёт в Secrets: откройте More → Settings → Secrets на панели проекта или заполните форму Add secret, которую Lovable показывает в чате проекта. Серверный код читает ключ оттуда, поэтому в браузер он не попадает. Не отправляйте ключ сообщением в чат и не вставляйте его в код фронтенда.

Короткий ответ

  • Свой ключ (GPT, Claude, Resend): Secrets или форма, которую показывает коннектор.
  • Ключи самого Lovable: LOVABLE_API_KEY создаётся автоматически; ключ рабочего пространства (lov_…) требует Business или Enterprise.
  • GPT, Claude или DeepSeek со своим ключом: попросите Lovable сделать серверную функцию, потому что встроенный AI-коннектор ваш ключ не использует.
  • Если ключ утёк: сначала отзовите его у провайдера, потом замените секрет.

Какой Lovable API Key вам нужен?

Lovable API Key — это четыре разные вещи.

Что вы хотитеКлючОткуда он берётся
Вызывать GPT, Resend или другой платный сервисСвой ключ этого сервисаSecrets или форма коннектора
Пользоваться встроенным ИИ LovableLOVABLE_API_KEYLovable создаёт его для каждого проекта
Управлять проектами через API LovableКлюч рабочего пространства (lov_…)Workspace settings → API keys & OAuth → Workspace access tokens → New API key, Business или Enterprise, owner или admin
Пользоваться MCP-сервером или Build with URLAPI-ключ не нуженOAuth для MCP; ничего для Build with URL

Ключ рабочего пространства идёт только в API Lovable, в заголовке Lovable-API-Key, и его значение показывают один раз (документация по ключам API, проверено 2 ноября 2026 года). Он управляет проектами и публикует их; модели ИИ он не вызывает и приложения не собирает (Lovable API), и это не LOVABLE_API_KEY проекта (документация по ИИ).

Дальше речь только о первой строке — о вашем собственном ключе.

Куда в Lovable вставлять API-ключ

  1. Lovable сам попросит. Когда функции нужен ключ, в чате проекта открывается форма Add secret. Вводите значение там, а не сообщением: форма сохраняет его сразу в секреты проекта и не пускает в историю чата (документация Lovable о своих API, проверено 2 ноября 2026 года).
  2. Вы добавляете сами. Откройте More → Settings → Secrets на панели проекта, нажмите Add secret и введите одну или несколько пар «имя — значение» (документация по Secrets).

В changelog Lovable от 26 августа 2026 года этот путь называется More → Cloud → Secrets, так что ищите там, если меню выглядит иначе (changelog).

Правила, на которых спотыкаются:

  • Только запись: значение можно заменить или удалить, но не прочитать.
  • Имена с VITE_ отклоняются: это значения времени сборки, браузер их видит, и место им в .env.
  • Имена с SUPABASE_ и LOVABLE_ зарезервированы и заполняются автоматически.
  • Секреты принадлежат одному проекту. После ремикса свои ключи вводят заново, потому что пересоздаются только ключи, созданные Lovable.

В своём проекте Supabase в панели бэкенда есть кнопка Manage secrets: она открывает дашборд Supabase, где хранилище называется Edge Function Secrets (секреты Supabase, проверено 2 ноября 2026 года). Два проекта Lovable на одном проекте Supabase перезаписывают секреты друг друга, включая LOVABLE_API_KEY (интеграция с Supabase).

Куда идут ключи Resend, Stripe и Google Maps?

Не каждый ключ попадает прямо в Secrets: у этих сервисов есть формы коннекторов (Stripe, Resend, свои API, проверено 2 ноября 2026 года).

СервисКуда идёт ключЧто стоит знать
StripeФорма Connect Stripe в чате проектаНе отправляйте ключ сообщением в чат
ResendФорма подключенияКлючи начинаются с re_
Google MapsДва ключа в форме подключенияСерверный ключ приватный; браузерный ключ публичный по замыслу
Любой другой сервисСвой коннектор или ключ в SecretsСерверный код читает секрет

Google Maps — исключение. Его браузерный ключ публичен по замыслу и попадает во фронтенд как VITE_LOVABLE_CONNECTOR_GOOGLE_MAPS_BROWSER_KEY, а ограничение по сайту не даёт другим сайтам им воспользоваться (Google Maps, проверено 2 ноября 2026 года). Серверный ключ остаётся приватным. Учётные данные коннекторов хранятся зашифрованными, и прочитать их обратно не может никто, даже Lovable (безопасность интеграций).

Как подключить GPT, Claude или DeepSeek со своим ключом

Сначала проверьте, нужен ли ключ вообще: встроенному AI-коннектору он не нужен. Lovable создаёт LOVABLE_API_KEY для каждого проекта и по умолчанию запускает GPT-6 Astra; чат-модели Claude есть только в новых приложениях на TanStack Start, созданных с 13 мая 2026 года (документация по ИИ, AI chat, проверено 2 ноября 2026 года).

Этот коннектор ваш ключ не использует: он всегда работает через Lovable и списывает кредиты рабочего пространства. В документации Lovable, какой мы её прочитали 2 ноября 2026 года, DeepSeek не упоминается. Со своим ключом попросите Lovable вызывать провайдера из серверной функции, а ключ положите в Secrets.

Кнопки «создать функцию» нет: опишите функцию в чате проекта, и Lovable напишет и развернёт её (Edge functions). Новые приложения на TanStack Start (созданные с 13 мая 2026 года, в Enterprise — с 22 июня 2026 года) получают серверную функцию; старые приложения React + Vite получают Edge Function, то есть код, который работает на сервере.

Наш код использует API, совместимый с OpenAI от OmniaKey: один ключ открывает GPT-6.1 Terra, Claude Sonnet 5.5 и DeepSeek.

  1. Создайте ключ у провайдера. Для OmniaKey: зарегистрируйтесь на omniakey.com и откройте Dashboard → tokens (быстрый старт).

  2. Вставьте этот промпт в чат проекта:

    text
    Add an AI chat feature that uses my own API key, not the built-in AI connector.
    Create a backend function named "chat". It reads OMNIAKEY_API_KEY from Secrets and calls
    POST https://api.omniakey.com/v1/chat/completions with the model and messages the frontend sends.
    Only allow these models: gpt-6.1-terra, claude-sonnet-5-5, deepseek-flash.
    Require a signed-in user. Never put the key in frontend code.
    Ask me for the key with the Add secret form.
    
  3. Введите ключ в форме Add secret под именем OMNIAKEY_API_KEY.

Этот промпт мы не запускали в Lovable: у нас нет аккаунта Lovable, а шаги для Lovable взяты из его документации. Функция должна получиться такой; именно этот вариант мы запускали на своей машине.

ts
// supabase/functions/chat/index.ts
// Браузер отправляет { model, messages }; эта функция добавляет ключ API на сервере.
const corsHeaders = {
  "Access-Control-Allow-Origin": "*",
  "Access-Control-Allow-Headers": "authorization, x-client-info, apikey, content-type",
};

const ALLOWED_MODELS = ["gpt-6.1-terra", "claude-sonnet-5-5", "deepseek-flash"];

function json(body: unknown, status = 200) {
  return new Response(JSON.stringify(body), {
    status,
    headers: { ...corsHeaders, "Content-Type": "application/json" },
  });
}

Deno.serve(async (req) => {
  if (req.method === "OPTIONS") {
    return new Response("ok", { headers: corsHeaders });
  }

  const apiKey = Deno.env.get("OMNIAKEY_API_KEY");
  if (!apiKey) {
    return json({ error: "OMNIAKEY_API_KEY is not set" }, 500);
  }

  const { model, messages } = await req.json();
  if (!ALLOWED_MODELS.includes(model)) {
    return json({ error: `model must be one of: ${ALLOWED_MODELS.join(", ")}` }, 400);
  }

  const upstream = await fetch("https://api.omniakey.com/v1/chat/completions", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${apiKey}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ model, messages, max_tokens: 800 }),
  });

  const data = await upstream.json();
  if (!upstream.ok) {
    return json({ error: data.error?.message ?? "upstream error" }, upstream.status);
  }
  return json({ reply: data.choices[0].message.content, model: data.model, usage: data.usage });
});

В тестовом варианте мы убрали проверку входа, чтобы вызывать функцию из скрипта; в промпте выше Lovable добавляет её сам, потому что правила безопасности Lovable требуют решать вопрос аутентификации на сервере (best practices).

Из браузера вызов выглядит так (supabase-js):

ts
const { data, error } = await supabase.functions.invoke("chat", {
  body: { model: "deepseek-flash", messages: [{ role: "user", content: "Say hello in five words." }] },
});

С другим провайдером замените URL и ID моделей на значения из его документации. Ключ OmniaKey подходит и для своего API-ключа в Cline, и для своих моделей в Factory Droid.

Что показал запуск

Мы запускали функцию на своей машине, не в Lovable, с Deno 2.9.8 2 ноября 2026 года, и обращались к ней как браузер: с заголовком Origin и preflight-запросом CORS.

ПроверкаСтатусЧто вернулось
Preflight (OPTIONS)200* и список разрешённых заголовков
gpt-6.1-terra200 за 3.28 sОтвет, 53 токена всего
claude-sonnet-5-5200 за 2.85 sОтвет, 134 токена всего
deepseek-flash200 за 1.75 sОтвет, 92 токена всего
Модель вне списка400model must be one of: gpt-6.1-terra, claude-sonnet-5-5, deepseek-flash
Секрет отсутствует500OMNIAKEY_API_KEY is not set
Неверный ключ401Invalid token (request id: …)

По одному вызову на модель, так что каждое время — одна выборка; deepseek-flash ответил как deepseek-v4-1-flash-261017.

Почему видно только "non-2xx status code"

При ошибке supabase.functions.invoke возвращает только Edge Function returned a non-2xx status code, а data равно null. Настоящее сообщение функции лежит в await error.context.json():

ts
if (error) {
  const details = await error.context.json();
  console.error(details.error);
}
  • 401: ключ неверный. У нас было Invalid token (request id: …).
  • 500 с OMNIAKEY_API_KEY is not set: секрета нет или он назван иначе.
  • 400: модели нет в вашем списке.

Как проверить, не виден ли ключ

Ключ в коде фронтенда виден пользователям, и его нужно считать скомпрометированным (best practices, проверено 2 ноября 2026 года).

  • Quick security scan запускается сам при каждой публикации.
  • Deep security scan — нет: запустите его в Security view проекта (Security view).
  • Ищите группу Leaked secrets & credentials.
  • Оба сканирования бесплатны; только массовые исправления расходуют 10 бесплатных, а дальше кредиты (сканирование безопасности).

Вручную: в Chrome откройте инструменты разработчика опубликованного приложения, нажмите Command+Option+F на Mac или Control+Shift+F в Windows и Linux и поищите в загруженных файлах первые символы ключа. Если приватный ключ лежит в значении VITE_, действуйте: такие значения собираются для браузера (поиск в DevTools). Чистый поиск покрывает только файлы, которые загрузила страница, поэтому запустите и сканирование.

Спрятанный ключ не мешает посторонним вызывать вашу функцию: функцию без проверки входа может вызвать кто угодно, и каждый вызов тратит ваш ключ. Документация Lovable требует проверять вход на сервере; наш список моделей и max_tokens: 800 ограничивают каждый вызов; документация OmniaKey советует отдельный ключ для каждого окружения с лимитом расходов (документация API OmniaKey).

Что делать, если ключ утёк

  1. Отзовите ключ в сервисе, который его выдал, и создайте там новый; в документации Lovable действие Rotate есть только для её собственного ключа (документация по Secrets).
  2. Замените значение в Secrets, в форме коннектора или в Supabase. В Supabase функция читает новый секрет сразу, без повторного деплоя (секреты Supabase). Делает ли то же встроенный бэкенд Lovable, Cloud, в документации не сказано, поэтому вызовите функцию один раз и проверьте.
  3. Уберите ключ из кода фронтенда или из .env и запустите Deep security scan снова.
  4. Посмотрите в панели использования провайдера, нет ли вызовов, которых вы не делали.

С ключами самого Lovable всё иначе. У LOVABLE_API_KEY есть действие Rotate для роли editor и выше: он выдаёт новый ключ и обновляет окружение Edge Function. Ключ рабочего пространства (lov_…), о котором сообщил GitHub secret scanning, отзывается автоматически; в остальных случаях отзывайте его сами (документация по ключам API).

Сколько это стоит

Счёт Lovable и счёт провайдера раздельные: со своим ключом провайдер берёт деньги за использование модели, а приложение обращается к Cloud только чтобы запустить функцию (документация по ИИ, Cloud, проверено 2 ноября 2026 года).

Встроенный AI-коннектор списывает кредиты рабочего пространства: Free, Pro и Business получают 4-credit в месяц на ИИ, когда они кончаются, приходит 402, а при превышении rate limit — 429. План Free даёт ещё 5 build credits в день, до 30 в месяц, плюс 20 Cloud credits (цены); в таблице тарифов Lovable указано 100 credits за $25 в месяц на Pro (тарифы, проверено 2 ноября 2026 года).

Актуальные цены OmniaKey смотрите на страницах GPT-6.1 Terra, Claude Sonnet 5.5 и DeepSeek.

Частые вопросы

Где найти свой Lovable API Key?

Зависит от ключа. LOVABLE_API_KEY создаётся для проекта и лежит в Secrets этого проекта: там его можно перевыпустить, но не прочитать. Ключ рабочего пространства берётся в Workspace settings → API keys & OAuth → Workspace access tokens и показывается один раз.

Есть ли бесплатный Lovable API Key?

Ближе всего LOVABLE_API_KEY: встроенный AI-коннектор создаёт его для каждого проекта, а у Free, Pro и Business есть 4-credit в месяц на ИИ. Ключу рабочего пространства нужен план Business или Enterprise.

Можно ли подключить свой ключ OpenAI к Lovable AI?

Со встроенным AI-коннектором — нет, он всегда работает через Lovable и списывает кредиты рабочего пространства. Со своим ключом попросите Lovable сделать серверную функцию, которая вызывает провайдера напрямую, а ключ положите в Secrets.

Ключ API класть в Secrets или в .env?

В Secrets, если ключ приватный и его читает серверный код. .env — для значений VITE_, которые попадают в сборку приложения и видны в браузере.

Почему Lovable не подключается к GPT, Claude или DeepSeek?

Сначала прочитайте сообщение функции, в нём названа причина:

  • 500 с OMNIAKEY_API_KEY is not set: секрета нет или он сохранён под другим именем.
  • 401: ключ неверный или отозван.
  • 400: ID модели нет в вашем списке.
  • 404: неверный базовый URL; наш заканчивается на /v1/chat/completions, и большинство ошибок настройки — это лишний или неверный суффикс протокола (документация ошибок OmniaKey).

В браузере видно только Edge Function returned a non-2xx status code, поэтому логируйте error.context, как показано выше, чтобы понять, какой это случай.

Проверенные источники

Документация самого OmniaKey, проверено 2 ноября 2026 года: быстрый старт, API, совместимый с OpenAI, аутентификация и ошибки.

Модели в этой статье

LovableAPI-ключSecretsEdge FunctionsGPT-6.1 TerraClaude Sonnet 5.5DeepSeek

Похожие статьи

Недавние статьи

Популярные руководства