Lovable API Key: где хранить ключ и как его защитить
Куда идёт ключ, четыре вещи, которые называют Lovable API Key, функция, которую мы запустили с GPT, Claude и DeepSeek, и что делать, если ключ утёк.
На этой странице
- Короткий ответ
- Какой Lovable API Key вам нужен?
- Куда в Lovable вставлять API-ключ
- Куда идут ключи Resend, Stripe и Google Maps?
- Как подключить GPT, Claude или DeepSeek со своим ключом
- Что показал запуск
- Почему видно только "non-2xx status code"
- Как проверить, не виден ли ключ
- Что делать, если ключ утёк
- Сколько это стоит
- Частые вопросы
- Где найти свой Lovable API Key?
- Есть ли бесплатный Lovable API Key?
- Можно ли подключить свой ключ OpenAI к Lovable AI?
- Ключ API класть в Secrets или в .env?
- Почему Lovable не подключается к GPT, Claude или DeepSeek?
- Проверенные источники
В 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 или форма коннектора |
| Пользоваться встроенным ИИ Lovable | LOVABLE_API_KEY | Lovable создаёт его для каждого проекта |
| Управлять проектами через API Lovable | Ключ рабочего пространства (lov_…) | Workspace settings → API keys & OAuth → Workspace access tokens → New API key, Business или Enterprise, owner или admin |
| Пользоваться MCP-сервером или Build with URL | API-ключ не нужен | OAuth для MCP; ничего для Build with URL |
Ключ рабочего пространства идёт только в API Lovable, в заголовке Lovable-API-Key, и его значение показывают один раз (документация по ключам API, проверено 2 ноября 2026 года). Он управляет проектами и публикует их; модели ИИ он не вызывает и приложения не собирает (Lovable API), и это не LOVABLE_API_KEY проекта (документация по ИИ).
Дальше речь только о первой строке — о вашем собственном ключе.
Куда в Lovable вставлять API-ключ
- Lovable сам попросит. Когда функции нужен ключ, в чате проекта открывается форма Add secret. Вводите значение там, а не сообщением: форма сохраняет его сразу в секреты проекта и не пускает в историю чата (документация Lovable о своих API, проверено 2 ноября 2026 года).
- Вы добавляете сами. Откройте 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.
-
Создайте ключ у провайдера. Для OmniaKey: зарегистрируйтесь на omniakey.com и откройте Dashboard → tokens (быстрый старт).
-
Вставьте этот промпт в чат проекта:
textAdd 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. -
Введите ключ в форме Add secret под именем
OMNIAKEY_API_KEY.
Этот промпт мы не запускали в Lovable: у нас нет аккаунта Lovable, а шаги для Lovable взяты из его документации. Функция должна получиться такой; именно этот вариант мы запускали на своей машине.
// 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):
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-terra | 200 за 3.28 s | Ответ, 53 токена всего |
claude-sonnet-5-5 | 200 за 2.85 s | Ответ, 134 токена всего |
deepseek-flash | 200 за 1.75 s | Ответ, 92 токена всего |
| Модель вне списка | 400 | model must be one of: gpt-6.1-terra, claude-sonnet-5-5, deepseek-flash |
| Секрет отсутствует | 500 | OMNIAKEY_API_KEY is not set |
| Неверный ключ | 401 | Invalid 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():
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).
Что делать, если ключ утёк
- Отзовите ключ в сервисе, который его выдал, и создайте там новый; в документации Lovable действие Rotate есть только для её собственного ключа (документация по Secrets).
- Замените значение в Secrets, в форме коннектора или в Supabase. В Supabase функция читает новый секрет сразу, без повторного деплоя (секреты Supabase). Делает ли то же встроенный бэкенд Lovable, Cloud, в документации не сказано, поэтому вызовите функцию один раз и проверьте.
- Уберите ключ из кода фронтенда или из
.envи запустите Deep security scan снова. - Посмотрите в панели использования провайдера, нет ли вызовов, которых вы не делали.
С ключами самого 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, как показано выше, чтобы понять, какой это случай.
Проверенные источники
- Документация Lovable по Secrets, проверено 2 ноября 2026 года
- Ключи API Lovable, проверено 2 ноября 2026 года
- Lovable API, проверено 2 ноября 2026 года
- MCP-сервер Lovable, проверено 2 ноября 2026 года
- Build with URL, проверено 2 ноября 2026 года
- Возможности ИИ в Lovable, проверено 2 ноября 2026 года
- Lovable AI chat, проверено 2 ноября 2026 года
- Lovable Edge functions, проверено 2 ноября 2026 года
- Lovable Cloud, проверено 2 ноября 2026 года
- Свои API и коннекторы, проверено 2 ноября 2026 года
- Интеграция со Stripe, проверено 2 ноября 2026 года
- Интеграция с Resend, проверено 2 ноября 2026 года
- Интеграция с Google Maps, проверено 2 ноября 2026 года
- Безопасность интеграций, проверено 2 ноября 2026 года
- Интеграция с Supabase, проверено 2 ноября 2026 года
- Безопасность Lovable, проверено 2 ноября 2026 года
- Security view в Lovable, проверено 2 ноября 2026 года
- Правила безопасности Lovable, проверено 2 ноября 2026 года
- Тарифы Lovable, проверено 2 ноября 2026 года
- Changelog Lovable, проверено 2 ноября 2026 года
- Цены Lovable, проверено 2 ноября 2026 года
- Секреты Edge Functions в Supabase, проверено 2 ноября 2026 года
- Supabase functions.invoke, проверено 2 ноября 2026 года
- Поиск в Chrome DevTools, проверено 2 ноября 2026 года
Документация самого OmniaKey, проверено 2 ноября 2026 года: быстрый старт, API, совместимый с OpenAI, аутентификация и ошибки.
Модели в этой статье
Похожие статьи
Свой API-ключ в Cline
Заполните четыре поля, проверьте подключение и отделите ошибки ключа, URL и модели.
Свои модели в Factory Droid: как подключить Claude и GPT со своим API-ключом
Один settings.json дал Droid 1.0.0 модели Claude Sonnet 5.5, GPT-6.1 Terra и MiniMax M3.1 Flash на одном ключе. Ниже файл, provider для каждой модели и четыре ошибки, на которые мы наткнулись.
Как подключить GPT к Cherry Studio
Выберите протокол, укажите базовый URL и точный ID модели, а затем проверьте один короткий запрос.