Endpoint
Chat completions
Usa POST /chat/completions, il formato chat di OpenAI, per inviare messaggi a qualsiasi modello di testo con parametri, risposte e streaming.
Provalo nel playgroundL'endpoint chat completions usa il formato chat di OpenAI e funziona con tutti i modelli di testo del catalogo: GPT, Claude, Gemini, Llama, DeepSeek, Mistral e centinaia di altri. Il corpo della richiesta arriva al provider upstream senza modifiche. api14 si limita a verificare chiave, modello, limiti e saldo, e registra l'utilizzo al termine della richiesta.
POST https://api14.com/api/v1/chat/completions
Authorization: Bearer sk-api14-...
Content-Type: application/json
Richiesta
| Parametro | Tipo | Descrizione |
|---|---|---|
model | string, obbligatorio | Id del modello, ad es. anthropic/claude-sonnet-4.5. Sono ammesse varianti come :online o :nitro. Vedi Id dei modelli. |
messages | array, obbligatorio | Conversazione sotto forma di oggetti { role, content }. Ruoli: system, developer, user, assistant, tool. |
models | string[] | Modelli di fallback da provare in ordine se il primo fallisce. Vedi Instradamento dei provider. |
stream | boolean | Trasmette i token come server-sent events. Vedi Streaming. |
max_tokens / max_completion_tokens | integer | Limite massimo di token generati. |
temperature | number | Temperatura di campionamento, di solito 0–2. |
top_p, top_k, min_p, top_a | number | Altri controlli di campionamento. I modelli che non li supportano li ignorano. |
frequency_penalty, presence_penalty, repetition_penalty | number | Controlli sulle ripetizioni. |
stop | string | string[] | Sequenze di stop. |
seed | integer | Campionamento deterministico, per quanto possibile. |
logprobs, top_logprobs | boolean, integer | Restituisce le log-probabilità dei token quando il modello le supporta. |
tools, tool_choice, parallel_tool_calls | Function calling. Vedi Tool calling. | |
response_format | object | Modalità JSON o output con JSON Schema. Vedi Output strutturati. |
reasoning, include_reasoning | object, boolean | Controlli sul ragionamento. Vedi Ragionamento. |
plugins, web_search_options | Ricerca web. Vedi Ricerca web. | |
provider | object | Preferenze sul provider upstream. Vedi Instradamento dei provider. |
modalities | string[] | ad es. ["image", "text"] per output di immagini, o ["text", "audio"] per output audio. |
prediction | object | Output previsto ({ type: "content", content }) per ridurre la latenza nelle modifiche. |
transforms | string[] | ad es. ["middle-out"] per comprimere i prompt che superano la finestra di contesto. |
user | string | Il tuo identificatore dell'utente finale. |
Il content del messaggio può essere una stringa o un array di parti di contenuto (text, image_url, file, input_audio). Vedi Visione e 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);
Risposta
{
"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 è il costo della richiesta in USD. api14 lo addebita sul tuo saldo al termine della richiesta. L'id è l'id della generazione, che puoi consultare in seguito con la Consultazione delle generazioni.
Note sulla fatturazione
- Paghi il prezzo di listino del modello; l'addebito viene restituito in
usage.cost. Vedi Prezzi e fatturazione. - Le richieste non riuscite (qualsiasi stato 4xx o 5xx) non vengono addebitate.
- Se la richiesta include
models: [...], tutti i modelli di fallback devono essere consentiti per la tua chiave e il tuo piano, altrimenti il gateway rifiuta la richiesta prima di inviarla all'upstream.
Errori
| Stato | Codice | Quando |
|---|---|---|
| 400 | model_required | model è mancante. |
| 400 | invalid_json | Il corpo non è un oggetto JSON. |
| 401 | invalid_api_key | La chiave è mancante, non valida o revocata. |
| 402 | insufficient_balance | Il tuo saldo in USD è $0. |
| 403 | model_not_allowed / plan_required | La lista di modelli consentiti della chiave o il tuo piano non includono questo modello. |
| 404 | model_not_found | Id del modello sconosciuto o disattivato. |
| 413 | payload_too_large | Il corpo della richiesta supera i 25 MB. |
| 429 | rate_limited / daily_limit_reached | È stato raggiunto il limite RPM o il limite giornaliero in USD della chiave. |
| 502 | upstream_unavailable | Impossibile raggiungere il provider upstream. |
Gli errori dell'upstream, come il superamento della lunghezza del contesto o la moderazione dei contenuti, vengono restituiti con il codice di stato originale e lo stesso formato di errore. Vedi Errori.