Panduan
Dokumentasi API
AI Governance Gateway untuk akses LLM enterprise. Drop-in, kompatibel OpenAI, dengan proteksi PII, enforcement yang dapat dikonfigurasi, visibilitas biaya, dan jejak audit bertanda tangan di setiap permintaan.
Monago Atrium — Dokumentasi API
AI Governance Gateway untuk akses LLM enterprise. Drop-in, kompatibel OpenAI, dengan proteksi PII, enforcement yang dapat dikonfigurasi, visibilitas biaya, dan jejak audit bertanda tangan di setiap permintaan.
Ringkasan
Monago Atrium berada di antara aplikasi Anda dan penyedia large language model (LLM) — OpenAI, Anthropic, dan lainnya — sebagai Policy Enforcement Point. Setiap permintaan melewati gateway sebelum mencapai penyedia, dan setiap respons kembali melaluinya. Pada titik pemeriksaan ini, Atrium menerapkan governance: mendeteksi dan meredaksi data pribadi (PII), menegakkan kebijakan per-tenant, memindai prompt injection, menghitung biaya, dan menulis catatan audit yang anti-manipulasi.
Atrium dirancang mengikuti prinsip Zero Trust (selaras dengan NIST SP 800-207) pada lapisan data-governance: tidak ada permintaan yang dipercaya secara implisit, setiap permintaan dievaluasi terhadap kebijakan, dan enforcement keamanan bersifat top-down — baseline keamanan yang ditetapkan di tingkat tenant tidak dapat dilemahkan oleh workspace atau pengguna di bawahnya.
Yang Atrium berikan
- Deteksi PII berlapis — identifier terstruktur (NIK, NPWP, telepon, rekening bank, email) ditambah named-entity recognition untuk PII tidak terstruktur seperti nama orang, organisasi, dan lokasi.
- Enforcement yang dapat dikonfigurasi — tentukan bagaimana PII yang terdeteksi ditangani per kebijakan: allow, warn, partial mask, full redaction, atau block.
- Kebijakan top-down — baseline keamanan tenant adalah floor (batas minimum); tim dapat memperketat tetapi tidak pernah melonggarkannya.
- Visibilitas biaya — estimasi biaya per-permintaan dikembalikan di setiap panggilan dan diagregasi untuk pelaporan.
- Jejak audit — setiap permintaan menghasilkan catatan audit bertanda tangan, diakses melalui audit ID tingkat-permintaan.
- Kompatibilitas drop-in — endpoint chat mencerminkan OpenAI Chat Completions API, sehingga klien dan SDK yang sudah ada bekerja dengan perubahan minimal.
Penyedia yang didukung
Satu API Atrium bekerja lintas penyedia — lapisan governance bersifat provider-agnostic, dan routing diturunkan dari identifier model.
| Penyedia | Status |
|---|---|
| OpenAI | Tersedia |
| Anthropic | Tersedia |
| AWS Bedrock | Dalam roadmap |
| Google Vertex AI | Dalam roadmap |
| Alibaba Cloud Model Studio (Qwen) | Dalam roadmap |
Kode Anda tidak berubah per penyedia: gunakan bentuk request yang sama (kompatibel OpenAI) dan ganti field model. Penyedia dan model mana yang diizinkan diatur oleh allowlist model pada kebijakan Anda.
Ditujukan untuk siapa
- Evaluator / reviewer keamanan & compliance — mulai dari Ringkasan, Header Governance, Mode Enforcement PII, dan Compliance.
- Developer — mulai dari Autentikasi dan Referensi API.
Memulai
Base URL
https://api.monago.ioAutentikasi
Semua permintaan diautentikasi dengan API key workspace yang dikirim sebagai Bearer token.
Authorization: Bearer sk-mng-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxAPI key diterbitkan dan dikelola di konsol Monago. Sebuah key dilingkupi (scoped) ke sebuah tenant (dan opsional sebuah workspace); kebijakan governance yang berlaku untuk sebuah permintaan diturunkan dari scope tersebut. Jaga kerahasiaan key dan rotasi jika bocor.
Quickstart (cURL)
curl -X POST https://api.monago.io/v1/chat/completions \
-H "Authorization: Bearer sk-mng-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-mini",
"messages": [
{ "role": "user", "content": "Ringkas kebijakan onboarding." }
]
}'Quickstart (Python SDK)
pip install monago-atriumfrom monago_atrium import Monago
client = Monago(api_key="sk-mng-YOUR_KEY")
result = client.chat(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "Ringkas kebijakan onboarding."}],
)
print(result.content)
print(result.audit_id) # referensi audit bertanda tangan
print(result.pii_redacted) # tipe PII yang diredaksi sebelum dilihat penyedia
print(result.cost_idr) # estimasi biaya untuk permintaan iniReferensi API
Membuat chat completion
POST /v1/chat/completionsChat completion kompatibel OpenAI, diatur oleh kebijakan Anda. Mendukung respons standar maupun streaming.
Coba langsung di bawah — tempel key sk-mng- Anda, ubah request, dan contoh kode (cURL / Python / TypeScript) ikut berubah saat Anda mengetik. Panel respons menampilkan header governance X-Monago-*.
/v1/chat/completionsCoba
Key Anda dikirim sekali lewat proxy same-origin dan tidak disimpan.
Ketik model apapun yang diizinkan policy Anda. Masukkan key untuk memuat saran.
Kode
curl -X POST https://api.monago.io/v1/chat/completions \
-H "Authorization: Bearer sk-mng-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "your-model",
"messages": [
{
"role": "user",
"content": "Summarize the onboarding policy."
}
]
}'Respons
Kirim permintaan untuk melihat respons dan header governance.
Request body
| Field | Tipe | Wajib | Deskripsi |
|---|---|---|---|
model | string | ya | Identifier model (mis. gpt-4o-mini). Harus diizinkan oleh allowlist model pada kebijakan Anda. |
messages | array | ya | Pesan percakapan. Setiap item memiliki role (system / user / assistant) dan content (string). 1–200 pesan. |
stream | boolean | tidak | Jika true, mengembalikan stream Server-Sent Events. Default false. |
max_tokens | integer | tidak | Token maksimum yang dihasilkan (1–200000). |
temperature | number | tidak | Sampling temperature (0.0–2.0). |
{
"model": "gpt-4o-mini",
"messages": [
{ "role": "system", "content": "You are a helpful assistant." },
{ "role": "user", "content": "Draft a one-line welcome message." }
],
"max_tokens": 256,
"temperature": 0.7,
"stream": false
}Response body
Bentuk respons mencerminkan format OpenAI Chat Completions.
| Field | Tipe | Deskripsi |
|---|---|---|
id | string | Identifier completion. |
object | string | Selalu chat.completion. |
created | integer | Timestamp Unix. |
model | string | Model penyedia yang di-resolve. |
choices | array | Choice yang dihasilkan, masing-masing dengan index, message (role, content), dan finish_reason. |
usage | object | prompt_tokens, completion_tokens, total_tokens. |
{
"id": "chatcmpl-...",
"object": "chat.completion",
"created": 1779896327,
"model": "gpt-4o-mini-2024-07-18",
"choices": [
{
"index": 0,
"message": { "role": "assistant", "content": "Welcome aboard — glad to have you!" },
"finish_reason": "stop"
}
],
"usage": { "prompt_tokens": 23, "completion_tokens": 11, "total_tokens": 34 }
}Hasil governance (deteksi PII, keputusan kebijakan, biaya, referensi audit) dikembalikan sebagai response header — lihat di bawah.
Header Governance
Setiap respons membawa metadata governance dalam header X-Monago-*. Header ini memungkinkan aplikasi Anda mengamati apa yang dilakukan gateway tanpa mem-parsing body.
| Header | Selalu ada | Deskripsi |
|---|---|---|
X-Monago-Audit-Id | ya | Referensi audit bertanda tangan untuk permintaan ini. Gunakan untuk mencari catatan audit lengkap. |
X-Monago-Provider | ya | Penyedia upstream yang melayani permintaan. |
X-Monago-Latency-Ms | ya | Latensi yang diukur gateway dalam milidetik. |
X-Monago-Pii-Detected | ya | true / false — apakah ada PII yang terdeteksi. |
X-Monago-Pii-Redacted | saat PII ditemukan | Daftar tipe PII (dipisah koma) yang diredaksi sebelum permintaan mencapai penyedia (mis. nik,phone_id,PERSON). |
X-Monago-Policy-Decision | ya | Hasil kebijakan, mis. allowed. |
X-Monago-Decision-Source | ya | Sumber keputusan (identifier policy engine). |
X-Monago-Cost-Idr | saat terhitung | Estimasi biaya permintaan dalam IDR. |
X-Monago-Block-Reason | saat diblok | Ada ketika sebuah permintaan diblokir oleh kebijakan. |
Redaksi PII terjadi sebelum penyedia melihat permintaan. Ketika
X-Monago-Pii-Redactedmencantumkan sebuah tipe, data tersebut telah diganti dengan placeholder pada teks yang dikirim ke upstream — penyedia tidak pernah menerima nilai aslinya.
Mode Enforcement PII
Cara PII yang terdeteksi ditangani dikendalikan oleh aksi PII pada kebijakan Anda. Setiap mode adalah satu titik pada tangga tingkat ketat (strictness ladder); mode yang lebih ketat yang ditetapkan di tingkat tenant tidak dapat ditimpa menjadi mode yang lebih longgar oleh workspace.
| Mode | Perilaku | Dikirim ke penyedia? |
|---|---|---|
allow | Teruskan permintaan tanpa perubahan. | Asli |
warn | Teruskan, tetapi catat deteksi di audit log. | Asli |
partial_mask | Redaksi PII dengan menyisakan ekor pendek (gaya "nomor kartu" industri, mis. ****-****-****-0123) agar pengguna dapat mengenali datanya sendiri. | Termasking (ekor disisakan) |
full_mask | Redaksi PII sepenuhnya tanpa sisa (mis. [REDACTED_NIK]). | Termasking (tanpa ekor) |
block | Tolak permintaan. Tidak diteruskan ke penyedia. | Tidak |
Urutan ketat: allow < warn < partial_mask < full_mask < block.
Ketika sebuah permintaan diblokir, API mengembalikan 403 dengan kode error PII_BLOCKED (lihat Error).
Streaming
Setel "stream": true untuk menerima stream Server-Sent Events (SSE). Stream menyelang-nyeling event governance dengan event content, sehingga Anda dapat mengamati tahap policy, PII, routing, dan provider secara real time, diikuti output model.
curl -N -X POST https://api.monago.io/v1/chat/completions \
-H "Authorization: Bearer sk-mng-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{ "model": "gpt-4o-mini", "stream": true,
"messages": [{ "role": "user", "content": "Hello" }] }'Tipe event:
| Event | Payload |
|---|---|
governance | Pembaruan tahap pipeline: policy, pii, routing, provider, audit. Mencakup status dan ringkasan metadata singkat. |
content | Potongan (chunk) chat completion gaya OpenAI dengan sebuah delta. |
done | Event final dengan usage, audit_id, dan session_id. |
Contoh event governance:
event: governance
data: {"step": "pii", "status": "flagged", "meta": "3 types · PERSON, nik, phone_id",
"detail": {"types": ["PERSON", "nik", "phone_id"]}}Pada respons streaming, referensi audit selalu tersedia (di event governance
auditdan eventdonefinal). Sebagian header non-streaming sengaja tidak diulang pada kanal SSE.
Error
Error dikembalikan dengan status HTTP yang sesuai dan code machine-readable yang stabil.
| Code | HTTP | Arti |
|---|---|---|
PII_BLOCKED | 403 | Permintaan diblokir karena PII terdeteksi dan kebijakan disetel ke block. |
MODEL_NOT_ALLOWED | 403 | Model yang diminta tidak ada dalam allowlist kebijakan Anda. |
OUTSIDE_ALLOWED_HOURS | 403 | Permintaan dilakukan di luar jam yang diizinkan kebijakan. |
MAX_TOKENS_EXCEEDED | 403 | max_tokens yang diminta melebihi batas kebijakan. |
TRIAL_EXPIRED | 403 | Masa trial tenant telah berakhir. |
UNKNOWN_MODEL | 400 | Identifier model tidak dikenali. |
NO_ACTIVE_CREDENTIAL | 400 | Tidak ada kredensial penyedia upstream aktif yang dikonfigurasi untuk scope ini. |
PROVIDER_NOT_CONFIGURED | 503 | Penyedia target tidak dikonfigurasi. |
PROVIDER_RATE_LIMITED | 429 | Penyedia upstream membatasi laju (rate-limit) permintaan. |
PROVIDER_TIMEOUT | 504 | Penyedia upstream timeout. |
PROVIDER_UPSTREAM_ERROR | 502 | Penyedia upstream mengembalikan error. |
Semua respons error menyertakan header audit governance bila tersedia, sehingga permintaan yang diblokir atau gagal tetap dapat dilacak via X-Monago-Audit-Id.
SDK
Python SDK membungkus API dan memunculkan hasil governance sebagai field kelas-satu (first-class).
pip install monago-atriumfrom monago_atrium import Monago
client = Monago(api_key="sk-mng-YOUR_KEY")
result = client.chat(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "Help me write a customer reply."}],
)
# Output model
print(result.content)
# Permukaan governance
print(result.audit_id) # referensi audit bertanda tangan
print(result.pii_detected) # bool
print(result.pii_redacted) # daftar tipe PII yang diredaksi
print(result.policy_decision)
print(result.cost_idr) # estimasi biaya, jika tersediaSDK bersifat open-core dan mengikuti kontrak governance dari API. Streaming dan SDK bahasa lain ada di roadmap.
Compliance
Atrium dibangun untuk mendukung kewajiban data-governance enterprise, khususnya bagi sektor teregulasi seperti perbankan dan jasa keuangan di Indonesia.
- Minimisasi data di perimeter. PII dapat diredaksi atau diblokir di gateway, sehingga identifier sensitif tidak perlu meninggalkan batas kepercayaan (trust boundary) Anda menuju penyedia LLM pihak ketiga. Ini mendukung kewajiban di bawah Undang-Undang Pelindungan Data Pribadi (UU PDP) Indonesia.
- Enforcement top-down (selaras Zero Trust). Kebijakan keamanan ditetapkan di tingkat tenant sebagai floor yang tidak dapat ditawar; tim dapat menerapkan kontrol yang lebih ketat tetapi tidak dapat melemahkan baseline. Ini mengikuti prinsip Zero Trust (NIST SP 800-207) tentang enforcement kebijakan yang eksplisit dan top-down pada enforcement point khusus. (Atrium selaras dengan prinsip-prinsip ini; "Zero Trust Architecture" adalah framework, bukan sertifikasi.)
- Auditabilitas. Setiap permintaan menghasilkan catatan audit bertanda tangan dan anti-manipulasi yang dirujuk oleh
X-Monago-Audit-Id, mendukung peninjauan setelah-fakta dan pelaporan regulasi. - Transparansi biaya. Estimasi biaya per-permintaan mendukung chargeback internal dan governance anggaran.
Untuk opsi data-residency dan deployment on-premise, hubungi tim Monago.
Catatan & Konvensi
- Endpoint chat sengaja dibuat kompatibel OpenAI: pada kebanyakan kasus Anda dapat mengarahkan klien OpenAI yang sudah ada ke base URL Atrium dan menambahkan key
sk-mng-Anda. - Perilaku governance (model mana yang diizinkan, bagaimana PII ditangani, jam yang diizinkan) ditentukan oleh kebijakan yang terikat pada scope API key Anda, dikonfigurasi di konsol Monago — bukan oleh parameter permintaan.
- Semua timestamp adalah Unix epoch detik; semua estimasi moneter pada
X-Monago-Cost-Idrdalam Rupiah dan merupakan estimasi untuk pelaporan, bukan jumlah yang ditagih penyedia.