anoman
POST · /v1/chat/completions + GET · /anoman/v1/batch

Batch job.

Routing asinkron untuk beban kerja non-interaktif. ~50% lebih murah dari realtime dengan SLA 5-30 menit tergantung tier.

Kapan memakai batch

Pilih batch ketika…

  • Latensi tidak penting — ringkasan semalam, suite eval, pipeline pengayaan data, RAG batch.
  • Volume tinggi — ribuan permintaan independen di mana penghematan ~50% terakumulasi.
  • Anda bisa poll atau menunggu — alur kode Anda tidak masalah dengan waktu respons 5-30 menit.

Pilih realtime ketika…

  • Anda men-streaming output ke UI pengguna.
  • Latensi adalah bagian dari produk (chat, autocomplete, agen suara).
  • Anda butuh stream: true — batch tidak mendukung streaming.

SLA per tier

TierSLA BatchCatatan
Starter30 minBawaan; overflow + opt-in
Pro15 minBawaan untuk akun baru
Pay-As-You-Go15 minSama seperti Pro
Enterprise5 minAtau SLA kontrak khusus

Ketika job dalam antrean mencapai 80% batas waktu SLA-nya tanpa selesai, Anoman otomatis mempromosikannya ke realtime dengan biaya penuh. Anda tidak pernah melihat pelanggaran — tetapi Anda juga berhenti berhemat.

Enqueue

Endpoint sama, header opt-in

Batch bersifat opt-in per permintaan via x-anoman-prefer-batch: true (atau setel default_routing: batch pada API key di dashboard untuk set-and-forget). Responsnya 202 dengan poll_url.

# Opt-in via header; existing tools/SDKs work unchanged.
curl https://api.anoman.io/v1/chat/completions \
  -H "Authorization: Bearer anm-sk-..." \
  -H "Content-Type: application/json" \
  -H "x-anoman-prefer-batch: true" \
  -d '{
    "model": "deepseek-v3",
    "messages": [{"role": "user", "content": "Summarize this 50-page doc..."}]
  }'

Poll

GET /anoman/v1/batch/{job_id}

Akses URL yang dikembalikan pada respons enqueue. Selama diproses, Anda mendapat 202 dengan petunjuk poll_again_in_seconds. Saat selesai, 200 dengan hasil chat completion lengkap plus savings_usd.

curl https://api.anoman.io/anoman/v1/batch/job_abc123def456 \
  -H "Authorization: Bearer anm-sk-..."

Helper Python

Enqueue + poll dalam satu panggilan

import time
import httpx

API = "https://api.anoman.io"
KEY = "anm-sk-..."

def enqueue(model, messages):
    r = httpx.post(
        f"{API}/v1/chat/completions",
        headers={
            "Authorization": f"Bearer {KEY}",
            "x-anoman-prefer-batch": "true",
        },
        json={"model": model, "messages": messages},
    )
    r.raise_for_status()
    return r.json()  # 202 with poll_url

def poll(job_id, deadline_minutes=30):
    deadline = time.time() + deadline_minutes * 60
    while time.time() < deadline:
        r = httpx.get(
            f"{API}/anoman/v1/batch/{job_id}",
            headers={"Authorization": f"Bearer {KEY}"},
        )
        r.raise_for_status()
        if r.status_code == 200:
            return r.json()  # complete
        # 202: still processing — respect poll_again_in_seconds
        wait = r.json().get("poll_again_in_seconds", 30)
        time.sleep(wait)
    raise TimeoutError(f"Job {job_id} exceeded {deadline_minutes}m deadline")

# Usage
job = enqueue("deepseek-v3", [{"role": "user", "content": "..."}])
print(f"Queued: {job['id']}, SLA: {job['sla_minutes']}m")
result = poll(job["id"])
print(result["choices"][0]["message"]["content"])
print(f"Saved: $-{result.get('savings_usd', '0')}")

Helper setara tersedia di SDK Anoman resmi sebagai client.poll_batch(job_id).

Cancel

DELETE /anoman/v1/batch/{job_id}

Job dalam antrean dapat dibatalkan dengan satu DELETE. Setelah eksekusi dimulai di upstream, pembatalan mengembalikan 409 (Anda tetap ditagih untuk apa pun yang sudah berjalan).

curl -X DELETE \
  https://api.anoman.io/anoman/v1/batch/job_abc123def456 \
  -H "Authorization: Bearer anm-sk-..."

# 200 — { "id": "job_abc123def456", "status": "cancelled" }
# 409 — if job already started executing

Yang tidak didukung batch

Batasan

  • Tanpa streamingstream:true memaksa realtime terlepas dari header.
  • Tanpa jaminan realtime — SLA realtime tier Enterprise tidak berlaku.
  • Promosi otomatis ke realtime pada 80% SLA — saat SF menurun atau antrean padat, kami mempromosikan daripada melewatkan SLA. Anda berhenti berhemat tetapi job tetap selesai tepat waktu.
  • Pipeline guardrail yang sama berjalan sebelum enqueue — permintaan batch yang gagal deteksi injection mengembalikan 403 seketika dan tidak pernah masuk antrean.

Lihat ekonomi batch di dashboard.

Penghematan per bulan dirinci per model + provider.