API key dan autentikasi.
Key Anoman adalah bearer token yang dikirim di header Authorization. Key di-scope per pelanggan, terikat ke sebuah tier, dan dapat dirotasi dari dashboard.
Format key
API key Anoman
Setiap key dimulai dengan prefix anm-sk- diikuti 40+ karakter random byte yang di-encode base64.
Contoh key
anm-sk-Mh4uZf2W8Rk1JtX9...- Raw key ditampilkan tepat satu kali saat pembuatan — segera salin.
- Kami hanya menyimpan hash bcrypt. Key yang hilang tidak dapat dipulihkan — buat yang baru.
- Key di-scope per baris API key, bukan per pelanggan. Satu pelanggan bisa memiliki banyak key dengan tier, budget, dan policy yang berbeda.
- Key berada di app.anoman.io/dashboard/keys.
Format header
Authorization: Bearer
Kirim key di bearer header OAuth 2.0 standar. SDK OpenAI dan Anthropic melakukan ini secara otomatis saat Anda menyetel parameter api_key mereka.
curl https://api.anoman.io/v1/chat/completions \
-H "Authorization: Bearer anm-sk-..." \
-H "Content-Type: application/json" \
-d '{"model": "gpt-4o-mini", "messages": [{"role": "user", "content": "Hi"}]}'x-api-key (untuk kompatibilitas Anthropic SDK pada endpoint /anthropic/). Bearer lebih disukai di tempat lain.Error autentikasi
Ketika autentikasi gagal
Semua kegagalan autentikasi mengembalikan HTTP 401 atau 403 dengan body JSON yang sesuai bentuk di bawah. Field code membedakan tipe kegagalan sehingga Anda dapat mencabangkan penanganan di sisi client.
{
"error": {
"type": "invalid_request_error",
"code": "auth_invalid",
"message": "Invalid API key. Get one at https://app.anoman.io/dashboard/keys"
}
}| HTTP | Kode | Penyebab |
|---|---|---|
| 401 | auth_missing | Tidak ada header Authorization yang dikirim |
| 401 | auth_invalid | Key rusak atau tidak dikenal |
| 403 | auth_revoked | Key dicabut dari dashboard |
| 402 | budget_exceeded | Budget bulanan tercapai. Top up atau tunggu reset siklus. |
Lihat referensi kode error lengkap untuk mode kegagalan non-autentikasi.
Praktik terbaik
Menyimpan dan merotasi key
Perlakukan key Anoman Anda seperti bearer OAuth — siapa pun yang memegang key bisa menghabiskan budget Anda. Muat dari secret manager atau environment variable; jangan pernah commit ke source control.
import os
from openai import OpenAI
# Read from env at startup. Fail fast if absent.
api_key = os.environ.get("ANOMAN_API_KEY")
if not api_key:
raise RuntimeError("ANOMAN_API_KEY must be set")
client = OpenAI(base_url="https://api.anoman.io/v1", api_key=api_key)Pola scoping yang direkomendasikan
- Satu key per environment — pisahkan key
development,staging,productionagar Anda bisa mencabut key dev yang bocor tanpa berdampak ke prod. - Satu key per service jika stack Anda memiliki banyak call site (web backend, batch worker, dll.). Memungkinkan Anda mengatribusikan penggunaan di traces dan mencabut secara presisi.
- Budget per key — setel cap USD bulanan pada setiap key di dashboard. Script yang liar kemudian mengenai 402 alih-alih menguras akun Anda.
Rotasi
- Buat key baru di dashboard (key yang ada tetap aktif).
- Deploy key baru ke env var service Anda.
- Cabut key lama setelah Anda memastikan tidak ada trafik padanya (terlihat di
last_used_at).
Respons kebocoran
Jika sebuah key terekspos (ter-commit ke GitHub, terunggah di screenshot, dll.):
- Cabut segera melalui dashboard — berlaku dalam 60 detik.
- Terbitkan key pengganti.
- Audit log trace untuk penggunaan tak terduga pada jendela antara kebocoran dan pencabutan.
- Hubungi kami di [email protected] jika Anda mencurigai penyalahgunaan — kami dapat mengorelasikan dengan log internal kami.