API Key Itu Seperti Kartu Akses Kos: Apa Itu API, Cara Kerja API Key, dan Cara Menjaganya

Oleh , Tim Engineering APIPedia · Terbit · Diperbarui · 10 menit baca

API key itu seperti kartu akses kos: kode unik pengenal aplikasi di setiap request. Pahami cara kerja, error 401 dan 403, dan cara menyimpannya.

Sampul APIPedia: judul "API key itu seperti kartu akses kos" dengan kartu request GET /v1/tanggal/hari-ini berstatus 200 OK, header Authorization: Bearer apk, kotak 401 (kunci tidak dikenal) dan 403 (izin kurang), serta pengingat simpan di server, bukan di kode atau repo.

API key adalah kode unik yang dikirim aplikasi Anda di setiap request supaya server API tahu siapa yang memanggil, apa yang boleh dilakukannya, dan berapa pemakaiannya. Analogi paling gampang: API key itu seperti kartu akses kos. Anda cukup menempelkan kartu di pintu, pintu mengenali kartunya, mencatat siapa yang masuk, dan menolak kartu yang tidak terdaftar.

Bagi pemula, istilah API dan API key sering terasa abstrak, padahal Anda memakainya setiap kali aplikasi mengambil data dari layanan lain. Artikel ini membahas apa itu API, cara kerja API key langkah demi langkah, arti error 401 dan 403, hal yang sering disalahpahami, dan cara menyimpan kunci supaya tidak bocor.

Ringkasan cepat: istilah apa saja yang perlu Anda tahu?

Ada delapan istilah yang hampir selalu muncul saat membahas API key, dan semuanya bisa dijelaskan dengan kos-kosan.

IstilahArtinyaAnalogi kos-kosan
APIPintu resmi untuk meminta data atau layanan dari sistem lainPintu depan kos, satu-satunya jalan masuk yang sah
EndpointAlamat satu layanan di dalam API, misalnya /v1/tanggal/hari-iniSatu ruangan di dalam kos
API keyKode unik pengenal aplikasi pemanggilKartu akses penghuni
AutentikasiMemeriksa siapa yang memanggilPintu membaca kartu: terdaftar atau tidak
Otorisasi (scope)Memeriksa apa yang boleh dilakukan pemanggilKartu ini boleh membuka lantai mana saja
401 UnauthorizedKunci tidak ada, salah, atau sudah tidak berlakuKartu tidak dikenal
403 ForbiddenKunci dikenali, tetapi tidak punya izinKartu sah, tetapi bukan untuk lantai itu
RotasiMengganti kunci lama dengan kunci baruKartu lama dimatikan, kartu baru dicetak

Apa itu API?

API (Application Programming Interface) adalah pintu resmi yang disediakan sebuah sistem supaya aplikasi lain bisa meminta data atau layanan tanpa perlu tahu isi dapurnya. Aplikasi Anda mengirim permintaan (request) ke sebuah alamat, lalu server mengirim jawaban (response), biasanya dalam format JSON.

Contoh sehari-hari: aplikasi toko online menampilkan ongkos kirim. Toko itu tidak menghitung tarif sendiri. Ia bertanya ke API ongkir, menerima angkanya, lalu menampilkannya ke pembeli. Hal yang sama terjadi saat aplikasi menampilkan jadwal sholat, kurs rupiah, atau jawaban dari model AI.

Berikut jawaban nyata dari API Tanggal APIPedia saat kami memanggil GET /v1/tanggal/hari-ini pada 12 November 2026:

{
  "is_success": true,
  "message": "Tanggal hari ini berhasil diambil",
  "data": {
    "masehi": "2026-11-12",
    "hari": "Kamis",
    "pasaran": "Pon",
    "hijriah": "1 Jumadilakhir 1448 H",
    "is_libur": false,
    "keterangan_libur": null
  }
}

Jawaban itu hanya keluar kalau request membawa API key yang sah. Di sinilah kartu akses berperan.

Apa itu API key dan apa fungsinya?

