anoman
MasukDapatkan API Key
Gateway

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%.

Python
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}")
Batch SLAs
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

Response JSON
{
  "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 }
  }
}
Response Headers
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: pro

Integrasi

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.

Cursor / Codex CLI
export OPENAI_BASE_URL=https://api.anoman.io/v1
export OPENAI_API_KEY=anm-sk-...
LangChain
from langchain_openai import ChatOpenAI

chat = ChatOpenAI(
    base_url="https://api.anoman.io/v1",
    api_key="anm-sk-..."
)
AutoGen / CrewAI
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.

Claude Code
export ANTHROPIC_BASE_URL=https://api.anoman.io/anthropic
export ANTHROPIC_API_KEY=anm-sk-...

claude  # All calls now go through Anoman guardrails
Python SDK
import anthropic

client = anthropic.Anthropic(
    base_url="https://api.anoman.io/anthropic",
    api_key="anm-sk-..."
)
Self-hosted (Ollama / vLLM / LM Studio): Hubungkan melalui localhost — ini melewati gateway Anoman sehingga guardrail, observability, dan penegakan kebijakan tidak berlaku. Untuk beban kerja kepatuhan, gunakan model open-source terkelola Tier 3a (dirutekan melalui OpenRouter) sebagai gantinya.
Agen coding? Lewati env var manual — installer satu baris kami mengarahkan Claude Code, Cursor, Cline, Aider, dan lainnya ke Anoman secara otomatis, dengan jalur revert penuh.

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.

noul

Ya / tidak

Keputusan biner dengan probabilitas terkalibrasi — apakah ini mendesak, apakah ini spam, apakah perlu ditinjau.

choice

Klasifikasikan

Pilih satu label dari kumpulan tetap yang Anda tentukan — rutekan tiket, kategorikan konten — dengan skor keyakinan per opsi.

score

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.

Request
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"
        }
      }
    }
  }'
Response
{
  "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.

Rutekan panggilan AI pertama Anda melalui Anoman.