Endpoints
Chat completions
POST /chat/completions is het OpenAI-chatformaat voor elk tekstmodel: parameters, streaming, tools, responsestructuur, kosten en foutcodes.
Probeer het in de playgroundHet chat-completions-endpoint gebruikt het OpenAI-chatformaat en werkt met elk tekstmodel in de catalogus: GPT, Claude, Gemini, Llama, DeepSeek, Mistral en honderden andere. De request-body gaat ongewijzigd naar de upstream-provider. api14 controleert alleen je key, model, limieten en saldo, en registreert het gebruik zodra de request klaar is.
POST https://api14.com/api/v1/chat/completions
Authorization: Bearer sk-api14-...
Content-Type: application/json
Request
| Parameter | Type | Beschrijving |
|---|---|---|
model | string, verplicht | Model-id, bijv. anthropic/claude-sonnet-4.5. Varianten zoals :online of :nitro zijn toegestaan. Zie Model-id's. |
messages | array, verplicht | Het gesprek als { role, content }-objecten. Rollen: system, developer, user, assistant, tool. |
models | string[] | Fallback-modellen die op volgorde worden geprobeerd als het eerste faalt. Zie Provider routing. |
stream | boolean | Stream tokens als server-sent events. Zie Streaming. |
max_tokens / max_completion_tokens | integer | Bovengrens voor het aantal gegenereerde tokens. |
temperature | number | Sampling-temperatuur, meestal 0–2. |
top_p, top_k, min_p, top_a | number | Andere sampling-instellingen. Modellen die ze niet ondersteunen, negeren ze. |
frequency_penalty, presence_penalty, repetition_penalty | number | Instellingen tegen herhaling. |
stop | string | string[] | Stopsequenties. |
seed | integer | Zo goed mogelijk deterministische sampling. |
logprobs, top_logprobs | boolean, integer | Geef log-waarschijnlijkheden van tokens terug als het model dat ondersteunt. |
tools, tool_choice, parallel_tool_calls | Function calling. Zie Tool calling. | |
response_format | object | JSON-modus of output volgens een JSON Schema. Zie Structured outputs. |
reasoning, include_reasoning | object, boolean | Instellingen voor het denkproces. Zie Reasoning. |
plugins, web_search_options | Web search. Zie Web search. | |
provider | object | Voorkeuren voor de upstream-provider. Zie Provider routing. |
modalities | string[] | Bijv. ["image", "text"] voor beeldoutput, of ["text", "audio"] voor audio-output. |
prediction | object | Voorspelde output ({ type: "content", content }) om de latency bij bewerkingen te verlagen. |
transforms | string[] | Bijv. ["middle-out"] om prompts te comprimeren die groter zijn dan het contextvenster. |
user | string | Je eigen identificatie van de eindgebruiker. |
De content van een bericht kan een string zijn of een array van content parts (text, image_url, file, input_audio). Zie Vision en bestanden.
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 zijn de kosten van de request in USD. api14 schrijft dit bedrag van je saldo af zodra de request klaar is. De id is de generatie-id, die je later kunt opzoeken met Generatie opzoeken.
Over facturering
- Je betaalt de vermelde prijs van het model; het bedrag staat in
usage.cost. Zie Prijzen en facturering. - Mislukte requests (elke 4xx- of 5xx-status) worden niet in rekening gebracht.
- Bevat de request
models: [...], dan moet elk fallback-model toegestaan zijn voor je key en abonnement; anders weigert de gateway de request nog vóór die naar de upstream gaat.
Fouten
| Status | Code | Wanneer |
|---|---|---|
| 400 | model_required | model ontbreekt. |
| 400 | invalid_json | De body is geen JSON-object. |
| 401 | invalid_api_key | De key ontbreekt, is ongeldig of is ingetrokken. |
| 402 | insufficient_balance | Je USD-saldo is $0. |
| 403 | model_not_allowed / plan_required | De allowlist van je key of je abonnement dekt dit model niet. |
| 404 | model_not_found | Onbekende of uitgeschakelde model-id. |
| 413 | payload_too_large | De request-body is groter dan 25 MB. |
| 429 | rate_limited / daily_limit_reached | De RPM-limiet of de dagelijkse USD-limiet van de key is bereikt. |
| 502 | upstream_unavailable | De upstream-provider was niet bereikbaar. |
Upstream-fouten, zoals een overschreden contextlengte of contentmoderatie, komen terug met hun oorspronkelijke statuscode en dezelfde foutstructuur. Zie Fouten.