API key adalah deretan karakter acak yang diterbitkan penyedia API untuk satu akun atau satu aplikasi, dan berfungsi sebagai tanda pengenal di setiap request. Di APIPedia, kunci berawalan apk_ dan dibuat di menu Token API pada konsol.

Kunci ini punya empat fungsi sekaligus:

  • Mengenali pemanggil. Server tahu request ini datang dari akun dan aplikasi yang mana.
  • Membatasi izin. Satu kunci bisa dibatasi hanya untuk endpoint tertentu lewat scope.
  • Menghitung pemakaian. Rate limit, kuota harian, dan tagihan dihitung atas nama kunci atau akun pemiliknya.
  • Bisa dicabut satu per satu. Kalau satu kunci bocor, cukup kunci itu yang dimatikan. Aplikasi lain dengan kunci berbeda tetap berjalan.

Fungsi terakhir inilah alasan kartu akses kos lebih praktis daripada satu kunci gembok bersama. Kalau satu penghuni kehilangan kartu, pengelola cukup mematikan kartu itu, tanpa mengganti kunci semua kamar.

Bagaimana cara kerja API key di setiap request?

API key bekerja dengan ikut dikirim di setiap request, lalu diperiksa oleh gerbang API sebelum permintaan diteruskan ke layanan tujuan. Server tidak "mengingat" Anda dari request sebelumnya, jadi kartu harus ditempel setiap kali lewat.

Diagram alur cara kerja API key dalam empat tahap. Tahap 1 pemanggil: aplikasi Anda berupa backend, skrip, atau agen AI. Tahap 2 request membawa kunci lewat HTTPS di header Authorization: Bearer apk. Tahap 3 gerbang API memeriksa tiga hal: kunci dikenal dan aktif, bila tidak dijawab 401; punya izin atau scope ke endpoint ini, bila tidak dijawab 403; rate limit dan kuota masih ada, bila tidak dijawab 429. Tahap 4 layanan menjawab dengan respons JSON 200 OK dan pemakaian dicatat atas nama kunci itu. Baris analogi kos-kosan: tempel kartu, kartu terdaftar, boleh ke lantai ini, masuk dan tercatat.

  1. Aplikasi menyusun request. Isinya alamat endpoint dan data yang diminta.
  2. Kunci ditaruh di header. Bentuk yang paling umum adalah Authorization: Bearer apk_xxx, dikirim lewat HTTPS.
  3. Gerbang API memeriksa. Apakah kunci dikenal dan aktif, apakah izinnya cukup, dan apakah rate limit serta kuotanya masih ada.
  4. Layanan menjawab. Respons dikirim balik dan pemakaian dicatat atas nama kunci itu.

Dengan curl, satu request lengkap terlihat seperti ini:

curl -s https://api.apipedia.id/v1/tanggal/hari-ini \
  -H "Authorization: Bearer apk_xxx"

Kenapa namanya "Bearer"?

Kata bearer berarti "pembawa". Standar RFC 6750 mendefinisikan bearer token sebagai token yang bisa dipakai oleh pihak mana pun yang memegangnya. Artinya, server tidak memeriksa siapa orangnya, hanya memeriksa kartunya. Siapa pun yang memungut kartu Anda bisa masuk. Karena itu standar yang sama mewajibkan pengiriman lewat koneksi terenkripsi (HTTPS), dan tidak menganjurkan menaruh token di URL karena URL mudah tercatat di riwayat browser dan log server.

Apa arti error 401 dan 403 saat memanggil API?

Error 401 berarti server tidak mengenali kunci Anda, sedangkan 403 berarti kunci dikenali tetapi tidak punya izin untuk permintaan itu. Keduanya sering tertukar, padahal cara memperbaikinya berbeda.

