# Lovable API Key: tempat menaruhnya dan cara mengamankannya

> Di mana menaruh Lovable API Key, kenapa tempatnya di Secrets dan fungsi backend, dan cara menghubungkan GPT, Claude atau DeepSeek tanpa membuka kuncinya.

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

---

Di Lovable, Lovable API Key Anda masuk ke Secrets: buka More → Settings → Secrets di bilah proyek, atau pakai formulir Add secret yang Lovable tampilkan di chat proyek. Kode backend membacanya dari sana, jadi kunci tidak pernah sampai ke browser. Jangan tempel kunci sebagai pesan chat dan jangan taruh di kode frontend.

## Jawaban singkat

- **Kunci Anda sendiri** (GPT, Claude, Resend): Secrets, atau formulir yang ditampilkan konektor.
- **Kunci milik Lovable:** `LOVABLE_API_KEY` dibuat otomatis; kunci workspace (`lov_…`) butuh Business atau Enterprise.
- **GPT, Claude, atau DeepSeek dengan kunci Anda:** minta Lovable membuat fungsi backend, karena konektor AI bawaan tidak bisa memakai kunci Anda.
- **Kalau bocor:** cabut dulu di penyedia, lalu ganti secret-nya.

## Lovable API Key mana yang Anda butuhkan?

Lovable API Key bisa berarti empat hal berbeda.

|Anda ingin|Kunci|Asalnya|
|-|-|-|
|Memanggil GPT, Resend, atau layanan berbayar lain|Kunci Anda dari layanan itu|Secrets, atau formulir konektor|
|Memakai AI bawaan Lovable|`LOVABLE_API_KEY`|Lovable membuatnya per proyek|
|Mengelola proyek lewat API Lovable|Kunci workspace (`lov_…`)|Workspace settings → API keys & OAuth → Workspace access tokens → New API key, Business atau Enterprise, owner atau admin|
|Memakai server MCP atau Build with URL|Tidak perlu API key|OAuth untuk MCP; tidak ada untuk Build with URL|

