# Lovable API Key: dove metterla e come proteggerla

> Dove mettere la tua Lovable API Key: nei Secrets, letti da una funzione backend, e come collegare GPT, Claude o DeepSeek senza esporre la chiave.

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

---

In Lovable la tua Lovable API Key va nei Secrets: apri More → Settings → Secrets nella barra del progetto oppure usa il modulo Add secret che Lovable mostra nella chat del progetto. Il codice backend la legge da lì, quindi la chiave non arriva mai al browser. Non incollarla in un messaggio della chat e non metterla nel codice del frontend.

## Risposta breve

- **La tua chiave** (GPT, Claude, Resend): i Secrets, oppure il modulo che mostra un connettore.
- **Le chiavi di Lovable:** `LOVABLE_API_KEY` viene generata da sola; una chiave del workspace (`lov_…`) richiede Business o Enterprise.
- **GPT, Claude o DeepSeek con la tua chiave:** chiedi a Lovable una funzione backend, perché il connettore AI integrato non può usare la tua chiave.
- **Se la chiave finisce in chiaro:** revocala prima dal fornitore, poi sostituisci il secret.

## Quale Lovable API Key ti serve?

Lovable API Key può significare quattro cose diverse.

|Vuoi|Chiave|Da dove viene|
|-|-|-|
|Chiamare GPT, Resend o un altro servizio a pagamento|La tua chiave di quel servizio|I Secrets, oppure il modulo di un connettore|
|Usare l'AI integrata di Lovable|`LOVABLE_API_KEY`|Lovable la genera per ogni progetto|
|Gestire i progetti con l'API di Lovable|Una chiave del workspace (`lov_…`)|Workspace settings → API keys & OAuth → Workspace access tokens → New API key, Business o Enterprise, owner o admin|
|Usare il server MCP o Build with URL|Nessuna API key|OAuth per MCP; niente per Build with URL|