Empat tile kode status HTTP beserta arti, analogi kos-kosan, dan tindakan. 200 OK: kunci dikenal, izin cukup, jatah masih ada; pintu terbuka dan kunjungan tercatat; baca isi respons. 401 Unauthorized: kunci tidak dikirim, salah ketik, sudah dicabut, atau kedaluwarsa; kartu tidak ditempel atau tidak terdaftar; periksa header Authorization dan isi kuncinya. 403 Forbidden: kunci dikenali tetapi tidak punya izin untuk permintaan itu; kartu sah tetapi bukan untuk lantai itu; tambah izin atau scope kunci, mengulang request tidak membantu. 429 Too Many Requests: kunci dan izin benar tetapi request terlalu cepat atau jatah habis; pintu menahan sebentar; tunggu sesuai Retry-After lalu coba lagi. Catatan uji ke GET /v1/tanggal/hari-ini: tanpa header dijawab 401 dengan pesan missing bearer token, kunci karangan dijawab 401 dengan pesan invalid or expired token.

StatusArtinyaPenyebab umumTindakan
401 UnauthorizedKunci tidak dikenaliHeader lupa dikirim, salah ketik, kunci dicabut atau kedaluwarsaPeriksa header dan isi kunci
403 ForbiddenKunci dikenali, izin kurangScope kunci tidak mencakup endpoint ituUbah scope atau pakai kunci lain
429 Too Many RequestsTerlalu cepat atau jatah habisRequest beruntun, kuota harian habisTunggu lalu coba lagi

Kami menguji tiga request ke GET /v1/tanggal/hari-ini pada 12 November 2026. Tanpa header, jawabannya:

{ "is_success": false, "message": "Unauthorized: missing bearer token", "data": null }

Dengan kunci karangan, statusnya tetap 401, tetapi pesannya berbeda:

{ "is_success": false, "message": "Unauthorized: invalid or expired token", "data": null }

Request ketiga mengirim kunci tanpa kata Bearer di depannya. Hasilnya kembali missing bearer token. Jadi kalau Anda yakin kuncinya benar tetapi masih 401, periksa dulu format headernya.

Menurut dokumentasi MDN, pada 403 autentikasi ulang tidak mengubah apa pun, dan mengulang request yang sama akan gagal dengan error yang sama. Yang perlu diubah adalah izinnya. Untuk 429, penjelasan lengkapnya ada di artikel rate limit itu seperti gerbang tol.

Apa yang sering disalahpahami tentang API key?

Ada enam anggapan keliru yang paling sering muncul, dan hampir semuanya berujung pada kunci yang bocor.

  • "API key sama dengan password." Mirip, tetapi tidak sama. Password mengenali orang dan biasanya hanya satu per akun. API key mengenali aplikasi, bisa dibuat banyak, dan bisa dicabut satu per satu tanpa mengganggu yang lain.
  • "API key mengenkripsi data saya." Tidak. Kunci hanya tanda pengenal. Yang mengenkripsi lalu lintas data adalah HTTPS.
  • "Aman ditaruh di JavaScript halaman web atau di aplikasi mobile." Tidak. Kode yang dikirim ke perangkat pengguna bisa dibuka siapa pun. Panggil API dari backend Anda, lalu frontend cukup berbicara dengan backend itu.
  • "Kalau sudah ter-commit, hapus saja barisnya." Tidak cukup. Riwayat Git tetap menyimpan versi lama. Kunci yang sudah terlanjur terpapar harus dicabut dan diganti.
  • "Kunci yang panjang pasti aman." Panjang hanya melindungi dari tebakan. Kunci 256-bit yang tertempel di repositori publik tetap bisa dipakai siapa pun yang menemukannya.
  • "API key sama dengan login OAuth." Berbeda. API key mewakili aplikasi Anda sendiri. OAuth dipakai saat aplikasi butuh izin atas akun milik pengguna lain, misalnya mengirim email dari akun Gmail yang mereka hubungkan.

Seberapa sulit API key ditebak?

Sangat sulit, selama kuncinya dibuat dari sumber acak yang aman. Skrip berikut membuat kunci contoh dengan pustaka bawaan Python lalu menghitung jumlah kemungkinannya. Ini ilustrasi konsep, bukan cara layanan tertentu membuat kuncinya.

