GPT-6 Sol e Claude Opus 5.5 disponibiliGPT-6 Sol a metà prezzo rispetto a 5.6 Sol

Lovable API Key: dove metterla e come proteggerla

Dove va la chiave, le quattro cose che chiamano Lovable API Key, una funzione che abbiamo eseguito con GPT, Claude e DeepSeek e cosa fare se una chiave finisce in chiaro.

Kiki, OmniaKey COO10 min di lettura
In questa pagina

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.

VuoiChiaveDa dove viene
Chiamare GPT, Resend o un altro servizio a pagamentoLa tua chiave di quel servizioI Secrets, oppure il modulo di un connettore
Usare l'AI integrata di LovableLOVABLE_API_KEYLovable la genera per ogni progetto
Gestire i progetti con l'API di LovableUna 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 URLNessuna API keyOAuth 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, verificata il 2 novembre 2026). Gestisce e pubblica i progetti; non chiama modelli AI e non costruisce applicazioni (Lovable API), e non è la LOVABLE_API_KEY del progetto (documentazione 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, 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).

Il changelog di Lovable del 26 agosto 2026 chiama questo percorso More → Cloud → Secrets, quindi cerca lì se il tuo menu è diverso (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, 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).

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, Resend, API personalizzate, verificati il 2 novembre 2026).

ServizioDove va la chiaveDa sapere
StripeIl modulo Connect Stripe nella chat del progettoNon incollare mai la chiave come messaggio
ResendIl modulo di connessioneLe chiavi iniziano con re_
Google MapsDue chiavi nel modulo di connessioneChiave server privata; chiave browser pubblica per progetto
Ogni altro servizioUn connettore personalizzato, oppure la chiave nei SecretsIl 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, 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).

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 per impostazione predefinita; i modelli chat Claude ci sono solo nelle app TanStack Start più recenti, create dal 13 maggio 2026 (documentazione AI, 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). 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 di OmniaKey, perché una sola chiave raggiunge GPT-6.1 Terra, Claude Sonnet 5.5 e DeepSeek.

  1. Crea una chiave dal tuo fornitore. Per OmniaKey: registrati su omniakey.com e apri Dashboard → tokens (guida rapida).

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

Dal browser la chiamata è questa (supabase-js):

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 e per modelli personalizzati in Factory Droid.

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.

TestStatoCosa è tornato
Preflight (OPTIONS)200* e l'elenco degli header consentiti
gpt-6.1-terra200 in 3.28 sUna risposta, 53 token in totale
claude-sonnet-5-5200 in 2.85 sUna risposta, 134 token in totale
deepseek-flash200 in 1.75 sUna risposta, 92 token in totale
Modello fuori elenco400model must be one of: gpt-6.1-terra, claude-sonnet-5-5, deepseek-flash
Secret mancante500OMNIAKEY_API_KEY is not set
Chiave sbagliata401Invalid 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, 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).
  • 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).

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

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

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, 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); la tabella dei piani di Lovable indica 100 credits a $25 al mese su Pro (piani di abbonamento, verificati il 2 novembre 2026).

Per OmniaKey, i prezzi attuali sono nelle pagine GPT-6.1 Terra, Claude Sonnet 5.5 e DeepSeek.

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

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 di OmniaKey, verificata il 2 novembre 2026: guida rapida, API compatibile con OpenAI, autenticazione e errori.

Modelli citati in questo articolo

Lovablechiave APISecretsEdge FunctionsGPT-6.1 TerraClaude Sonnet 5.5DeepSeek

Articoli correlati

Articoli recenti

Guide popolari