La chiave del workspace viaggia solo verso l'API di Lovable, nell'header `Lovable-API-Key`, e il suo valore viene mostrato una volta ([documentazione delle chiavi API](https://docs.lovable.dev/features/api-keys), verificata il 2 novembre 2026). Gestisce e pubblica i progetti; non chiama modelli AI e non costruisce applicazioni ([Lovable API](https://docs.lovable.dev/integrations/lovable-api)), e non è la `LOVABLE_API_KEY` del progetto ([documentazione AI](https://docs.lovable.dev/features/ai)).

Tutto quello che segue riguarda la prima riga: la tua chiave.

## Dove aggiungere una API key in Lovable

1. Te lo chiede Lovable. Quando una funzione ha bisogno di una chiave, nella chat del progetto si apre il modulo Add secret. Inserisci il valore lì, non come messaggio: il modulo lo salva direttamente nei secret del progetto e lo tiene fuori dalla cronologia della chat ([documentazione di Lovable sulle API personalizzate](https://docs.lovable.dev/integrations/any-api), verificata il 2 novembre 2026).
2. La aggiungi tu. Apri More → Settings → Secrets nella barra del progetto, clicca Add secret e inserisci una o più coppie di nome e valore ([documentazione dei Secrets](https://docs.lovable.dev/features/secrets)).

Il changelog di Lovable del 26 agosto 2026 chiama questo percorso More → Cloud → Secrets, quindi cerca lì se il tuo menu è diverso ([changelog](https://docs.lovable.dev/changelog)).

Regole su cui si inciampa spesso:

- Solo scrittura: un valore si può sostituire o cancellare, mai rileggere.
- I nomi con `VITE_` vengono rifiutati; sono valori di build che il browser vede e il loro posto è nel `.env`.
- I nomi `SUPABASE_` e `LOVABLE_` sono riservati e vengono compilati da soli.
- I secret appartengono a un progetto. Dopo un remix reinserisci i tuoi, perché solo le chiavi generate da Lovable vengono ricreate.

Nel tuo progetto Supabase la vista backend ha un pulsante Manage secrets che apre la dashboard di Supabase, dove l'archivio sta in Edge Function Secrets ([secret di Supabase](https://supabase.com/docs/guides/functions/secrets), verificati il 2 novembre 2026). Due progetti Lovable che condividono un progetto Supabase sovrascrivono i secret l'uno dell'altro, `LOVABLE_API_KEY` compresa ([integrazione Supabase](https://docs.lovable.dev/integrations/supabase)).

## Dove finiscono le chiavi di Resend, Stripe e Google Maps?

Non tutte le chiavi entrano direttamente nei Secrets: questi servizi hanno moduli di connessione ([Stripe](https://docs.lovable.dev/integrations/stripe), [Resend](https://docs.lovable.dev/integrations/resend), [API personalizzate](https://docs.lovable.dev/integrations/any-api), verificati il 2 novembre 2026).

|Servizio|Dove va la chiave|Da sapere|
|-|-|-|
|Stripe|Il modulo Connect Stripe nella chat del progetto|Non incollare mai la chiave come messaggio|
|Resend|Il modulo di connessione|Le chiavi iniziano con `re_`|
|Google Maps|Due chiavi nel modulo di connessione|Chiave server privata; chiave browser pubblica per progetto|
|Ogni altro servizio|Un connettore personalizzato, oppure la chiave nei Secrets|Il codice server legge il secret|

Google Maps è l'eccezione. La sua chiave browser è pubblica per progetto e arriva al frontend come `VITE_LOVABLE_CONNECTOR_GOOGLE_MAPS_BROWSER_KEY`, e la restrizione per sito è ciò che impedisce ad altri siti di riusarla ([Google Maps](https://docs.lovable.dev/integrations/google-maps), verificata il 2 novembre 2026). La chiave server resta privata. Le credenziali dei connettori sono salvate cifrate e nessuno può rileggerle, nemmeno Lovable ([sicurezza delle integrazioni](https://docs.lovable.dev/integrations/security)).

## Collegare GPT, Claude o DeepSeek con la tua chiave

Prima controlla se ti serve una chiave: il connettore AI integrato non ne usa. Lovable genera una `LOVABLE_API_KEY` per progetto ed esegue [GPT-6 Astra](https://omniakey.com/it/gpt-6-astra) per impostazione predefinita; i modelli chat Claude ci sono solo nelle app TanStack Start più recenti, create dal 13 maggio 2026 ([documentazione AI](https://docs.lovable.dev/features/ai), [AI chat](https://docs.lovable.dev/features/ai-chat), verificate il 2 novembre 2026).

Quel connettore non può usare la tua chiave: passa sempre da Lovable e addebita crediti del workspace. La documentazione di Lovable, come l'abbiamo letta il 2 novembre 2026, non cita DeepSeek. Per la tua chiave, chiedi a Lovable di chiamare il fornitore da una funzione backend, con la chiave nei Secrets.

Non esiste un pulsante per creare la funzione: descrivila nella chat del progetto e Lovable la scrive e la pubblica ([Edge functions](https://docs.lovable.dev/features/edge-functions)). Le app TanStack Start più recenti (create dal 13 maggio 2026, o dal 22 giugno 2026 in Enterprise) ricevono una server function; le app React + Vite più vecchie ricevono una Edge Function, cioè codice che gira sul server.

Il nostro codice usa l'[API compatibile con OpenAI](https://docs.omniakey.com/en/api/openai-compatible) di OmniaKey, perché una sola chiave raggiunge [GPT-6.1 Terra](https://omniakey.com/it/gpt-6-1-terra), [Claude Sonnet 5.5](https://omniakey.com/it/claude-sonnet-5-5) e [DeepSeek](https://omniakey.com/it/deepseek-flash).

1. Crea una chiave dal tuo fornitore. Per OmniaKey: registrati su omniakey.com e apri Dashboard → tokens ([guida rapida](https://docs.omniakey.com/en/quick-start)).

2. Incolla questo prompt nella chat del progetto:

   ```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. Inserisci la chiave nel modulo Add secret, con il nome `OMNIAKEY_API_KEY`.

Quel prompt non l'abbiamo eseguito in Lovable, perché non abbiamo un account Lovable, e i passaggi per Lovable vengono dalla sua documentazione. La funzione dovrebbe venire così, ed è la versione che abbiamo eseguito sulla nostra macchina.

```ts
// supabase/functions/chat/index.ts
// Il browser invia { model, messages }; questa funzione aggiunge la chiave API sul server.
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 });
});
```

La nostra versione di prova lascia fuori il controllo di accesso per poterla chiamare da uno script; il prompt qui sopra chiede a Lovable di aggiungerlo, perché le buone pratiche di sicurezza di Lovable vogliono che l'autenticazione si decida sul server ([buone pratiche](https://docs.lovable.dev/tips-tricks/security-best-practices)).

Dal browser la chiamata è questa ([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." }] },
});
```

Con un altro fornitore cambia l'URL e gli ID dei modelli con quelli della sua documentazione. Una chiave OmniaKey funziona anche per una [chiave API personalizzata in Cline](https://omniakey.com/it/blog/cline-custom-api-key) e per [modelli personalizzati in Factory Droid](https://omniakey.com/it/blog/factory-droid-custom-models).

## Cosa è successo quando l'abbiamo eseguita

Abbiamo eseguito la funzione sulla nostra macchina, non in Lovable, con Deno 2.9.8 il 2 novembre 2026, e l'abbiamo chiamata come farebbe un browser: con header `Origin` e preflight CORS.

|Test|Stato|Cosa è tornato|
|-|-|-|
|Preflight (`OPTIONS`)|200|`*` e l'elenco degli header consentiti|
|`gpt-6.1-terra`|200 in 3.28 s|Una risposta, 53 token in totale|
|`claude-sonnet-5-5`|200 in 2.85 s|Una risposta, 134 token in totale|
|`deepseek-flash`|200 in 1.75 s|Una risposta, 92 token in totale|
|Modello fuori elenco|400|`model must be one of: gpt-6.1-terra, claude-sonnet-5-5, deepseek-flash`|
|Secret mancante|500|`OMNIAKEY_API_KEY is not set`|
|Chiave sbagliata|401|`Invalid token (request id: …)`|

Una chiamata per modello, quindi ogni tempo è un solo campione; `deepseek-flash` ha risposto come `deepseek-v4-1-flash-261017`.

### Perché vedi solo "non-2xx status code"

In caso di errore `supabase.functions.invoke` restituisce solo `Edge Function returned a non-2xx status code`, e `data` vale null. Il messaggio vero della funzione sta in `await error.context.json()`:

```ts
if (error) {
  const details = await error.context.json();
  console.error(details.error);
}
```

- 401: la chiave è sbagliata. La nostra diceva `Invalid token (request id: …)`.
- 500 con `OMNIAKEY_API_KEY is not set`: il secret manca o ha un altro nome.
- 400: il modello non è nella tua lista.

## Come controllare se la chiave è esposta

Una chiave nel codice del frontend è visibile agli utenti e va trattata come compromessa ([buone pratiche](https://docs.lovable.dev/tips-tricks/security-best-practices), verificate il 2 novembre 2026).

- Quick security scan gira da solo a ogni pubblicazione.
- Deep security scan no: avvialo dalla Security view del progetto ([Security view](https://docs.lovable.dev/features/security-view)).
- Cerca il gruppo Leaked secrets & credentials.
- Entrambe le scansioni sono gratuite; solo le correzioni in blocco consumano le 10 correzioni gratuite e poi i crediti ([scansioni di sicurezza](https://docs.lovable.dev/features/security)).

A mano: in Chrome apri gli strumenti per sviluppatori dell'app pubblicata, premi Command+Option+F su Mac o Control+Shift+F su Windows e Linux, e cerca nei file caricati i primi caratteri della chiave. Se un valore `VITE_` contiene una chiave privata, intervieni, perché quei valori vengono compilati per il browser ([ricerca in DevTools](https://developer.chrome.com/docs/devtools/search)). Una ricerca pulita copre solo i file caricati da quella pagina, quindi avvia anche la scansione.

Nascondere la chiave non impedisce a estranei di chiamare la tua funzione: una funzione senza controllo di accesso la può chiamare chiunque, e ogni chiamata consuma la tua chiave. La documentazione di Lovable chiede di imporre l'accesso sul server; la nostra lista di modelli e `max_tokens: 800` limitano ogni chiamata; la documentazione di OmniaKey consiglia una chiave separata per ambiente con un tetto di spesa ([documentazione API di OmniaKey](https://docs.omniakey.com/en/api/authentication)).

## Cosa fare se una chiave è finita in chiaro

1. Revocala nel servizio che l'ha emessa e creane una nuova lì; la documentazione di Lovable elenca l'azione Rotate solo per la propria chiave ([documentazione dei Secrets](https://docs.lovable.dev/features/secrets)).
2. Sostituisci il valore nei Secrets, nel modulo del connettore o in Supabase. Su Supabase la funzione legge subito il nuovo secret, senza nuovo deploy ([secret di Supabase](https://supabase.com/docs/guides/functions/secrets)). La documentazione di Lovable non dice se il backend integrato, Cloud, faccia lo stesso, quindi chiama la funzione una volta per verificarlo.
3. Togli la chiave dal codice del frontend o dal `.env`, poi avvia di nuovo il Deep security scan.
4. Controlla nella pagina di utilizzo del fornitore se ci sono chiamate che non hai fatto tu.

Le chiavi di Lovable funzionano diversamente. `LOVABLE_API_KEY` ha un'azione Rotate, per il ruolo editor e superiori, che emette una chiave nuova e aggiorna l'ambiente della Edge Function. Una chiave del workspace (`lov_…`) segnalata da GitHub secret scanning viene revocata da sola; altrove devi revocarla tu ([documentazione delle chiavi API](https://docs.lovable.dev/features/api-keys)).

## Quanto costa

La fattura di Lovable e quella del tuo fornitore sono separate: con la tua chiave il fornitore addebita l'uso del modello, e la tua app usa Cloud solo per eseguire la funzione ([documentazione AI](https://docs.lovable.dev/features/ai), [Cloud](https://docs.lovable.dev/features/cloud), verificate il 2 novembre 2026).

Il connettore AI integrato addebita crediti del workspace: Free, Pro e Business hanno una quota mensile di 4-credit per l'AI, quando finisce arriva 402, e superando il rate limit arriva 429. Il piano Free dà anche 5 build credits al giorno, fino a 30 al mese, più 20 Cloud credits ([prezzi](https://lovable.dev/pricing)); la tabella dei piani di Lovable indica 100 credits a $25 al mese su Pro ([piani di abbonamento](https://docs.lovable.dev/introduction/subscription-plans), verificati il 2 novembre 2026).

Per OmniaKey, i prezzi attuali sono nelle pagine [GPT-6.1 Terra](https://omniakey.com/it/gpt-6-1-terra), [Claude Sonnet 5.5](https://omniakey.com/it/claude-sonnet-5-5) e [DeepSeek](https://omniakey.com/it/deepseek-flash).

## Domande frequenti

### Dove trovo la mia Lovable API Key?

Dipende da quale chiave intendi. `LOVABLE_API_KEY` viene generata per progetto e sta nei Secrets di quel progetto, dove puoi rigenerarla ma mai leggerla. Una chiave del workspace arriva da Workspace settings → API keys & OAuth → Workspace access tokens e viene mostrata una volta.

### Esiste una Lovable API Key gratuita?

La cosa più vicina è `LOVABLE_API_KEY`: il connettore AI integrato la genera per ogni progetto, e i workspace Free, Pro e Business hanno una quota mensile di 4-credit per usarla. Una chiave del workspace richiede un piano Business o Enterprise.

### Posso usare la mia chiave OpenAI con Lovable AI?

Non con il connettore AI integrato, che passa sempre da Lovable e addebita crediti del workspace. Per la tua chiave, chiedi a Lovable una funzione backend che chiami il fornitore direttamente, con la chiave nei Secrets.

### La chiave API va nei Secrets o nel .env?

Nei Secrets, quando la chiave è privata e la legge il codice backend. Il `.env` serve ai valori `VITE_`, che finiscono nell'app compilata e sono visibili nel browser.

### Perché Lovable non si collega a GPT, Claude o DeepSeek?

Leggi prima il messaggio della funzione, che nomina il problema:

- 500 con `OMNIAKEY_API_KEY is not set`: il secret manca o è salvato con un altro nome.
- 401: la chiave è sbagliata o revocata.
- 400: l'ID del modello non è nella tua lista.
- 404: l'URL di base è sbagliato; il nostro finisce con `/v1/chat/completions`, e la maggior parte degli errori di configurazione viene da un suffisso di protocollo sbagliato ([documentazione degli errori di OmniaKey](https://docs.omniakey.com/en/api/errors)).

Nel browser vedi solo `Edge Function returned a non-2xx status code`, quindi registra `error.context` come sopra per capire quale caso è.

## Fonti controllate

- [Documentazione dei Secrets di Lovable](https://docs.lovable.dev/features/secrets), verificata il 2 novembre 2026
- [Chiavi API di Lovable](https://docs.lovable.dev/features/api-keys), verificata il 2 novembre 2026
- [Lovable API](https://docs.lovable.dev/integrations/lovable-api), verificata il 2 novembre 2026
- [Server MCP di Lovable](https://docs.lovable.dev/integrations/lovable-mcp-server), verificata il 2 novembre 2026
- [Build with URL](https://docs.lovable.dev/integrations/build-with-url), verificata il 2 novembre 2026
- [Funzioni AI di Lovable](https://docs.lovable.dev/features/ai), verificata il 2 novembre 2026
- [Lovable AI chat](https://docs.lovable.dev/features/ai-chat), verificata il 2 novembre 2026
- [Lovable Edge functions](https://docs.lovable.dev/features/edge-functions), verificata il 2 novembre 2026
- [Lovable Cloud](https://docs.lovable.dev/features/cloud), verificata il 2 novembre 2026
- [API personalizzate e connettori](https://docs.lovable.dev/integrations/any-api), verificata il 2 novembre 2026
- [Integrazione Stripe](https://docs.lovable.dev/integrations/stripe), verificata il 2 novembre 2026
- [Integrazione Resend](https://docs.lovable.dev/integrations/resend), verificata il 2 novembre 2026
- [Integrazione Google Maps](https://docs.lovable.dev/integrations/google-maps), verificata il 2 novembre 2026
- [Sicurezza delle integrazioni](https://docs.lovable.dev/integrations/security), verificata il 2 novembre 2026
- [Integrazione Supabase](https://docs.lovable.dev/integrations/supabase), verificata il 2 novembre 2026
- [Sicurezza di Lovable](https://docs.lovable.dev/features/security), verificata il 2 novembre 2026
- [Security view di Lovable](https://docs.lovable.dev/features/security-view), verificata il 2 novembre 2026
- [Buone pratiche di sicurezza di Lovable](https://docs.lovable.dev/tips-tricks/security-best-practices), verificate il 2 novembre 2026
- [Piani di abbonamento di Lovable](https://docs.lovable.dev/introduction/subscription-plans), verificati il 2 novembre 2026
- [Changelog di Lovable](https://docs.lovable.dev/changelog), verificato il 2 novembre 2026
- [Prezzi di Lovable](https://lovable.dev/pricing), verificati il 2 novembre 2026
- [Secret delle Edge Function di Supabase](https://supabase.com/docs/guides/functions/secrets), verificati il 2 novembre 2026
- [Supabase functions.invoke](https://supabase.com/docs/reference/javascript/functions-invoke), verificata il 2 novembre 2026
- [Ricerca in Chrome DevTools](https://developer.chrome.com/docs/devtools/search), verificata il 2 novembre 2026

Documentazione di OmniaKey, verificata il 2 novembre 2026: [guida rapida](https://docs.omniakey.com/en/quick-start), [API compatibile con OpenAI](https://docs.omniakey.com/en/api/openai-compatible), [autenticazione](https://docs.omniakey.com/en/api/authentication) e [errori](https://docs.omniakey.com/en/api/errors).