import math, secrets

kunci = "apk_" + secrets.token_urlsafe(32)     # 32 byte acak dari sumber aman
print(kunci[:10] + "...", "| panjang:", len(kunci), "karakter")
print("kemungkinan:", f"2^{32 * 8}", "~", f"10^{int(32 * 8 * math.log10(2))}")

Hasil saat kami jalankan:

apk_E2tjiA... | panjang: 47 karakter
kemungkinan: 2^256 ~ 10^77

Dengan 10 pangkat 77 kemungkinan, menebak bukan cara yang realistis. Kunci hampir selalu jatuh ke tangan orang lain karena bocor, bukan karena ditebak. Itu sebabnya tempat menyimpan lebih penting daripada panjangnya.

Di mana API key sebaiknya disimpan?

API key sebaiknya disimpan di environment variable atau secrets manager di sisi server, bukan di dalam kode, repositori, atau URL. Kode Anda cukup membaca nama variabelnya, sehingga kunci tidak ikut tersalin saat kode dibagikan.

Perbandingan dua kolom tempat menyimpan API key. Kolom jangan di sini, mudah bocor: kode frontend atau aplikasi mobile karena siapa pun bisa membukanya; repositori Git termasuk riwayat commit; URL atau query string yang tersimpan di riwayat browser dan log server; chat, tiket, dan tangkapan layar; satu kunci untuk semua aplikasi. Kolom simpan di sini, lebih aman: environment variable di server; secrets manager; satu kunci per aplikasi dan lingkungan; izin atau scope sesempit kebutuhan; rotasi berkala. Baris bawah langkah kalau terlanjur bocor: 1 cabut kuncinya, 2 buat kunci baru, 3 periksa log, 4 bersihkan jejak dari kode dan riwayat.

Contoh Python berikut membaca kunci dari environment, hanya menampilkan potongannya, dan membedakan 401 dari 403. Kami mengujinya terhadap server tiruan lokal yang meniru ketiga jawaban tersebut.

import json, os, sys, urllib.request, urllib.error

BASE = os.environ.get("API_BASE", "https://api.apipedia.id/v1")
KUNCI = os.environ.get("APIPEDIA_KEY")          # dibaca dari environment, bukan ditulis di kode

if not KUNCI:
    sys.exit("APIPEDIA_KEY belum diisi. Jalankan: export APIPEDIA_KEY=apk_xxx")

def panggil(path: str) -> dict:
    req = urllib.request.Request(f"{BASE}{path}", headers={"Authorization": f"Bearer {KUNCI}"})
    try:
        with urllib.request.urlopen(req, timeout=10) as r:
            return json.load(r)
    except urllib.error.HTTPError as e:
        pesan = json.load(e).get("message", "")
        if e.code == 401:
            sys.exit(f"401: kunci tidak ada, salah, atau kedaluwarsa ({pesan})")
        if e.code == 403:
            sys.exit(f"403: kunci dikenali, tetapi tidak punya izin ({pesan})")
        raise

print("kunci:", KUNCI[:4] + "..." + KUNCI[-4:])   # tampilkan potongan saja, jangan kunci utuh
print(panggil(sys.argv[1] if len(sys.argv) > 1 else "/tanggal/hari-ini"))

Hasil ujinya dengan kunci yang salah ketik, lalu dengan kunci yang izinnya tidak mencakup endpoint tujuan:

kunci: apk_...etik
401: kunci tidak ada, salah, atau kedaluwarsa (Unauthorized: invalid or expired token)

kunci: apk_...saja
403: kunci dikenali, tetapi tidak punya izin (Forbidden: scope tidak mencukupi)

Pesan 403 di atas berasal dari server tiruan kami. Kalimat pesan di layanan sungguhan bisa berbeda, tetapi kode statusnya sama.

Tips praktis menjaga API key

