# Lovable API Key: onde colocar e como manter segura

> Onde colocar sua Lovable API Key, por que o lugar dela é nos Secrets e numa função de backend, e como ligar GPT, Claude ou DeepSeek sem expor a chave.

- Canonical HTML: https://omniakey.com/pt-BR/blog/lovable-api-key
- Markdown: https://omniakey.com/pt-BR/blog/lovable-api-key.md
- Published: 2026-11-02 (updated 2026-11-02)
- Author: Kiki, COO at OmniaKey
- Language: pt-BR
- Category: API setup
- Reading time: 10 min
- All posts: https://omniakey.com/blog/llms.txt

---

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ê quer|Chave|De onde vem|
|-|-|-|
|Chamar GPT, Resend ou outro serviço pago|Sua própria chave desse serviço|Secrets, ou o formulário de um conector|
|Usar a IA embutida do Lovable|`LOVABLE_API_KEY`|O Lovable gera por projeto|
|Gerenciar projetos pela API do Lovable|Uma 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 URL|Nenhuma API key|OAuth 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](https://docs.lovable.dev/features/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](https://docs.lovable.dev/integrations/lovable-api)), e não é a `LOVABLE_API_KEY` do projeto ([documentação de IA](https://docs.lovable.dev/features/ai)).

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](https://docs.lovable.dev/integrations/any-api), 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](https://docs.lovable.dev/features/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](https://docs.lovable.dev/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](https://supabase.com/docs/guides/functions/secrets), 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](https://docs.lovable.dev/integrations/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](https://docs.lovable.dev/integrations/stripe), [Resend](https://docs.lovable.dev/integrations/resend), [APIs personalizadas](https://docs.lovable.dev/integrations/any-api), conferidos em 2 de novembro de 2026).

|Serviço|Para onde vai a chave|Bom saber|
|-|-|-|
|Stripe|O formulário Connect Stripe no chat do projeto|Nunca cole a chave como mensagem no chat|
|Resend|O formulário de conexão|As chaves começam com `re_`|
|Google Maps|Duas chaves no formulário de conexão|Chave de servidor privada; chave de navegador pública por projeto|
|Qualquer outro serviço|Um conector personalizado, ou a chave nos Secrets|O 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](https://docs.lovable.dev/integrations/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](https://docs.lovable.dev/integrations/security)).

## 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](https://omniakey.com/pt-BR/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](https://docs.lovable.dev/features/ai), [AI chat](https://docs.lovable.dev/features/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](https://docs.lovable.dev/features/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](https://docs.omniakey.com/en/api/openai-compatible) da OmniaKey, porque uma chave só alcança [GPT-6.1 Terra](https://omniakey.com/pt-BR/gpt-6-1-terra), [Claude Sonnet 5.5](https://omniakey.com/pt-BR/claude-sonnet-5-5) e [DeepSeek](https://omniakey.com/pt-BR/deepseek-flash).

1. Crie uma chave no seu provedor. Na OmniaKey: cadastre-se em omniakey.com e abra Dashboard → tokens ([início rápido](https://docs.omniakey.com/en/quick-start)).

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](https://docs.lovable.dev/tips-tricks/security-best-practices)).

Do navegador, a chamada fica assim ([supabase-js](https://supabase.com/docs/reference/javascript/functions-invoke)):

```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](https://omniakey.com/pt-BR/blog/cline-custom-api-key) e para [modelos personalizados no Factory Droid](https://omniakey.com/pt-BR/blog/factory-droid-custom-models).

## 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.

|Teste|Status|O que voltou|
|-|-|-|
|Preflight (`OPTIONS`)|200|`*` e a lista de cabeçalhos liberados|
|`gpt-6.1-terra`|200 em 3.28 s|Uma resposta, 53 tokens no total|
|`claude-sonnet-5-5`|200 em 2.85 s|Uma resposta, 134 tokens no total|
|`deepseek-flash`|200 em 1.75 s|Uma resposta, 92 tokens no total|
|Modelo fora da lista|400|`model must be one of: gpt-6.1-terra, claude-sonnet-5-5, deepseek-flash`|
|Secret ausente|500|`OMNIAKEY_API_KEY is not set`|
|Chave errada|401|`Invalid 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](https://docs.lovable.dev/tips-tricks/security-best-practices), 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](https://docs.lovable.dev/features/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](https://docs.lovable.dev/features/security)).

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](https://developer.chrome.com/docs/devtools/search)). 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](https://docs.omniakey.com/en/api/authentication)).

## 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](https://docs.lovable.dev/features/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](https://supabase.com/docs/guides/functions/secrets)). 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](https://docs.lovable.dev/features/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](https://docs.lovable.dev/features/ai), [Cloud](https://docs.lovable.dev/features/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](https://lovable.dev/pricing)); a tabela de planos do Lovable lista 100 credits a $25 por mês no Pro ([planos de assinatura](https://docs.lovable.dev/introduction/subscription-plans), conferidos em 2 de novembro de 2026).

Para a OmniaKey, veja os preços atuais nas páginas [GPT-6.1 Terra](https://omniakey.com/pt-BR/gpt-6-1-terra), [Claude Sonnet 5.5](https://omniakey.com/pt-BR/claude-sonnet-5-5) e [DeepSeek](https://omniakey.com/pt-BR/deepseek-flash).

## 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](https://docs.omniakey.com/en/api/errors)).

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 de Secrets do Lovable](https://docs.lovable.dev/features/secrets), verificado em 2 de novembro de 2026
- [API keys do Lovable](https://docs.lovable.dev/features/api-keys), verificado em 2 de novembro de 2026
- [Lovable API](https://docs.lovable.dev/integrations/lovable-api), verificado em 2 de novembro de 2026
- [Servidor MCP do Lovable](https://docs.lovable.dev/integrations/lovable-mcp-server), verificado em 2 de novembro de 2026
- [Build with URL](https://docs.lovable.dev/integrations/build-with-url), verificado em 2 de novembro de 2026
- [Recursos de IA do Lovable](https://docs.lovable.dev/features/ai), verificado em 2 de novembro de 2026
- [Lovable AI chat](https://docs.lovable.dev/features/ai-chat), verificado em 2 de novembro de 2026
- [Lovable Edge functions](https://docs.lovable.dev/features/edge-functions), verificado em 2 de novembro de 2026
- [Lovable Cloud](https://docs.lovable.dev/features/cloud), verificado em 2 de novembro de 2026
- [APIs personalizadas e conectores](https://docs.lovable.dev/integrations/any-api), verificado em 2 de novembro de 2026
- [Integração com o Stripe](https://docs.lovable.dev/integrations/stripe), verificado em 2 de novembro de 2026
- [Integração com o Resend](https://docs.lovable.dev/integrations/resend), verificado em 2 de novembro de 2026
- [Integração com o Google Maps](https://docs.lovable.dev/integrations/google-maps), verificado em 2 de novembro de 2026
- [Segurança das integrações](https://docs.lovable.dev/integrations/security), verificado em 2 de novembro de 2026
- [Integração com o Supabase](https://docs.lovable.dev/integrations/supabase), verificado em 2 de novembro de 2026
- [Segurança do Lovable](https://docs.lovable.dev/features/security), verificado em 2 de novembro de 2026
- [Security view do Lovable](https://docs.lovable.dev/features/security-view), verificado em 2 de novembro de 2026
- [Boas práticas de segurança do Lovable](https://docs.lovable.dev/tips-tricks/security-best-practices), verificado em 2 de novembro de 2026
- [Planos de assinatura do Lovable](https://docs.lovable.dev/introduction/subscription-plans), verificado em 2 de novembro de 2026
- [Changelog do Lovable](https://docs.lovable.dev/changelog), verificado em 2 de novembro de 2026
- [Preços do Lovable](https://lovable.dev/pricing), verificado em 2 de novembro de 2026
- [Secrets das Edge Functions do Supabase](https://supabase.com/docs/guides/functions/secrets), verificado em 2 de novembro de 2026
- [Supabase functions.invoke](https://supabase.com/docs/reference/javascript/functions-invoke), verificado em 2 de novembro de 2026
- [Busca no Chrome DevTools](https://developer.chrome.com/docs/devtools/search), verificado em 2 de novembro de 2026

Documentação da própria OmniaKey, verificada em 2 de novembro de 2026: [início rápido](https://docs.omniakey.com/en/quick-start), [API compatível com OpenAI](https://docs.omniakey.com/en/api/openai-compatible), [autenticação](https://docs.omniakey.com/en/api/authentication) e [erros](https://docs.omniakey.com/en/api/errors).
