API Key Itu Seperti Kartu Akses Kos: Apa Itu API, Cara Kerja API Key, dan Cara Menjaganya
Oleh Tim APIPedia, 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.

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.
| Istilah | Artinya | Analogi kos-kosan |
|---|---|---|
| API | Pintu resmi untuk meminta data atau layanan dari sistem lain | Pintu depan kos, satu-satunya jalan masuk yang sah |
| Endpoint | Alamat satu layanan di dalam API, misalnya /v1/tanggal/hari-ini | Satu ruangan di dalam kos |
| API key | Kode unik pengenal aplikasi pemanggil | Kartu akses penghuni |
| Autentikasi | Memeriksa siapa yang memanggil | Pintu membaca kartu: terdaftar atau tidak |
| Otorisasi (scope) | Memeriksa apa yang boleh dilakukan pemanggil | Kartu ini boleh membuka lantai mana saja |
| 401 Unauthorized | Kunci tidak ada, salah, atau sudah tidak berlaku | Kartu tidak dikenal |
| 403 Forbidden | Kunci dikenali, tetapi tidak punya izin | Kartu sah, tetapi bukan untuk lantai itu |
| Rotasi | Mengganti kunci lama dengan kunci baru | Kartu 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.

- Aplikasi menyusun request. Isinya alamat endpoint dan data yang diminta.
- Kunci ditaruh di header. Bentuk yang paling umum adalah
Authorization: Bearer apk_xxx, dikirim lewat HTTPS. - Gerbang API memeriksa. Apakah kunci dikenal dan aktif, apakah izinnya cukup, dan apakah rate limit serta kuotanya masih ada.
- 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.

| Status | Artinya | Penyebab umum | Tindakan |
|---|---|---|---|
| 401 Unauthorized | Kunci tidak dikenali | Header lupa dikirim, salah ketik, kunci dicabut atau kedaluwarsa | Periksa header dan isi kunci |
| 403 Forbidden | Kunci dikenali, izin kurang | Scope kunci tidak mencakup endpoint itu | Ubah scope atau pakai kunci lain |
| 429 Too Many Requests | Terlalu cepat atau jatah habis | Request beruntun, kuota harian habis | Tunggu 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.

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.
- Simpan di server. Pakai environment variable atau secrets manager. Masukkan berkas
.envke.gitignoresejak commit pertama. - Satu kunci untuk satu aplikasi dan satu lingkungan. Pisahkan kunci dev, staging, dan produksi supaya sumber masalah mudah dilacak.
- Beri izin sesempit mungkin. Kunci untuk membaca data tidak perlu izin mengirim email. Ini prinsip least privilege.
- Rotasi secara berkala. OWASP menyarankan rotasi rutin supaya kunci curian hanya berguna sebentar.
- Jangan tulis kunci utuh di log. Tampilkan beberapa karakter saja, seperti contoh kode di atas.
- Pantau pemakaian. Lonjakan request di jam yang tidak biasa adalah tanda awal kunci dipakai pihak lain.
- 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:
- Cabut kunci yang bocor di halaman pengelolaan kunci penyedia API.
- Buat kunci baru dan pasang di server.
- Periksa log pemakaian untuk mencari request yang bukan dari Anda.
- 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: #api key #api #explainer #keamanan api #error 401 #autentikasi
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.