GPT-6 Sol e Claude Opus 5.5 disponíveisGPT-6 Sol pela metade do preço do 5.6 Sol

Lovable API Key: onde colocar e como manter segura

Onde a chave vai, as quatro coisas que chamam de Lovable API key, uma função que rodamos com GPT, Claude e DeepSeek, e o que fazer se uma chave vazar.

Kiki, OmniaKey COO10 min de leitura
Nesta página

No Lovable, sua Lovable API Key vai para os Secrets: abra More → Settings → Secrets na barra do projeto, ou use o formulário Add secret que o Lovable mostra no chat do projeto. O código do backend lê a chave dali, então ela nunca chega ao navegador. Não cole a chave numa mensagem do chat nem no código do frontend.

Resposta curta

  • Sua própria chave (GPT, Claude, Resend): os Secrets, ou o formulário que o conector mostra.
  • As chaves do próprio Lovable: LOVABLE_API_KEY é gerada sozinha; uma chave de workspace (lov_…) exige Business ou Enterprise.
  • GPT, Claude ou DeepSeek com a sua chave: peça ao Lovable uma função de backend, porque o conector de IA embutido não usa a sua chave.
  • Se vazar: revogue no provedor primeiro, depois troque o secret.

Qual Lovable API Key você precisa?

Lovable API key pode significar quatro coisas diferentes.

Você querChaveDe onde vem
Chamar GPT, Resend ou outro serviço pagoSua própria chave desse serviçoSecrets, ou o formulário de um conector
Usar a IA embutida do LovableLOVABLE_API_KEYO Lovable gera por projeto
Gerenciar projetos pela API do LovableUma chave de workspace (lov_…)Workspace settings → API keys & OAuth → Workspace access tokens → New API key, Business ou Enterprise, owner ou admin
Usar o servidor MCP ou o Build with URLNenhuma API keyOAuth no MCP; nada no Build with URL

A chave de workspace vai só para a API do Lovable, no cabeçalho Lovable-API-Key, e o valor aparece uma vez (documentação de API keys, conferida em 2 de novembro de 2026). Ela gerencia e publica projetos; não chama modelos de IA nem monta apps (Lovable API), e não é a LOVABLE_API_KEY do projeto (documentação de IA).

Tudo abaixo é sobre a primeira linha: a sua chave.

Como adicionar uma API key no Lovable

  1. O Lovable pede. Quando um recurso precisa de uma chave, ele abre o formulário Add secret no chat do projeto. Digite o valor ali, não como mensagem: o formulário salva direto nos secrets do projeto e mantém a chave fora do histórico (documentação de APIs personalizadas do Lovable, conferida em 2 de novembro de 2026).
  2. Você adiciona. Abra More → Settings → Secrets na barra do projeto, clique em Add secret e informe um ou mais pares de nome e valor (documentação de Secrets).

O changelog do Lovable de 26 de agosto de 2026 chama esse caminho de More → Cloud → Secrets, então procure ali se o seu menu for diferente (changelog).

Regras que pegam muita gente:

  • Só escrita: você substitui ou apaga um valor, nunca lê de volta.
  • Nomes com VITE_ são recusados; são valores de build que o navegador enxerga e ficam no .env.
  • Nomes com SUPABASE_ e LOVABLE_ são reservados e preenchidos automaticamente.
  • Secrets pertencem a um projeto. Depois de um remix você digita os seus de novo, porque só as chaves geradas pelo Lovable são recriadas.

No seu próprio projeto Supabase, a visão de backend tem um botão Manage secrets que abre o painel do Supabase, onde o armazenamento fica em Edge Function Secrets (secrets do Supabase, conferidos em 2 de novembro de 2026). Dois projetos Lovable que dividem um projeto Supabase sobrescrevem os secrets um do outro, LOVABLE_API_KEY incluída (integração com o Supabase).

Para onde vão as chaves do Resend, do Stripe e do Google Maps?

Nem toda chave entra direto nos Secrets: esses serviços têm formulários de conector (Stripe, Resend, APIs personalizadas, conferidos em 2 de novembro de 2026).

ServiçoPara onde vai a chaveBom saber
StripeO formulário Connect Stripe no chat do projetoNunca cole a chave como mensagem no chat
ResendO formulário de conexãoAs chaves começam com re_
Google MapsDuas chaves no formulário de conexãoChave de servidor privada; chave de navegador pública por projeto
Qualquer outro serviçoUm conector personalizado, ou a chave nos SecretsO código do servidor lê o secret

