Satu API. Semua provider.
Endpoint yang kompatibel dengan OpenAI dan Anthropic. Pengganti drop-in — ubah base_url dan api_key, tidak ada yang lain.
Permukaan API
Referensi endpoint lengkap
Kompatibel OpenAI (/v1/)
- POST
/v1/chat/completionsCompletion utama. Mengembalikan 202 untuk request yang memenuhi syarat batch. - POST
/v1/completionsText completion lama. - GET
/v1/modelsKatalog model dengan flag tier dan dukungan batch. - POST
/v1/embeddingsPassthrough embeddings.
Kompatibel Anthropic (/anthropic/)
- POST
/anthropic/v1/messagesProxy penuh Anthropic Messages API dengan streaming. Set ANTHROPIC_BASE_URL=https://api.anoman.io/anthropic.
Publik — tanpa auth (/public/v1/)
- GET
/public/v1/pricingHarga model — markup 0%, pass-through pada biaya provider. Tanpa auth. - GET
/public/v1/statusStatus sistem + kesehatan provider. Tanpa auth. - GET
/public/v1/modelsKatalog model publik. Tanpa auth.
Native Anoman (/anoman/v1/)
- POST
/anoman/v1/keysBuat API key virtual. - GET
/anoman/v1/batch/{job_id}Poll status batch job atau ambil hasilnya. - GET
/anoman/v1/usage/savingsRincian penghematan biaya cache dan batch. - GET
/anoman/v1/events/streamStream SSE — event gateway real-time. - POST
/anoman/v1/burst/activateBeli pengali rate limit sementara (2x/5x/10x).
Referensi API lengkap dengan skema request/response: Docs / API Reference →
Routing batch
Hemat 50% untuk beban kerja non-interaktif
Analisis dokumen, tugas agent latar belakang, pembuatan laporan semalam — request yang memenuhi syarat otomatis dirutekan ke batch API native provider (Anthropic, OpenAI, Google) dengan penghematan biaya 50%.
from openai import OpenAI
client = OpenAI(base_url="https://api.anoman.io/v1", api_key="anm-sk-...")
# Returns 202 for batch-eligible requests
response = client.chat.completions.create(
model="claude-sonnet-4-6",
messages=[{"role": "user", "content": "Summarise this doc..."}],
extra_headers={"prefer_batch": "true"}
)
if response.status_code == 202:
job_id = response.json()["id"]
# Poll until complete
result = client.get(f"/anoman/v1/batch/{job_id}")Starter: 30 minutes SLA
Pro: 15 minutes SLA
Enterprise: Real-time only (SLA guarantee)
Auto-escalation: if job reaches 80% of SLA,
worker automatically promotes to real-time.
Cost savings: ~50% via provider native batch API
(Anthropic /v1/messages/batches, OpenAI /v1/batches)Transparansi respons
Setiap respons membawa konteks penuh
{
"choices": [{ "message": { "content": "..." } }],
"usage": { "prompt_tokens": 512, "completion_tokens": 128 },
"_anoman": {
"guardrails": {
"injection": { "status": "pass", "score": 0.12 },
"pii": { "status": "pass" },
"content": { "status": "pass" },
"policy": { "status": "pass" }
},
"routing": {
"mode": "realtime",
"region": "id",
"provider_type": "cloud_direct"
},
"cache": { "hit": false, "type": "none" },
"weighted_tokens": 1240,
"cost_usd": "0.0023",
"burst": { "active": false }
}
}X-Anoman-Guardrail-Injection: pass score=0.12
X-Anoman-Guardrail-Pii: pass
X-Anoman-Guardrail-Content: pass
X-Anoman-Cache: none
X-Anoman-Region: ID
X-Anoman-Tier: proIntegrasi
Bekerja dengan setiap agen dan framework AI.
Penyiapan satu baris untuk agen yang kompatibel dengan OpenAI dan Anthropic. Tanpa perubahan SDK.
Agen yang kompatibel dengan OpenAI
Setel OPENAI_BASE_URL — selebihnya tetap sama
Bekerja dengan: Cursor, Codex CLI, Aider, Cline, Continue, LangChain, CrewAI, AutoGen, OpenClaw, dan klien OpenAI SDK apa pun.
export OPENAI_BASE_URL=https://api.anoman.io/v1
export OPENAI_API_KEY=anm-sk-...from langchain_openai import ChatOpenAI
chat = ChatOpenAI(
base_url="https://api.anoman.io/v1",
api_key="anm-sk-..."
)import os
os.environ["OPENAI_BASE_URL"] = "https://api.anoman.io/v1"
os.environ["OPENAI_API_KEY"] = "anm-sk-..."Agen yang kompatibel dengan Anthropic
Setel ANTHROPIC_BASE_URL untuk Claude Code dan Agent TARS
Proxy Anthropic Messages API lengkap termasuk streaming. Guardrail, routing, dan observability berlaku untuk setiap panggilan.
export ANTHROPIC_BASE_URL=https://api.anoman.io/anthropic
export ANTHROPIC_API_KEY=anm-sk-...
claude # All calls now go through Anoman guardrailsimport anthropic
client = anthropic.Anthropic(
base_url="https://api.anoman.io/anthropic",
api_key="anm-sk-..."
)Panduan langkah demi langkah
Penyiapan per-alat untuk agen dan editor paling populer.
Platform · Decision Models
Lapisan keputusan terjaga untuk agen AI
Agen Anda terus-menerus membuat keputusan — rutekan ini, tandai itu, apakah ini berisiko. Decision Models mengubah keputusan itu menjadi keputusan bertipe, terkalibrasi, dan dapat diaudit, ditenagai JEV dan berjalan lewat gerbang Anoman terjaga yang sama seperti setiap panggilan chat.
Pertanyaan bertipe masuk, jawaban terkalibrasi keluar
Sebuah panggilan Decision Models mengambil state — hal yang dinilai — dan sekumpulan questions bertipe, lalu mengembalikan jawaban bertipe untuk masing-masing dengan probabilitas terkalibrasi. Tidak ada teks bebas yang dihasilkan sama sekali, jadi tidak ada yang bisa dikarang model di luar skema yang Anda tentukan.
Ya / tidak
Keputusan biner dengan probabilitas terkalibrasi — apakah ini mendesak, apakah ini spam, apakah perlu ditinjau.
Klasifikasikan
Pilih satu label dari kumpulan tetap yang Anda tentukan — rutekan tiket, kategorikan konten — dengan skor keyakinan per opsi.
Beri nilai
Penilaian bertingkat pada skala yang Anda tentukan — nada, tingkat keparahan, kualitas — dengan distribusi probabilitas penuh di setiap tingkat.
Ditagih hanya dari input token — output gratis — dan panggilan biasanya selesai jauh di bawah satu detik. Lihat semua decision model dan harga live-nya di Direktori AI Models.
Di mana keputusan bertipe menggantikan panggilan chat
Routing tiket & intent
Klasifikasikan pesan masuk ke tim atau cabang alur kerja — sebelum manusia, atau model yang mahal, sempat melihatnya.
Klasifikasi konten & tingkat keparahan
Tandai konten berisiko, sensitif, atau relevan kebijakan dengan skor terkalibrasi, bukan tebakan.
Menilai output LLM itu sendiri
Nilai kualitas, nada, atau groundedness sebuah chat completion sebelum sampai ke pengguna — juri murah di depan generator yang mahal.
Risk-gating tool-call agen
Putuskan apakah sebuah tool call boleh berjalan otomatis, atau perlu manusia di dalam alurnya.
Satu panggilan, satu jawaban bertipe
Kirim state dan satu atau lebih questions bertipe ke POST /anoman/v1/decisions. Ini berjalan lewat gerbang Anoman terjaga yang sama seperti setiap panggilan chat — terautentikasi, dibatasi laju, dan terukur — dan mengembalikan jawaban bertipe per pertanyaan dengan skor keyakinan yang bisa Anda pakai sebagai gerbang logika routing.
curl https://api.anoman.io/anoman/v1/decisions \
-H "Authorization: Bearer anm-sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "jev-latest",
"state": "Customer: My invoice charged me twice this month and I need this fixed today.",
"questions": {
"category": {
"type": "choice",
"instructions": "Which team should this ticket route to?",
"criteria": {
"billing": "Billing",
"technical": "Technical issue",
"account": "Account access"
}
}
}
}'{
"data": {
"model": "jev-1.13.0",
"answers": {
"category": {
"type": "choice",
"choice": "billing",
"confidence": 0.91,
"probabilities": { "billing": 0.91, "technical": 0.06, "account": 0.03 }
}
},
"usage": { "input_tokens": 118, "output_tokens": 0 }
},
"error": null,
"meta": { "request_id": "req_...", "timestamp": "2026-09-22T10:00:00Z", "region": "id" }
}Bentuk request/response lengkap, kode error, dan contoh bahasa pemrograman ada di dokumentasi Decision Models.
Apa yang sebenarnya terjadi pada data Anda
Hanya state yang disamarkan. PII yang terdeteksi di state disamarkan sebelum meninggalkan Anoman. questions dan instructions Anda dikirim ke JEV persis seperti ditulis dan tidak dipindai atau disamarkan — jangan letakkan rahasia atau identitas sensitif di teks pertanyaan Anda.
Perutean ke AS. Berbeda dengan gateway kami yang berbasis Jakarta, Decision Models merutekan permintaan Anda ke API JEV di Amerika Serikat. Jika konten Anda wajib tetap di dalam wilayah, jangan kirim ke endpoint ini.
Penilaian injeksi hanya untuk pemantauan. Seorang juri secara sah harus bisa menilai teks adversarial atau berbentuk serangan sebagai bagian dari tugasnya — jadi injeksi prompt pada state dinilai dan dicatat, tapi endpoint ini tidak pernah memblokir karenanya.
Keputusan bersifat probabilistik. Setiap jawaban adalah probabilitas terkalibrasi, bukan kepastian. Tinjau keputusan penting sebelum menindaklanjutinya, terutama saat keyakinan yang dikembalikan rendah.