Kunci workspace hanya dikirim ke API Lovable, di header `Lovable-API-Key`, dan nilainya ditampilkan sekali ([dokumentasi kunci API](https://docs.lovable.dev/features/api-keys), diperiksa 2 November 2026). Kunci ini mengelola dan men-deploy proyek; ia tidak memanggil model AI atau membangun aplikasi ([Lovable API](https://docs.lovable.dev/integrations/lovable-api)), dan bukan `LOVABLE_API_KEY` milik proyek ([dokumentasi AI](https://docs.lovable.dev/features/ai)).

Semua di bawah ini soal baris pertama: kunci Anda sendiri.

## Cara menambahkan API key di Lovable

1. Lovable yang meminta. Saat sebuah fitur butuh kunci, formulir Add secret terbuka di chat proyek. Masukkan nilainya di sana, bukan sebagai pesan: formulir menyimpannya langsung ke secrets proyek dan menjaganya di luar riwayat chat ([dokumentasi API khusus Lovable](https://docs.lovable.dev/integrations/any-api), diperiksa 2 November 2026).
2. Anda menambahkannya sendiri. Buka More → Settings → Secrets di bilah proyek, klik Add secret, lalu masukkan satu atau beberapa pasangan nama dan nilai ([dokumentasi Secrets](https://docs.lovable.dev/features/secrets)).

Changelog Lovable 26 Agustus 2026 menyebut jalur ini More → Cloud → Secrets, jadi cek di sana kalau menu Anda berbeda ([changelog](https://docs.lovable.dev/changelog)).

Aturan yang sering bikin orang tersandung:

- Hanya tulis: nilai bisa diganti atau dihapus, tapi tidak bisa dibaca lagi.
- Nama dengan `VITE_` ditolak; itu nilai saat build yang terlihat di browser dan tempatnya di `.env`.
- Nama `SUPABASE_` dan `LOVABLE_` dicadangkan dan diisi otomatis.
- Secrets milik satu proyek. Setelah remix Anda memasukkan kunci sendiri lagi, karena hanya kunci buatan Lovable yang dibuat ulang.

Di proyek Supabase Anda sendiri, tampilan backend punya tombol Manage secrets yang membuka dasbor Supabase, tempat penyimpanannya ada di Edge Function Secrets ([secret Supabase](https://supabase.com/docs/guides/functions/secrets), diperiksa 2 November 2026). Dua proyek Lovable yang berbagi satu proyek Supabase saling menimpa secret, termasuk `LOVABLE_API_KEY` ([integrasi Supabase](https://docs.lovable.dev/integrations/supabase)).

## Ke mana kunci Resend, Stripe, dan Google Maps pergi?

Tidak semua kunci masuk langsung ke Secrets: layanan ini punya formulir konektor ([Stripe](https://docs.lovable.dev/integrations/stripe), [Resend](https://docs.lovable.dev/integrations/resend), [API khusus](https://docs.lovable.dev/integrations/any-api), diperiksa 2 November 2026).

|Layanan|Ke mana kuncinya|Yang perlu diketahui|
|-|-|-|
|Stripe|Formulir Connect Stripe di chat proyek|Jangan pernah menempel kunci sebagai pesan chat|
|Resend|Formulir koneksi|Kunci dimulai dengan `re_`|
|Google Maps|Dua kunci di formulir koneksi|Kunci server privat; kunci browser publik memang dirancang begitu|
|Layanan lain|Konektor khusus, atau kunci di Secrets|Kode server membaca secret|

Google Maps pengecualiannya. Kunci browser-nya publik memang dirancang begitu dan sampai ke frontend sebagai `VITE_LOVABLE_CONNECTOR_GOOGLE_MAPS_BROWSER_KEY`, dan pembatasan situslah yang mencegah situs lain memakainya ([Google Maps](https://docs.lovable.dev/integrations/google-maps), diperiksa 2 November 2026). Kunci server tetap privat. Kredensial konektor disimpan terenkripsi, dan tidak ada yang bisa membacanya lagi, termasuk Lovable ([keamanan integrasi](https://docs.lovable.dev/integrations/security)).

## Menghubungkan GPT, Claude, atau DeepSeek dengan kunci sendiri

Cek dulu apakah Anda butuh kunci: konektor AI bawaan tidak butuh. Lovable membuat `LOVABLE_API_KEY` per proyek dan menjalankan [GPT-6 Astra](https://omniakey.com/id/gpt-6-astra) secara default; model chat Claude hanya ada di aplikasi TanStack Start yang lebih baru, dibuat sejak 13 Mei 2026 ([dokumentasi AI](https://docs.lovable.dev/features/ai), [AI chat](https://docs.lovable.dev/features/ai-chat), diperiksa 2 November 2026).

Konektor itu tidak bisa memakai kunci Anda: ia selalu berjalan lewat Lovable dan menagih kredit workspace. Dokumentasi Lovable, seperti yang kami baca pada 2 November 2026, tidak menyebut DeepSeek. Untuk kunci Anda sendiri, minta Lovable memanggil penyedia dari fungsi backend dengan kunci di Secrets.

Tidak ada tombol buat fungsi: jelaskan fungsinya di chat proyek dan Lovable menulis lalu men-deploy-nya ([Edge functions](https://docs.lovable.dev/features/edge-functions)). Aplikasi TanStack Start yang lebih baru (dibuat sejak 13 Mei 2026, atau 22 Juni 2026 di Enterprise) mendapat server function; aplikasi React + Vite yang lama mendapat Edge Function, yaitu kode yang berjalan di server.

Kode kami memakai [API kompatibel OpenAI](https://docs.omniakey.com/en/api/openai-compatible) dari OmniaKey, karena satu kunci menjangkau [GPT-6.1 Terra](https://omniakey.com/id/gpt-6-1-terra), [Claude Sonnet 5.5](https://omniakey.com/id/claude-sonnet-5-5), dan [DeepSeek](https://omniakey.com/id/deepseek-flash).

1. Buat kunci di penyedia Anda. Untuk OmniaKey: daftar di omniakey.com lalu buka Dashboard → tokens ([mulai cepat](https://docs.omniakey.com/en/quick-start)).

2. Tempel prompt ini di chat proyek:

   ```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. Masukkan kunci di formulir Add secret dengan nama `OMNIAKEY_API_KEY`.

Prompt itu belum kami jalankan di Lovable, karena kami tidak punya akun Lovable; langkah Lovable di sini berasal dari dokumentasinya. Fungsinya akan jadi seperti ini, dan versi inilah yang kami jalankan di mesin kami sendiri.

```ts
// supabase/functions/chat/index.ts
// Browser mengirim { model, messages }; fungsi ini menambahkan kunci API di 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 });
});
```

Versi uji kami melewatkan pemeriksaan login supaya bisa dipanggil dari skrip; prompt di atas meminta Lovable menambahkannya, karena praktik keamanan Lovable menyebut keputusan autentikasi diambil di server ([praktik terbaik](https://docs.lovable.dev/tips-tricks/security-best-practices)).

Dari browser, panggilannya seperti ini ([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." }] },
});
```

Dengan penyedia lain, ganti URL dan ID model dengan yang ada di dokumentasinya. Kunci OmniaKey juga berfungsi untuk [API key khusus di Cline](https://omniakey.com/id/blog/cline-custom-api-key) dan [model khusus di Factory Droid](https://omniakey.com/id/blog/factory-droid-custom-models).

## Yang terjadi saat kami menjalankannya

Kami menjalankan fungsi ini di mesin kami sendiri, bukan di Lovable, dengan Deno 2.9.8 pada 2 November 2026, dan memanggilnya seperti browser: dengan header `Origin` dan preflight CORS.

|Uji|Status|Yang kembali|
|-|-|-|
|Preflight (`OPTIONS`)|200|`*` dan daftar header yang diizinkan|
|`gpt-6.1-terra`|200 dalam 3.28 s|Satu balasan, 53 token total|
|`claude-sonnet-5-5`|200 dalam 2.85 s|Satu balasan, 134 token total|
|`deepseek-flash`|200 dalam 1.75 s|Satu balasan, 92 token total|
|Model di luar daftar|400|`model must be one of: gpt-6.1-terra, claude-sonnet-5-5, deepseek-flash`|
|Secret tidak ada|500|`OMNIAKEY_API_KEY is not set`|
|Kunci salah|401|`Invalid token (request id: …)`|

Satu panggilan per model, jadi setiap durasi hanya satu sampel; `deepseek-flash` menjawab sebagai `deepseek-v4-1-flash-261017`.

### Kenapa Anda hanya melihat "non-2xx status code"

Saat error, `supabase.functions.invoke` hanya mengembalikan `Edge Function returned a non-2xx status code`, dan `data` bernilai null. Pesan asli dari fungsi ada di `await error.context.json()`:

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

- 401: kuncinya salah. Punya kami berbunyi `Invalid token (request id: …)`.
- 500 dengan `OMNIAKEY_API_KEY is not set`: secret tidak ada atau namanya berbeda.
- 400: model tidak ada di daftar Anda.

## Cara memeriksa apakah kunci Anda terbuka

Kunci di kode frontend terlihat oleh pengguna dan harus dianggap bocor ([praktik terbaik](https://docs.lovable.dev/tips-tricks/security-best-practices), diperiksa 2 November 2026).

- Quick security scan berjalan sendiri setiap kali publish.
- Deep security scan tidak: jalankan dari Security view proyek ([Security view](https://docs.lovable.dev/features/security-view)).
- Cari grup Leaked secrets & credentials.
- Kedua pemindaian gratis; hanya perbaikan massal yang memakai 10 perbaikan gratis lalu kredit ([pemindaian keamanan](https://docs.lovable.dev/features/security)).

Dengan tangan: di Chrome, buka developer tools aplikasi yang sudah publish, tekan Command+Option+F di Mac atau Control+Shift+F di Windows dan Linux, lalu cari beberapa karakter pertama kunci Anda di berkas yang dimuat. Kalau ada nilai `VITE_` yang berisi kunci privat, bertindaklah, karena nilai itu ikut dibangun untuk browser ([pencarian DevTools](https://developer.chrome.com/docs/devtools/search)). Pencarian bersih hanya mencakup berkas yang dimuat halaman itu, jadi jalankan juga pemindaiannya.

Menyembunyikan kunci tidak menghentikan orang lain memanggil fungsi Anda: siapa pun bisa memanggil fungsi tanpa pemeriksaan login, dan setiap panggilan memakai kunci Anda. Dokumentasi Lovable meminta login ditegakkan di server; daftar model kami dan `max_tokens: 800` membatasi tiap panggilan; dan dokumentasi OmniaKey menyarankan kunci terpisah per lingkungan dengan batas belanja ([dokumentasi API OmniaKey](https://docs.omniakey.com/en/api/authentication)).

## Yang harus dilakukan kalau kunci bocor

1. Cabut kunci di layanan yang menerbitkannya dan buat yang baru di sana; dokumentasi Lovable hanya mencantumkan aksi Rotate untuk kuncinya sendiri ([dokumentasi Secrets](https://docs.lovable.dev/features/secrets)).
2. Ganti nilainya di Secrets, formulir konektor, atau Supabase. Di Supabase, fungsi membaca secret baru seketika tanpa deploy ulang ([secret Supabase](https://supabase.com/docs/guides/functions/secrets)). Dokumentasi Lovable tidak menyebut apakah backend bawaan Cloud melakukan hal yang sama, jadi panggil fungsinya sekali untuk memastikan.
3. Keluarkan kunci dari kode frontend atau `.env`, lalu jalankan Deep security scan lagi.
4. Periksa halaman penggunaan penyedia untuk panggilan yang bukan dari Anda.

Kunci milik Lovable bekerja berbeda. `LOVABLE_API_KEY` punya aksi Rotate untuk editor ke atas, yang menerbitkan kunci baru dan memperbarui lingkungan Edge Function. Kunci workspace (`lov_…`) yang dilaporkan GitHub secret scanning dicabut otomatis; di tempat lain, cabut sendiri ([dokumentasi kunci API](https://docs.lovable.dev/features/api-keys)).

## Berapa biayanya

Tagihan Lovable dan tagihan penyedia Anda terpisah: dengan kunci sendiri, penyedia menagih pemakaian model, dan aplikasi Anda hanya memakai Cloud untuk menjalankan fungsi ([dokumentasi AI](https://docs.lovable.dev/features/ai), [Cloud](https://docs.lovable.dev/features/cloud), diperiksa 2 November 2026).

Konektor AI bawaan menagih kredit workspace: Free, Pro, dan Business mendapat kuota 4-credit per bulan untuk AI, kalau habis kembaliannya 402, dan kalau melewati rate limit kembaliannya 429. Paket Free juga memberi 5 build credits per hari, sampai 30 per bulan, plus 20 Cloud credits ([harga](https://lovable.dev/pricing)); tabel paket Lovable mencantumkan 100 credits seharga $25 per bulan di Pro ([paket langganan](https://docs.lovable.dev/introduction/subscription-plans), diperiksa 2 November 2026).

Untuk OmniaKey, lihat tarif terbaru di halaman [GPT-6.1 Terra](https://omniakey.com/id/gpt-6-1-terra), [Claude Sonnet 5.5](https://omniakey.com/id/claude-sonnet-5-5), dan [DeepSeek](https://omniakey.com/id/deepseek-flash).

## Pertanyaan umum

### Di mana saya menemukan Lovable API Key saya?

Tergantung kunci yang Anda maksud. `LOVABLE_API_KEY` dibuat per proyek dan ada di Secrets proyek itu, tempat Anda bisa memperbaruinya tapi tidak membacanya. Kunci workspace berasal dari Workspace settings → API keys & OAuth → Workspace access tokens dan hanya ditampilkan sekali.

### Apakah ada Lovable API Key gratis?

Yang paling dekat adalah `LOVABLE_API_KEY`: konektor AI bawaan membuatnya untuk setiap proyek, dan workspace Free, Pro, serta Business punya kuota 4-credit per bulan untuk memakainya. Kunci workspace butuh paket Business atau Enterprise.

### Bisakah saya memakai kunci OpenAI sendiri dengan Lovable AI?

Tidak dengan konektor AI bawaan, yang selalu berjalan lewat Lovable dan menagih kredit workspace. Untuk kunci sendiri, minta Lovable membuat fungsi backend yang memanggil penyedia langsung, dengan kunci di Secrets.

### Kunci API sebaiknya di Secrets atau di .env?

Di Secrets kalau kuncinya privat dan dibaca kode backend. `.env` untuk nilai `VITE_`, yang ikut dibangun ke aplikasi dan terlihat di browser.

### Kenapa Lovable tidak terhubung ke GPT, Claude, atau DeepSeek?

Baca dulu pesan dari fungsinya, di situ disebutkan masalahnya:

- 500 dengan `OMNIAKEY_API_KEY is not set`: secret tidak ada atau disimpan dengan nama lain.
- 401: kunci salah atau sudah dicabut.
- 400: ID model tidak ada di daftar Anda.
- 404: URL dasarnya salah; punya kami berakhir di `/v1/chat/completions`, dan sebagian besar kesalahan penyiapan berasal dari akhiran protokol yang keliru ([dokumentasi error OmniaKey](https://docs.omniakey.com/en/api/errors)).

Di browser Anda hanya melihat `Edge Function returned a non-2xx status code`, jadi catat `error.context` seperti di atas untuk tahu kasus mana yang terjadi.

## Sumber yang diperiksa

- [Dokumentasi Secrets Lovable](https://docs.lovable.dev/features/secrets), diperiksa 2 November 2026
- [Kunci API Lovable](https://docs.lovable.dev/features/api-keys), diperiksa 2 November 2026
- [Lovable API](https://docs.lovable.dev/integrations/lovable-api), diperiksa 2 November 2026
- [Server MCP Lovable](https://docs.lovable.dev/integrations/lovable-mcp-server), diperiksa 2 November 2026
- [Build with URL](https://docs.lovable.dev/integrations/build-with-url), diperiksa 2 November 2026
- [Fitur AI Lovable](https://docs.lovable.dev/features/ai), diperiksa 2 November 2026
- [Lovable AI chat](https://docs.lovable.dev/features/ai-chat), diperiksa 2 November 2026
- [Lovable Edge functions](https://docs.lovable.dev/features/edge-functions), diperiksa 2 November 2026
- [Lovable Cloud](https://docs.lovable.dev/features/cloud), diperiksa 2 November 2026
- [API khusus dan konektor](https://docs.lovable.dev/integrations/any-api), diperiksa 2 November 2026
- [Integrasi Stripe](https://docs.lovable.dev/integrations/stripe), diperiksa 2 November 2026
- [Integrasi Resend](https://docs.lovable.dev/integrations/resend), diperiksa 2 November 2026
- [Integrasi Google Maps](https://docs.lovable.dev/integrations/google-maps), diperiksa 2 November 2026
- [Keamanan integrasi](https://docs.lovable.dev/integrations/security), diperiksa 2 November 2026
- [Integrasi Supabase](https://docs.lovable.dev/integrations/supabase), diperiksa 2 November 2026
- [Keamanan Lovable](https://docs.lovable.dev/features/security), diperiksa 2 November 2026
- [Security view Lovable](https://docs.lovable.dev/features/security-view), diperiksa 2 November 2026
- [Praktik terbaik keamanan Lovable](https://docs.lovable.dev/tips-tricks/security-best-practices), diperiksa 2 November 2026
- [Paket langganan Lovable](https://docs.lovable.dev/introduction/subscription-plans), diperiksa 2 November 2026
- [Changelog Lovable](https://docs.lovable.dev/changelog), diperiksa 2 November 2026
- [Harga Lovable](https://lovable.dev/pricing), diperiksa 2 November 2026
- [Secret Edge Function Supabase](https://supabase.com/docs/guides/functions/secrets), diperiksa 2 November 2026
- [Supabase functions.invoke](https://supabase.com/docs/reference/javascript/functions-invoke), diperiksa 2 November 2026
- [Pencarian Chrome DevTools](https://developer.chrome.com/docs/devtools/search), diperiksa 2 November 2026

Dokumentasi OmniaKey sendiri, diperiksa 2 November 2026: [mulai cepat](https://docs.omniakey.com/en/quick-start), [API kompatibel OpenAI](https://docs.omniakey.com/en/api/openai-compatible), [autentikasi](https://docs.omniakey.com/en/api/authentication), dan [error](https://docs.omniakey.com/en/api/errors).