O Google Maps é a exceção. A chave de navegador é pública por projeto e chega ao frontend como VITE_LOVABLE_CONNECTOR_GOOGLE_MAPS_BROWSER_KEY, e a restrição por site é o que impede outros sites de reutilizá-la (Google Maps, conferido em 2 de novembro de 2026). A chave de servidor continua privada. As credenciais dos conectores ficam guardadas criptografadas, e ninguém consegue lê-las de volta, nem o Lovable (segurança das integrações).

Como ligar GPT, Claude ou DeepSeek com a sua própria chave

Primeiro, veja se você precisa de uma chave: o conector de IA embutido não usa nenhuma. O Lovable gera uma LOVABLE_API_KEY por projeto e roda GPT-6 Astra por padrão; modelos de chat Claude só existem em apps TanStack Start mais novos, criados a partir de 13 de maio de 2026 (documentação de IA, AI chat, conferidas em 2 de novembro de 2026).

Esse conector não usa a sua chave: ele sempre passa pelo Lovable e cobra créditos do workspace. A documentação do Lovable, como lemos em 2 de novembro de 2026, não cita o DeepSeek. Para usar a sua chave, peça ao Lovable uma função de backend que chame o provedor, com a chave nos Secrets.

Não existe botão de criar função: descreva a função no chat do projeto e o Lovable escreve e publica (Edge functions). Apps TanStack Start mais novos (criados a partir de 13 de maio de 2026, ou 22 de junho de 2026 no Enterprise) recebem uma server function; apps React + Vite antigos recebem uma Edge Function, que é código rodando no servidor.

Nosso código usa a API compatível com OpenAI da OmniaKey, porque uma chave só alcança GPT-6.1 Terra, Claude Sonnet 5.5 e DeepSeek.

  1. Crie uma chave no seu provedor. Na OmniaKey: cadastre-se em omniakey.com e abra Dashboard → tokens (início rápido).

  2. Cole este prompt no chat do projeto:

    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. Informe a chave no formulário Add secret, com o nome OMNIAKEY_API_KEY.

Não rodamos esse prompt no Lovable, porque não temos conta no Lovable, e os passos do Lovable aqui vêm da documentação dele. A função deve ficar assim, que é a versão que rodamos na nossa própria máquina.

ts
// supabase/functions/chat/index.ts
// O navegador envia { model, messages }; esta função acrescenta a chave de API no servidor.
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 });
});

Nossa versão de teste deixa a checagem de login de fora para que pudéssemos chamá-la de um script; o prompt acima pede ao Lovable para incluir, porque as boas práticas de segurança do Lovable dizem que a autenticação se decide no servidor (boas práticas).

Do navegador, a chamada fica assim (supabase-js):

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

Com outro provedor, troque a URL e os IDs de modelo pelos da documentação dele. Uma chave OmniaKey também serve para uma API key personalizada no Cline e para modelos personalizados no Factory Droid.

O que aconteceu quando rodamos

Rodamos a função na nossa própria máquina, não no Lovable, com Deno 2.9.8 em 2 de novembro de 2026, e chamamos como um navegador, com um cabeçalho Origin e um preflight CORS.

TesteStatusO que voltou
Preflight (OPTIONS)200* e a lista de cabeçalhos liberados
gpt-6.1-terra200 em 3.28 sUma resposta, 53 tokens no total
claude-sonnet-5-5200 em 2.85 sUma resposta, 134 tokens no total
deepseek-flash200 em 1.75 sUma resposta, 92 tokens no total
Modelo fora da lista400model must be one of: gpt-6.1-terra, claude-sonnet-5-5, deepseek-flash
Secret ausente500OMNIAKEY_API_KEY is not set
Chave errada401Invalid token (request id: …)

Uma chamada por modelo, então cada tempo é uma amostra; deepseek-flash respondeu como deepseek-v4-1-flash-261017.

Por que você só vê "non-2xx status code"

Em caso de erro, supabase.functions.invoke devolve só Edge Function returned a non-2xx status code, e data é null. A mensagem real da função está em await error.context.json():

ts
if (error) {
  const details = await error.context.json();
  console.error(details.error);
}
  • 401: a chave está errada. A nossa dizia Invalid token (request id: …).
  • 500 com OMNIAKEY_API_KEY is not set: o secret não existe ou está com outro nome.
  • 400: o modelo não está na sua lista.

Como saber se a sua chave está exposta

Uma chave no código do frontend fica visível para os usuários e deve ser tratada como comprometida (boas práticas, conferidas em 2 de novembro de 2026).

  • O Quick security scan roda sozinho a cada publicação.
  • O Deep security scan não: inicie pela Security view do projeto (Security view).
  • Procure o grupo Leaked secrets & credentials.
  • Os dois scans são gratuitos; só as correções em massa consomem as 10 correções grátis e depois créditos (scans de segurança).

