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
| Parameter | Tipe | Wajib | Keterangan |
|---|---|---|---|
model | string | Ya | Slug dari katalog model |
messages | array | Ya | Riwayat percakapan role: system | user | assistant + content |
stream | boolean | Tidak | Jika true, respons berupa SSE |
temperature | number | Tidak | 0–2, kreativitas jawaban (default 1) |
max_tokens | integer | Tidak | Batas panjang jawaban |
top_p | number | Tidak | Nucleus sampling 0–1 |
stop | string[] | Tidak | Urutan 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
| HTTP | Kode | Arti & solusi |
|---|---|---|
| 400 | bad_request | Body bukan JSON / field wajib hilang |
| 400 | missing_model | Field <code>model</code> wajib diisi slug katalog |
| 400 | provider_type_mismatch | Salah endpoint untuk tipe model (pakai <code>/v1/messages</code> untuk model Anthropic) |
| 401 | missing_bearer | Header Authorization belum dikirim |
| 401 | invalid_token | Kunci salah / dinonaktifkan — periksa di konsol |
| 403 | tier_forbidden | Model premium butuh kunci premium |
| 404 | model_not_found | Slug tidak ada / sedang gangguan — cek katalog |
| 502 | provider_disabled / no_keys | Model sedang gangguan — coba lagi nanti |
| 502 | all_keys_failed | Semua jalur sibuk — ulangi dengan backoff eksponensial |
8. Rate limit
Demi keadilan, pemakaian dibatasi secara wajar per kunci. Praktik yang disarankan:
- Jika menerima
429atau502 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.