# Lovable API Key : où la placer et comment la protéger

> Où placer votre Lovable API Key, pourquoi sa place est dans les Secrets et une fonction backend, et comment connecter GPT, Claude ou DeepSeek sans l'exposer.

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

---

Dans Lovable, votre Lovable API Key va dans les Secrets : ouvrez More → Settings → Secrets dans la barre du projet ou utilisez le formulaire Add secret que Lovable affiche dans le chat du projet. Le code du backend la lit à cet endroit, donc la clé n'atteint jamais le navigateur. Un message dans le chat ou du code côté frontend la laisse visible pour tout le monde.

## Réponse courte

- **Votre propre clé** (GPT, Claude, Resend) : les Secrets, ou le formulaire affiché par un connecteur.
- **Les clés de Lovable** : `LOVABLE_API_KEY` est générée automatiquement ; une clé d'espace de travail (`lov_…`) demande Business ou Enterprise.
- **GPT, Claude ou DeepSeek avec votre clé** : demandez à Lovable une fonction backend, car le connecteur IA intégré ne peut pas utiliser votre clé.
- **En cas de fuite** : révoquez d'abord chez le fournisseur, puis remplacez le secret.

## De quel Lovable API Key avez-vous besoin ?

« Lovable API Key » peut désigner quatre choses différentes.

|Vous voulez|Clé|D'où elle vient|
|-|-|-|
|Appeler GPT, Resend ou un autre service payant|Votre clé, fournie par ce service|Les Secrets, ou le formulaire d'un connecteur|
|Utiliser l'IA intégrée de Lovable|`LOVABLE_API_KEY`|Lovable la génère par projet|
|Gérer des projets avec l'API Lovable|Une clé d'espace de travail (`lov_…`)|Workspace settings → API keys & OAuth → Workspace access tokens → New API key, Business ou Enterprise, owner ou admin|
|Utiliser le serveur MCP ou Build with URL|Aucune clé d'API|OAuth pour MCP ; rien pour Build with URL|

