Endpoint
Chat completions
POST /chat/completions memakai format chat OpenAI untuk semua model teks: parameter request, format respons, streaming, dan penanganan error.
Coba di playgroundEndpoint chat completions memakai format chat OpenAI dan bekerja dengan semua model teks di katalog: GPT, Claude, Gemini, Llama, DeepSeek, Mistral, dan ratusan lainnya. Body request diteruskan ke penyedia upstream tanpa perubahan. api14 hanya memeriksa key, model, batas, dan saldo Anda, lalu mencatat pemakaian saat request selesai.
POST https://api14.com/api/v1/chat/completions
Authorization: Bearer sk-api14-...
Content-Type: application/json
Request
| Parameter | Tipe | Deskripsi |
|---|---|---|
model | string, wajib | Model id, misalnya anthropic/claude-sonnet-4.5. Varian seperti :online atau :nitro diperbolehkan. Lihat Model id. |
messages | array, wajib | Percakapan sebagai objek { role, content }. Role: system, developer, user, assistant, tool. |
models | string[] | Model fallback yang dicoba secara berurutan jika model pertama gagal. Lihat Provider routing. |
stream | boolean | Stream token sebagai server-sent events. Lihat Streaming. |
max_tokens / max_completion_tokens | integer | Batas atas token yang dihasilkan. |
temperature | number | Temperatur sampling, biasanya 0–2. |
top_p, top_k, min_p, top_a | number | Kontrol sampling lainnya. Model yang tidak mendukungnya akan mengabaikannya. |
frequency_penalty, presence_penalty, repetition_penalty | number | Kontrol pengulangan. |
stop | string | string[] | Stop sequence. |
seed | integer | Sampling deterministik sebisa mungkin (best-effort). |
logprobs, top_logprobs | boolean, integer | Mengembalikan log probabilitas token jika model mendukungnya. |
tools, tool_choice, parallel_tool_calls | Function calling. Lihat Tool calling. | |
response_format | object | Mode JSON atau output JSON Schema. Lihat Structured outputs. |
reasoning, include_reasoning | object, boolean | Kontrol thinking. Lihat Reasoning. |
plugins, web_search_options | Pencarian web. Lihat Pencarian web. | |
provider | object | Preferensi penyedia upstream. Lihat Provider routing. |
modalities | string[] | Misalnya ["image", "text"] untuk output gambar, atau ["text", "audio"] untuk output audio. |
prediction | object | Output yang diprediksi ({ type: "content", content }) untuk memangkas latensi saat mengedit. |
transforms | string[] | Misalnya ["middle-out"] untuk memampatkan prompt yang melebihi context window. |
user | string | Identifier end-user milik Anda sendiri. |
content pada pesan bisa berupa string atau array content part (text, image_url, file, input_audio). Lihat Vision & file.
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": "openai/gpt-5-mini",
"messages": [
{
"role": "user",
"content": "Explain vector databases in two sentences."
}
]
});
console.log(result.choices[0].message.content);
Response
{
"id": "gen-1760000000-abc123",
"object": "chat.completion",
"created": 1760000000,
"model": "anthropic/claude-sonnet-4.5",
"provider": "Anthropic",
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": { "role": "assistant", "content": "Hello! How can I help you today?" }
}
],
"usage": {
"prompt_tokens": 12,
"completion_tokens": 9,
"total_tokens": 21,
"prompt_tokens_details": { "cached_tokens": 0 },
"completion_tokens_details": { "reasoning_tokens": 0 },
"cost": 0.000171
}
}
usage.cost adalah biaya request dalam USD. api14 memotongnya dari saldo Anda setelah request selesai. id adalah generation id, yang bisa Anda cari nanti dengan Pencarian generation.
Catatan penagihan
- Anda membayar sesuai harga yang tercantum untuk model tersebut; tagihannya dikembalikan di
usage.cost. Lihat Harga & penagihan. - Anda tidak ditagih untuk request yang gagal (status 4xx atau 5xx apa pun).
- Jika request menyertakan
models: [...], setiap model fallback harus diizinkan untuk key dan paket Anda; jika tidak, gateway menolak request sebelum dikirim ke upstream.
Error
| Status | Kode | Kapan |
|---|---|---|
| 400 | model_required | model tidak ada. |
| 400 | invalid_json | Body bukan objek JSON. |
| 401 | invalid_api_key | Key tidak ada, tidak valid, atau sudah dicabut. |
| 402 | insufficient_balance | Saldo USD Anda $0. |
| 403 | model_not_allowed / plan_required | Allowlist key atau paket Anda tidak mencakup model ini. |
| 404 | model_not_found | Model id tidak dikenal atau dinonaktifkan. |
| 413 | payload_too_large | Body request lebih besar dari 25 MB. |
| 429 | rate_limited / daily_limit_reached | Batas RPM atau batas USD harian key telah tercapai. |
| 502 | upstream_unavailable | Penyedia upstream tidak dapat dihubungi. |
Error dari upstream, seperti context length terlampaui atau moderasi konten, dikembalikan dengan kode status aslinya dan format error yang sama. Lihat Error.