Tujuh kebiasaan berikut menutup sebagian besar jalur bocornya kunci, dan sejalan dengan panduan pengelolaan secret dari OWASP.

  1. Simpan di server. Pakai environment variable atau secrets manager. Masukkan berkas .env ke .gitignore sejak commit pertama.
  2. Satu kunci untuk satu aplikasi dan satu lingkungan. Pisahkan kunci dev, staging, dan produksi supaya sumber masalah mudah dilacak.
  3. Beri izin sesempit mungkin. Kunci untuk membaca data tidak perlu izin mengirim email. Ini prinsip least privilege.
  4. Rotasi secara berkala. OWASP menyarankan rotasi rutin supaya kunci curian hanya berguna sebentar.
  5. Jangan tulis kunci utuh di log. Tampilkan beberapa karakter saja, seperti contoh kode di atas.
  6. Pantau pemakaian. Lonjakan request di jam yang tidak biasa adalah tanda awal kunci dipakai pihak lain.
  7. Aktifkan pemindai secret di repositori. Pemindai seperti ini mencari kunci yang ter-commit di seluruh riwayat Git, dan sebagian bisa menolak push yang berisi kunci.

Apa yang harus dilakukan kalau API key terlanjur bocor?

Cabut kuncinya lebih dulu, baru kerjakan yang lain. Urutannya:

  1. Cabut kunci yang bocor di halaman pengelolaan kunci penyedia API.
  2. Buat kunci baru dan pasang di server.
  3. Periksa log pemakaian untuk mencari request yang bukan dari Anda.
  4. Bersihkan jejaknya dari kode, log, dan riwayat repositori.

Mengganti password akun tidak mematikan kunci yang sudah beredar. Kunci tetap berlaku sampai dicabut.

Pertanyaan yang sering diajukan

Lima pertanyaan berikut paling sering muncul dari developer yang baru pertama kali memegang API key.

Apakah API key sama dengan token?

Dalam percakapan sehari-hari keduanya sering dipakai bergantian. Secara umum, API key berumur panjang dan mewakili aplikasi, sedangkan token akses seperti pada OAuth biasanya berumur pendek dan mewakili izin dari seorang pengguna.

Bolehkah satu API key dipakai banyak aplikasi?

Bisa, tetapi tidak disarankan. Semua aplikasi itu akan berbagi rate limit dan kuota yang sama, dan saat kunci bocor Anda harus mengganti kunci di semua aplikasi sekaligus.

Apakah API key gratis?

Membuat kunci umumnya gratis. Yang dihitung adalah pemakaiannya. Di APIPedia, paket Free memberi 500 request per hari dengan batas 10 request per detik, menurut daftar paket per 12 November 2026.

Kenapa saya kena 401 padahal kuncinya benar?

Penyebab paling sering adalah format header. Pastikan bentuknya Authorization: Bearer diikuti spasi lalu kunci, tanpa tanda kutip atau spasi tambahan. Pada uji kami, kunci tanpa kata Bearer dijawab missing bearer token.

Apakah agen AI juga butuh API key?

Ya. Saat asisten AI memanggil tool lewat server MCP, server tetap perlu tahu akun mana yang memanggil. Server MCP APIPedia memakai kunci apk_ yang sama dengan panggilan REST biasa, dan setiap panggilan tool dihitung ke kuota akun.

Untuk melihat akibat nyata dari kunci yang bocor, baca LLMjacking: API key AI dicuri dan korban yang menanggung tagihannya. Kalau Anda ingin memakai kunci yang sama dari asisten AI, ikuti panduan menghubungkan APIPedia ke Claude lewat MCP. Konsep lain di seri ini: webhook itu seperti kurir yang mengetuk pintu dan token AI itu seperti pulsa. Kunci pertama Anda bisa dibuat di console.apipedia.id.

Sumber

Topik:

Tentang penulis

Tim APIPedia — Tim Engineering APIPedia

Tim engineering di balik APIPedia yang membangun dan memelihara API data Indonesia - ongkir, OCR KTP, data wilayah, BMKG, hingga server MCP - dan menulis panduan integrasinya dari pengalaman langsung.