O
OmahAI

Referensi API

Semua endpoint mengikuti skema OpenAI. Base URL pada contoh terisi otomatis sesuai domain ini. Daftar slug model lihat katalog model.

1. Mulai cepat — cURL

curl -X POST /chat/completions \
  -H "Authorization: Bearer $OMAHAI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "contoh-model-gratis",
    "messages": [{"role": "user", "content": "Halo!"}]
  }'

2. Autentikasi

Sertakan kunci pada setiap request melalui header Authorization: Bearer $OMAHAI_KEY. Tanpa header yang valid API menjawab 401. Kunci terikat pada level akses: kunci level dasar hanya membuka model Freebies, sedangkan kunci premium membuka seluruh katalog.

3. Chat Completions

POST /v1/chat/completions — respons standar OpenAI:

{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1725000000,
  "model": "contoh-model-gratis",
  "choices": [{
    "index": 0,
    "message": {"role": "assistant", "content": "Halo juga!"},
    "finish_reason": "stop"
  }],
  "usage": {"prompt_tokens": 8, "completion_tokens": 5, "total_tokens": 13}
}

4. Streaming (SSE)

Kirim "stream": true. Respons berupa Server-Sent Events text/event-stream berisi potongan choices[0].delta.content dan diakhiri baris data: [DONE]:

data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk",
  "choices":[{"index":0,"delta":{"content":"Halo"},"finish_reason":null}]}

data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk",
  "choices":[{"index":0,"delta":{"content":" juga!"},"finish_reason":"stop"}]}

data: [DONE]

5. Parameter request

ParameterTipeWajibKeterangan
modelstringYaSlug dari katalog model
messagesarrayYaRiwayat percakapan role: system | user | assistant + content
streambooleanTidakJika true, respons berupa SSE
temperaturenumberTidak0–2, kreativitas jawaban (default 1)
max_tokensintegerTidakBatas panjang jawaban
top_pnumberTidakNucleus sampling 0–1
stopstring[]TidakUrutan berhenti pembangkitan

6. Daftar model

GET /v1/models — butuh autentikasi, format list OpenAI:

{
  "object": "list",
  "data": [
    {"id": "contoh-model-gratis", "object": "model",
     "tier": "free", "provider": "mitra-a"}
  ]
}

7. Kode error

HTTPKodeArti & solusi
400bad_requestBody bukan JSON / field wajib hilang
400missing_modelField <code>model</code> wajib diisi slug katalog
400provider_type_mismatchSalah endpoint untuk tipe model (pakai <code>/v1/messages</code> untuk model Anthropic)
401missing_bearerHeader Authorization belum dikirim
401invalid_tokenKunci salah / dinonaktifkan — periksa di konsol
403tier_forbiddenModel premium butuh kunci premium
404model_not_foundSlug tidak ada / sedang gangguan — cek katalog
502provider_disabled / no_keysModel sedang gangguan — coba lagi nanti
502all_keys_failedSemua jalur sibuk — ulangi dengan backoff eksponensial

8. Rate limit

Demi keadilan, pemakaian dibatasi secara wajar per kunci. Praktik yang disarankan:

  • Jika menerima 429 atau 502 all_keys_failed, tunggu dan ulangi dengan jeda bertambah (1 dtk → 2 dtk → 4 dtk, maks ~3x).
  • Jangan kirim ulang request streaming yang gagal secara agresif; buat ulang percakapan dari potongan terakhir.
  • Untuk beban tinggi yang berkelanjutan, gunakan beberapa kunci dan sebarkan request antar kunci.