Cara kerja
MarkdownYang terjadi pada permintaan antara aplikasi Anda dan model.
Panduan lengkap
Anda mengirim permintaan ke Ailoot API seperti saat mengirim langsung ke OpenAI, Anthropic, atau Google. Ailoot memeriksa kunci dan saldo, meneruskan permintaan ke model, mengembalikan respons dalam format yang sama, lalu mendebit biaya berdasarkan pemakaian aktual.
Satu kunci — tiga format
Format ditentukan oleh jalur permintaan, bukan model. Model Claude yang sama dapat dipanggil melalui OpenAI Chat, OpenAI Responses, atau Anthropic Messages — respons mengikuti format jalur yang Anda panggil.
| Format | Jalur | Yang menggunakannya |
|---|---|---|
| OpenAI Chat Completions | /v1/chat/completions | OpenAI SDK, sebagian besar chat dan editor, n8n, LangChain |
| OpenAI Responses | /v1/responses | Codex CLI, OpenAI Agents SDK, versi SDK baru |
| Anthropic Messages | /v1/messages | Claude Code, Anthropic SDK, Zed, Cline |
| Gemini | /v1beta/models/{model}:generateContent | Gemini CLI, Google GenAI SDK |
Biaya: penahanan saldo dan satu pendebitan
- Sebelum mengirim permintaan teks baru, Ailoot menahan saldo berdasarkan perkiraan input dan respons tipikal dengan mempertimbangkan batas (
max_tokens) dan ketentuan model yang digunakan. Jika saldo bebas atau kuota kunci tidak cukup untuk jumlah yang harus ditahan, batas respons yang dikirim hanya dapat diturunkan untuk model dan metode yang benar-benar mematuhinya, dan tidak boleh kurang dari 256 token maupun minimum respons yang ditetapkan. Untuk output gambar, video, dan audio, penahanan saldo sebesar biaya penuh hasil tetap berlaku. - Setelah respons — satu pendebitan berdasarkan pemakaian aktual. Sisa saldo yang ditahan langsung dikembalikan ke saldo.
- Jika biaya respons melebihi saldo yang ditahan, selisih diambil dari saldo bebas. Saldo tidak pernah menjadi negatif.
- Jika dana tidak cukup bahkan untuk penahanan saldo minimum, permintaan tidak dikirim: Anda menerima kesalahan 402 yang jelas tanpa pendebitan.
- Kesalahan yang tidak menghasilkan hasil tidak dikenai biaya.
Detail dan contoh perhitungan tersedia di halaman Penahanan saldo dan pendebitan.
Kesalahan dengan Request ID
Setiap respons memiliki ID permintaan: dalam header X-Request-ID dan pesan kesalahan. Kesalahan berformat JSON sesuai API yang dipanggil, sehingga SDK mengenalinya dengan benar. Jika terjadi masalah, kirim Request ID ke dukungan — agar kami dapat menemukan permintaan dalam satu menit.
{
"code": "API_KEY_REQUIRED",
"error": {
"code": "invalid_api_key",
"message": "No API key was sent with the request. Nothing was charged. Please check that the full key is sent in the Authorization header as \"Bearer <key>\". Request ID: 3b28d3de-5b02-4d07-9f3c-4b9a7d0e68d6.",
"param": null,
"reason": "invalid_api_key",
"request_id": "3b28d3de-5b02-4d07-9f3c-4b9a7d0e68d6",
"type": "invalid_request_error"
},
"message": "No API key was sent with the request. Nothing was charged. …"
}Streaming dan timeout
Respons streaming (stream: true) dikirim sebagai Server-Sent Events. Ailoot mengirim respons teks berbayar setelah biaya dihitung. Jadi, dengan stream: true format tetap streaming (SSE), tetapi teks dikirim sekaligus saat model selesai, bukan kata demi kata. Jika respons memerlukan lebih dari sekitar 15 detik, aliran Chat Completions, Responses, dan Messages dimulai dengan baris layanan : ping (sekitar setiap 10 detik), lalu baris : ailoot-charged-usd … berisi jumlah yang didebit, lalu diikuti data respons. SDK melewati baris-baris komentar tersebut.
Dalam format Gemini tidak ada baris layanan: respons :streamGenerateContent dikirim sekaligus setelah perhitungan. Berikan margin timeout klien untuk model penalaran: beberapa menit adalah hal wajar.
Header respons
X-Request-ID dikirim dalam setiap respons. Header Ailoot lainnya ditambahkan ke respons teks berbayar:
| Header | Isinya |
|---|---|
X-Request-ID | ID permintaan — dibutuhkan oleh dukungan |
X-Ailoot-Charged-USD | Jumlah biaya permintaan ini yang didebit, dalam dolar |
X-Ailoot-Output-Tokens | Jumlah token respons yang dibayar |
X-Ailoot-Max-Tokens-Capped | Batas respons setelah diturunkan karena saldo tidak cukup untuk penahanan penuh |
X-Ailoot-Notice-Code, X-Ailoot-Notice | Penjelasan jika respons berhenti pada batas panjang |
Jika aliran sudah dimulai dengan baris layanan, informasi ini dikirim sebagai baris komentar sebelum data, bukan sebagai header.
Cache prompt
Jika model mendukung cache, prefiks panjang yang dikirim ulang (instruksi sistem, dokumen) dapat lebih murah. Harga pembacaan dan penulisan cache tercantum pada kartu model dalam katalog. Cache hit ditentukan oleh pengembang model; Ailoot tidak menjaminnya.