Endpoint
Prompt caching
Pakai ulang prompt panjang dengan diskon lewat caching otomatis dan cache_control eksplisit, serta cara membaca token cache pada usage.
Coba di playgroundPrompt caching memakai ulang prefiks prompt panjang yang sudah diproses, seperti system prompt, dokumen, atau definisi tool, antar request. Pembacaan cache jauh lebih murah daripada token input biasa. api14 meneruskan harga cache provider apa adanya: input_cache_read dan input_cache_write tercantum untuk setiap model di Model.
Caching otomatis
Provider berikut melakukan caching sendiri. Anda tidak perlu mengubah apa pun:
| Provider | Prompt minimum | Harga baca cache | Harga tulis cache |
|---|---|---|---|
| OpenAI | 1.024 token | ~0,25–0,5× input | gratis |
| DeepSeek | otomatis | ~0,1× input | ~1× input |
| Grok, Moonshot, Groq | otomatis | didiskon | gratis |
| Google Gemini 2.5 | implisit, tergantung model | ~0,25× input | gratis |
Letakkan bagian yang tidak berubah di awal prompt dan bagian yang berubah di akhir, agar prefiksnya cocok antar request.
Caching eksplisit dengan cache_control
Anthropic Claude (dan caching eksplisit Gemini) memerlukan breakpoint. Tambahkan cache_control ke content part teks:
{
"model": "anthropic/claude-sonnet-4.5",
"messages": [
{
"role": "system",
"content": [
{ "type": "text", "text": "You are a contracts assistant." },
{
"type": "text",
"text": "<the full 40-page agreement text>",
"cache_control": { "type": "ephemeral" }
}
]
},
{ "role": "user", "content": "Which clause covers termination?" }
]
}
- Anthropic mengizinkan hingga 4 breakpoint. Cache bertahan sekitar 5 menit dan diperpanjang pada setiap hit. Gunakan
"ttl": "1h"untuk cache yang lebih lama, yang biaya penulisannya lebih tinggi. - Penulisan cache di Anthropic berbiaya sekitar 1,25× input, dan pembacaan sekitar 0,1×.
- Agar terus mengenai cache provider yang sama, tambahkan
provider: { "order": ["Anthropic"], "allow_fallbacks": false }jika Anda membutuhkannya.
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api14.com/api/v1",
apiKey: process.env.API14_API_KEY,
});
const result = await client.chat.completions.create({
"model": "anthropic/claude-sonnet-4.5",
"messages": [
{
"role": "user",
"content": "Explain vector databases in two sentences."
}
]
});
console.log(result.choices[0].message.content);
Membaca pemakaian cache
Objek usage menampilkan token yang di-cache, dan cost sudah memperhitungkan diskon:
{
"usage": {
"prompt_tokens": 10450,
"completion_tokens": 120,
"total_tokens": 10570,
"prompt_tokens_details": { "cached_tokens": 10200 },
"cost": 0.004863
}
}
cached_tokens juga muncul di log pemakaian di dashboard. Pencarian generasi menampilkan rincian lengkap, termasuk cache_discount.
Error
Caching tidak pernah menyebabkan error sendiri. cache_control yang salah format diabaikan atau ditolak oleh provider dengan 400. Lihat Error.