Na mão: no Chrome, abra as ferramentas de desenvolvedor do app publicado, aperte Command+Option+F no Mac ou Control+Shift+F no Windows e no Linux, e busque nos arquivos carregados os primeiros caracteres da sua chave. Se um valor VITE_ guardar uma chave privada, aja, porque esses valores são compilados para o navegador (busca no DevTools). Uma busca limpa cobre só os arquivos que aquela página carregou, então rode o scan também.

Esconder a chave não impede estranhos de chamar a sua função: qualquer pessoa chama uma função sem checagem de login, e cada chamada gasta a sua chave. A documentação do Lovable pede login obrigatório no servidor; nossa lista de modelos e max_tokens: 800 limitam cada chamada; e a documentação da OmniaKey recomenda uma chave por ambiente com limite de gasto (documentação de API da OmniaKey).

O que fazer se uma chave vazou

  1. Revogue no serviço que emitiu a chave e crie outra lá; a documentação do Lovable só lista a ação Rotate para a chave dele (documentação de Secrets).
  2. Troque o valor nos Secrets, no formulário do conector ou no Supabase. No Supabase a função lê o novo secret na hora, sem novo deploy (secrets do Supabase). A documentação do Lovable não diz se o backend embutido dele, o Cloud, faz o mesmo, então chame a função uma vez para confirmar.
  3. Tire a chave do código do frontend ou do .env e rode o Deep security scan de novo.
  4. Confira a página de uso do provedor em busca de chamadas que você não fez.

As chaves do próprio Lovable funcionam diferente. LOVABLE_API_KEY tem uma ação Rotate, para editor e acima, que emite uma chave nova e atualiza o ambiente da Edge Function. Uma chave de workspace (lov_…) reportada pelo GitHub secret scanning é revogada sozinha; em qualquer outro lugar, revogue você mesmo (documentação de API keys).

Quanto custa

A conta do Lovable e a do seu provedor são separadas: com a sua chave, o provedor cobra o uso do modelo, e o seu app só usa o Cloud para rodar a função (documentação de IA, Cloud, conferidas em 2 de novembro de 2026).

O conector de IA embutido cobra créditos do workspace: Free, Pro e Business têm uma cota mensal de 4-credit para IA, o fim dela devolve 402, e passar do rate limit devolve 429. O plano Free ainda dá 5 build credits por dia, até 30 por mês, mais 20 Cloud credits (preços); a tabela de planos do Lovable lista 100 credits a $25 por mês no Pro (planos de assinatura, conferidos em 2 de novembro de 2026).

Para a OmniaKey, veja os preços atuais nas páginas GPT-6.1 Terra, Claude Sonnet 5.5 e DeepSeek.

Perguntas frequentes

Onde encontro minha Lovable API key?

Depende de qual chave você quer. A LOVABLE_API_KEY é gerada por projeto e fica nos Secrets desse projeto, onde você pode trocá-la mas nunca lê-la. Uma chave de workspace vem de Workspace settings → API keys & OAuth → Workspace access tokens e aparece uma vez.

Existe uma Lovable API key grátis?

O mais perto é a LOVABLE_API_KEY: o conector de IA embutido a gera para cada projeto, e workspaces Free, Pro e Business têm uma cota mensal de 4-credit para usá-la. Uma chave de workspace exige plano Business ou Enterprise.

Posso usar minha própria chave da OpenAI com o Lovable AI?

Não com o conector de IA embutido, que sempre passa pelo Lovable e cobra créditos do workspace. Para a sua chave, peça ao Lovable uma função de backend que chame o provedor direto, com a chave nos Secrets.

A API key vai nos Secrets ou no .env?

Nos Secrets, quando a chave é privada e lida pelo código do backend. O .env é para valores VITE_, que entram no build do app e ficam visíveis no navegador.

Por que o Lovable não conecta com GPT, Claude ou DeepSeek?

Leia primeiro a mensagem da função, ela diz o problema:

  • 500 com OMNIAKEY_API_KEY is not set: o secret não existe ou está salvo com outro nome.
  • 401: a chave está errada ou revogada.
  • 400: o ID do modelo não está na sua lista.
  • 404: a URL base está errada; a nossa termina em /v1/chat/completions, e a maioria dos erros de configuração vem de um sufixo de protocolo trocado (documentação de erros da OmniaKey).

No navegador você vê só Edge Function returned a non-2xx status code, então registre error.context como acima para saber qual caso é.

Fontes verificadas

Documentação da própria OmniaKey, verificada em 2 de novembro de 2026: início rápido, API compatível com OpenAI, autenticação e erros.

Modelos deste artigo

Lovablechave de APISecretsEdge FunctionsGPT-6.1 TerraClaude Sonnet 5.5DeepSeek

Artigos relacionados

Artigos recentes

Guias populares