La clé d'espace de travail part uniquement vers l'API de Lovable, dans l'en-tête `Lovable-API-Key`, et sa valeur ne s'affiche qu'une fois ([documentation des clés d'API](https://docs.lovable.dev/features/api-keys), vérifiée le 2 novembre 2026). Elle sert à gérer et déployer des projets ; elle n'appelle pas de modèles d'IA et ne construit pas d'application ([Lovable API](https://docs.lovable.dev/integrations/lovable-api)), et ce n'est pas la `LOVABLE_API_KEY` du projet ([documentation IA](https://docs.lovable.dev/features/ai)).

Tout ce qui suit concerne la première ligne : votre propre clé.

## Où ajouter une clé d'API dans Lovable

1. Lovable vous le demande. Quand une fonction a besoin d'une clé, le formulaire Add secret s'ouvre dans le chat du projet. Saisissez la valeur à cet endroit, pas comme message : le formulaire l'enregistre directement dans les secrets du projet et la garde hors de l'historique ([documentation des API personnalisées de Lovable](https://docs.lovable.dev/integrations/any-api), vérifiée le 2 novembre 2026).
2. Vous l'ajoutez vous-même. Ouvrez More → Settings → Secrets dans la barre du projet, cliquez sur Add secret et saisissez une ou plusieurs paires de nom et de valeur ([documentation des Secrets](https://docs.lovable.dev/features/secrets)).

Le journal des modifications de Lovable du 26 août 2026 nomme cette entrée More → Cloud → Secrets : cherchez-la là si votre menu diffère ([journal des modifications](https://docs.lovable.dev/changelog)).

Des règles qui surprennent :

- Écriture seule : vous pouvez remplacer ou supprimer une valeur, jamais la relire.
- Les noms `VITE_` sont refusés ; ce sont des valeurs de compilation visibles dans le navigateur, à placer dans `.env`.
- Les noms `SUPABASE_` et `LOVABLE_` sont réservés et remplis automatiquement.
- Les secrets appartiennent à un projet. Après un remix, vous ressaisissez les vôtres, car seules les clés générées par Lovable sont recréées.

Sur votre propre projet Supabase, la vue backend propose un bouton Manage secrets qui ouvre le tableau de bord Supabase, où le stockage se trouve dans Edge Function Secrets ([secrets Supabase](https://supabase.com/docs/guides/functions/secrets), vérifiés le 2 novembre 2026). Deux projets Lovable qui partagent un projet Supabase écrasent leurs secrets respectifs, `LOVABLE_API_KEY` comprise ([intégration Supabase](https://docs.lovable.dev/integrations/supabase)).

## Où vont les clés Resend, Stripe et Google Maps ?

Toutes les clés ne vont pas directement dans les Secrets : ces services disposent de formulaires de connecteur ([Stripe](https://docs.lovable.dev/integrations/stripe), [Resend](https://docs.lovable.dev/integrations/resend), [API personnalisées](https://docs.lovable.dev/integrations/any-api), vérifiés le 2 novembre 2026).

|Service|Où va la clé|Bon à savoir|
|-|-|-|
|Stripe|Le formulaire Connect Stripe du chat du projet|Ne jamais envoyer la clé comme message|
|Resend|Le formulaire de connexion|Les clés commencent par `re_`|
|Google Maps|Deux clés dans le formulaire de connexion|Clé serveur privée ; clé navigateur publique par conception|
|Tout autre service|Un connecteur personnalisé, ou la clé dans les Secrets|Le code serveur lit le secret|

Google Maps est l'exception. Sa clé navigateur est publique par conception et arrive au frontend sous la forme `VITE_LOVABLE_CONNECTOR_GOOGLE_MAPS_BROWSER_KEY` ; la restriction par site web empêche les autres sites de la réutiliser ([Google Maps](https://docs.lovable.dev/integrations/google-maps), vérifiée le 2 novembre 2026). La clé serveur reste privée. Les identifiants des connecteurs sont stockés chiffrés et personne ne peut les relire, pas même Lovable ([sécurité des intégrations](https://docs.lovable.dev/integrations/security)).

## Connecter GPT, Claude ou DeepSeek avec votre propre clé

Vérifiez d'abord si une clé est nécessaire : le connecteur IA intégré n'en utilise aucune. Lovable génère une `LOVABLE_API_KEY` par projet et exécute [GPT-6 Astra](https://omniakey.com/fr/gpt-6-astra) par défaut ; les modèles de chat Claude n'existent que dans les applications TanStack Start récentes créées depuis le 13 mai 2026 ([documentation IA](https://docs.lovable.dev/features/ai), [AI chat](https://docs.lovable.dev/features/ai-chat), vérifiées le 2 novembre 2026).

Ce connecteur ne peut pas utiliser votre clé : il passe toujours par Lovable et facture des crédits d'espace de travail. La documentation de Lovable, telle que nous l'avons lue le 2 novembre 2026, ne mentionne pas DeepSeek. Pour votre propre clé, demandez à Lovable d'appeler le fournisseur depuis une fonction backend, avec la clé dans les Secrets.

Il n'y a pas de bouton pour créer une fonction : décrivez-la dans le chat du projet et Lovable l'écrit et la déploie ([Edge functions](https://docs.lovable.dev/features/edge-functions)). Les applications TanStack Start récentes (créées depuis le 13 mai 2026, ou le 22 juin 2026 en Enterprise) reçoivent une server function ; les applications React + Vite plus anciennes reçoivent une Edge Function, c'est-à-dire du code exécuté sur le serveur.

Notre code utilise l'[API compatible OpenAI](https://docs.omniakey.com/en/api/openai-compatible) d'OmniaKey, parce qu'une seule clé atteint [GPT-6.1 Terra](https://omniakey.com/fr/gpt-6-1-terra), [Claude Sonnet 5.5](https://omniakey.com/fr/claude-sonnet-5-5) et [DeepSeek](https://omniakey.com/fr/deepseek-flash).

1. Créez une clé chez votre fournisseur. Pour OmniaKey : inscrivez-vous sur omniakey.com, puis Dashboard → tokens ([démarrage rapide](https://docs.omniakey.com/en/quick-start)).

2. Collez ce prompt dans le chat du projet :

   ```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. Saisissez la clé dans le formulaire Add secret, sous le nom `OMNIAKEY_API_KEY`.

Nous n'avons pas exécuté ce prompt dans Lovable, faute de compte Lovable, et les étapes Lovable viennent de sa documentation. La fonction devrait ressembler à ceci ; c'est la version que nous avons exécutée sur notre propre machine.

```ts
// supabase/functions/chat/index.ts
// Le navigateur envoie { model, messages } ; cette fonction ajoute la clé d'API côté serveur.
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 });
});
```

Notre version de test omet la vérification de connexion pour que nous puissions l'appeler depuis un script ; le prompt ci-dessus demande à Lovable de l'ajouter, car les bonnes pratiques de sécurité de Lovable veulent que l'authentification soit décidée sur le serveur ([bonnes pratiques](https://docs.lovable.dev/tips-tricks/security-best-practices)).

Depuis le navigateur, l'appel ressemble à ceci ([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." }] },
});
```

Avec un autre fournisseur, remplacez l'URL et les ID de modèle par ceux de sa documentation. Une clé OmniaKey sert aussi pour une [clé d'API personnalisée dans Cline](https://omniakey.com/fr/blog/cline-custom-api-key) et pour des [modèles personnalisés dans Factory Droid](https://omniakey.com/fr/blog/factory-droid-custom-models).

## Ce qui s'est passé à l'exécution

Nous avons exécuté la fonction sur notre propre machine, pas dans Lovable, avec Deno 2.9.8 le 2 novembre 2026, et nous l'avons appelée comme un navigateur, avec un en-tête `Origin` et une requête préalable CORS.

|Test|Statut|Ce qui est revenu|
|-|-|-|
|Requête préalable (`OPTIONS`)|200|`*` et la liste des en-têtes autorisés|
|`gpt-6.1-terra`|200 en 3.28 s|Une réponse, 53 tokens au total|
|`claude-sonnet-5-5`|200 en 2.85 s|Une réponse, 134 tokens au total|
|`deepseek-flash`|200 en 1.75 s|Une réponse, 92 tokens au total|
|Modèle hors de la liste|400|`model must be one of: gpt-6.1-terra, claude-sonnet-5-5, deepseek-flash`|
|Secret absent|500|`OMNIAKEY_API_KEY is not set`|
|Mauvaise clé|401|`Invalid token (request id: …)`|

Un appel par modèle, donc chaque durée est un échantillon ; `deepseek-flash` a répondu sous le nom `deepseek-v4-1-flash-261017`.

### Pourquoi vous ne voyez que « non-2xx status code »

En cas d'erreur, `supabase.functions.invoke` ne renvoie que `Edge Function returned a non-2xx status code`, et `data` vaut null. Le vrai message de la fonction se trouve dans `await error.context.json()` :

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

- 401 : la clé est fausse. La nôtre affichait `Invalid token (request id: …)`.
- 500 avec `OMNIAKEY_API_KEY is not set` : le secret manque ou porte un autre nom.
- 400 : le modèle n'est pas dans votre liste.

## Vérifier si votre clé est exposée

Une clé dans le code frontend est visible des utilisateurs et doit être traitée comme compromise ([bonnes pratiques](https://docs.lovable.dev/tips-tricks/security-best-practices), vérifiées le 2 novembre 2026).

- Quick security scan s'exécute seul à chaque publication.
- Deep security scan non : lancez-le depuis la Security view du projet ([Security view](https://docs.lovable.dev/features/security-view)).
- Cherchez le groupe Leaked secrets & credentials.
- Les deux analyses sont gratuites ; seules les corrections en masse utilisent les 10 corrections gratuites, puis des crédits ([analyses de sécurité](https://docs.lovable.dev/features/security)).

À la main : dans Chrome, ouvrez les outils de développement de votre application publiée, appuyez sur Command+Option+F sur Mac ou Control+Shift+F sous Windows et Linux, et cherchez dans les fichiers chargés les premiers caractères de votre clé. Une valeur `VITE_` qui contient une clé privée demande une correction, car ces valeurs sont compilées pour le navigateur ([recherche dans DevTools](https://developer.chrome.com/docs/devtools/search)). Une recherche propre ne couvre que les fichiers chargés par la page, alors lancez aussi l'analyse.

Cacher la clé n'empêche pas des inconnus d'appeler votre fonction : n'importe qui peut appeler une fonction sans vérification de connexion, et chaque appel dépense votre clé. La documentation de Lovable demande d'imposer la connexion côté serveur ; notre liste de modèles autorisés et `max_tokens: 800` limitent chaque appel ; la documentation d'OmniaKey recommande une clé par environnement avec un plafond de dépense ([documentation d'API d'OmniaKey](https://docs.omniakey.com/en/api/authentication)).

## Que faire si une clé a été exposée

1. Révoquez-la chez le service qui l'a émise et créez-en une nouvelle sur place ; la documentation de Lovable ne propose Rotate que pour sa propre clé ([documentation des Secrets](https://docs.lovable.dev/features/secrets)).
2. Remplacez la valeur dans les Secrets, le formulaire du connecteur ou Supabase. Sur Supabase, la fonction lit le nouveau secret immédiatement, sans redéploiement ([secrets Supabase](https://supabase.com/docs/guides/functions/secrets)). La documentation de Lovable ne dit pas si son backend intégré, Cloud, fait de même : appelez la fonction une fois pour le confirmer.
3. Sortez la clé du code frontend ou du `.env`, puis relancez le Deep security scan.
4. Regardez la page d'usage de votre fournisseur pour des appels que vous n'avez pas faits.

Les clés de Lovable fonctionnent autrement. `LOVABLE_API_KEY` dispose d'une action Rotate, pour les rôles editor et supérieurs, qui émet une nouvelle clé et met à jour l'environnement de l'Edge Function. Une clé d'espace de travail (`lov_…`) signalée par GitHub secret scanning est révoquée automatiquement ; ailleurs, révoquez-la vous-même ([documentation des clés d'API](https://docs.lovable.dev/features/api-keys)).

## Combien cela coûte

La facture de Lovable et celle de votre fournisseur sont séparées : avec votre clé, le fournisseur facture l'usage du modèle, et votre application n'utilise Cloud que pour exécuter la fonction ([documentation IA](https://docs.lovable.dev/features/ai), [Cloud](https://docs.lovable.dev/features/cloud), vérifiées le 2 novembre 2026).

Le connecteur IA intégré facture des crédits d'espace de travail : Free, Pro et Business disposent d'une enveloppe mensuelle de 4-credit pour l'IA, son épuisement renvoie 402, et le dépassement de la limite de débit renvoie 429. Le plan Free donne aussi 5 build credits par jour, jusqu'à 30 par mois, plus 20 Cloud credits ([tarifs](https://lovable.dev/pricing)) ; le tableau des offres de Lovable indique 100 credits à $25 par mois en Pro ([offres d'abonnement](https://docs.lovable.dev/introduction/subscription-plans), vérifiées le 2 novembre 2026).

Pour OmniaKey, consultez les tarifs actuels sur les pages [GPT-6.1 Terra](https://omniakey.com/fr/gpt-6-1-terra), [Claude Sonnet 5.5](https://omniakey.com/fr/claude-sonnet-5-5) et [DeepSeek](https://omniakey.com/fr/deepseek-flash).

## Questions fréquentes

### Où trouver ma Lovable API key ?

Cela dépend de la clé. `LOVABLE_API_KEY` est générée par projet et se trouve dans les Secrets de ce projet, où vous pouvez la renouveler sans jamais la lire. Une clé d'espace de travail vient de Workspace settings → API keys & OAuth → Workspace access tokens et ne s'affiche qu'une fois.

### Existe-t-il une Lovable API Key gratuite ?

Le plus proche est `LOVABLE_API_KEY` : le connecteur IA intégré la génère pour chaque projet, et les espaces de travail Free, Pro et Business disposent d'une enveloppe mensuelle de 4-credit pour l'utiliser. Une clé d'espace de travail exige une offre Business ou Enterprise.

### Puis-je utiliser ma propre clé OpenAI avec Lovable AI ?

Pas avec le connecteur IA intégré, qui passe toujours par Lovable et facture des crédits d'espace de travail. Pour votre clé, demandez à Lovable une fonction backend qui appelle le fournisseur directement, avec la clé dans les Secrets.

### La clé d'API va-t-elle dans les Secrets ou dans .env ?

Dans les Secrets quand la clé est privée et lue par le code backend. `.env` sert aux valeurs `VITE_`, compilées dans l'application et visibles dans le navigateur.

### Pourquoi Lovable ne se connecte pas à GPT, Claude ou DeepSeek ?

Lisez d'abord le message de la fonction, il nomme le problème :

- 500 avec `OMNIAKEY_API_KEY is not set` : le secret manque ou porte un autre nom.
- 401 : la clé est fausse ou révoquée.
- 400 : l'ID du modèle n'est pas dans votre liste autorisée.
- 404 : l'URL de base est fausse ; la nôtre se termine par `/v1/chat/completions`, et la plupart des erreurs de configuration viennent d'un suffixe de protocole erroné ([documentation des erreurs d'OmniaKey](https://docs.omniakey.com/en/api/errors)).

Dans le navigateur, vous ne voyez que `Edge Function returned a non-2xx status code` ; journalisez `error.context` comme ci-dessus pour savoir de quel cas il s'agit.

## Sources vérifiées

- [Documentation des Secrets de Lovable](https://docs.lovable.dev/features/secrets), vérifiée le 2 novembre 2026
- [Clés d'API de Lovable](https://docs.lovable.dev/features/api-keys), vérifiée le 2 novembre 2026
- [Lovable API](https://docs.lovable.dev/integrations/lovable-api), vérifiée le 2 novembre 2026
- [Serveur MCP de Lovable](https://docs.lovable.dev/integrations/lovable-mcp-server), vérifiée le 2 novembre 2026
- [Build with URL](https://docs.lovable.dev/integrations/build-with-url), vérifiée le 2 novembre 2026
- [Fonctions IA de Lovable](https://docs.lovable.dev/features/ai), vérifiée le 2 novembre 2026
- [Lovable AI chat](https://docs.lovable.dev/features/ai-chat), vérifiée le 2 novembre 2026
- [Lovable Edge functions](https://docs.lovable.dev/features/edge-functions), vérifiée le 2 novembre 2026
- [Lovable Cloud](https://docs.lovable.dev/features/cloud), vérifiée le 2 novembre 2026
- [API personnalisées et connecteurs](https://docs.lovable.dev/integrations/any-api), vérifiée le 2 novembre 2026
- [Intégration Stripe](https://docs.lovable.dev/integrations/stripe), vérifiée le 2 novembre 2026
- [Intégration Resend](https://docs.lovable.dev/integrations/resend), vérifiée le 2 novembre 2026
- [Intégration Google Maps](https://docs.lovable.dev/integrations/google-maps), vérifiée le 2 novembre 2026
- [Sécurité des intégrations](https://docs.lovable.dev/integrations/security), vérifiée le 2 novembre 2026
- [Intégration Supabase](https://docs.lovable.dev/integrations/supabase), vérifiée le 2 novembre 2026
- [Sécurité de Lovable](https://docs.lovable.dev/features/security), vérifiée le 2 novembre 2026
- [Security view de Lovable](https://docs.lovable.dev/features/security-view), vérifiée le 2 novembre 2026
- [Bonnes pratiques de sécurité de Lovable](https://docs.lovable.dev/tips-tricks/security-best-practices), vérifiées le 2 novembre 2026
- [Offres d'abonnement de Lovable](https://docs.lovable.dev/introduction/subscription-plans), vérifiées le 2 novembre 2026
- [Journal des modifications de Lovable](https://docs.lovable.dev/changelog), vérifié le 2 novembre 2026
- [Tarifs de Lovable](https://lovable.dev/pricing), vérifiés le 2 novembre 2026
- [Secrets des Edge Function Supabase](https://supabase.com/docs/guides/functions/secrets), vérifiés le 2 novembre 2026
- [Supabase functions.invoke](https://supabase.com/docs/reference/javascript/functions-invoke), vérifiée le 2 novembre 2026
- [Recherche dans Chrome DevTools](https://developer.chrome.com/docs/devtools/search), vérifiée le 2 novembre 2026

Documentation propre à OmniaKey, vérifiée le 2 novembre 2026 : [démarrage rapide](https://docs.omniakey.com/en/quick-start), [API compatible OpenAI](https://docs.omniakey.com/en/api/openai-compatible), [authentification](https://docs.omniakey.com/en/api/authentication) et [erreurs](https://docs.omniakey.com/en/api/errors).
