Endpoints
Chat completions
POST /chat/completions : le format de chat d'OpenAI pour tous les modèles de texte, avec paramètres, exemples de requête, réponse, streaming et erreurs.
Essayer dans le playgroundL'endpoint de chat completions utilise le format de chat d'OpenAI et fonctionne avec tous les modèles de texte du catalogue : GPT, Claude, Gemini, Llama, DeepSeek, Mistral et des centaines d'autres. Le corps de la requête est transmis tel quel au fournisseur en amont. api14 se contente de vérifier votre clé, le modèle, les limites et le solde, puis enregistre l'utilisation à la fin de la requête.
POST https://api14.com/api/v1/chat/completions
Authorization: Bearer sk-api14-...
Content-Type: application/json
Requête
| Paramètre | Type | Description |
|---|---|---|
model | string, obligatoire | Id du modèle, par ex. anthropic/claude-sonnet-4.5. Les variantes comme :online ou :nitro sont acceptées. Voir Ids de modèle. |
messages | array, obligatoire | La conversation sous forme d'objets { role, content }. Rôles : system, developer, user, assistant, tool. |
models | string[] | Modèles de repli à essayer dans l'ordre si le premier échoue. Voir Routage des fournisseurs. |
stream | boolean | Diffuse les tokens sous forme de server-sent events. Voir Streaming. |
max_tokens / max_completion_tokens | integer | Nombre maximal de tokens générés. |
temperature | number | Température d'échantillonnage, généralement 0–2. |
top_p, top_k, min_p, top_a | number | Autres réglages d'échantillonnage. Les modèles qui ne les prennent pas en charge les ignorent. |
frequency_penalty, presence_penalty, repetition_penalty | number | Réglages de répétition. |
stop | string | string[] | Séquences d'arrêt. |
seed | integer | Échantillonnage déterministe dans la mesure du possible. |
logprobs, top_logprobs | boolean, integer | Renvoie les log-probabilités des tokens lorsque le modèle les prend en charge. |
tools, tool_choice, parallel_tool_calls | Appel de fonctions. Voir Appels d'outils. | |
response_format | object | Mode JSON ou sortie conforme à un JSON Schema. Voir Sorties structurées. |
reasoning, include_reasoning | object, boolean | Réglages du raisonnement. Voir Raisonnement. |
plugins, web_search_options | Recherche web. Voir Recherche web. | |
provider | object | Préférences de fournisseur en amont. Voir Routage des fournisseurs. |
modalities | string[] | par ex. ["image", "text"] pour une sortie image, ou ["text", "audio"] pour une sortie audio. |
prediction | object | Sortie prédite ({ type: "content", content }) pour réduire la latence lors des modifications. |
transforms | string[] | par ex. ["middle-out"] pour compresser les prompts qui dépassent la fenêtre de contexte. |
user | string | Votre propre identifiant d'utilisateur final. |
Le content d'un message peut être une chaîne ou un tableau de parties de contenu (text, image_url, file, input_audio). Voir Vision et fichiers.
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);
Réponse
{
"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 est le coût de la requête en USD. api14 le débite de votre solde une fois la requête terminée. L'id est l'id de génération, que vous pouvez consulter plus tard avec Consultation des générations.
Notes sur la facturation
- Vous payez le prix affiché du modèle ; le montant facturé est renvoyé dans
usage.cost. Voir Tarifs et facturation. - Les requêtes en échec (tout statut 4xx ou 5xx) ne sont pas facturées.
- Si la requête contient
models: [...], chaque modèle de repli doit être autorisé pour votre clé et votre forfait ; sinon, la passerelle rejette la requête avant de l'envoyer en amont.
Erreurs
| Statut | Code | Quand |
|---|---|---|
| 400 | model_required | model est absent. |
| 400 | invalid_json | Le corps n'est pas un objet JSON. |
| 401 | invalid_api_key | La clé est absente, invalide ou révoquée. |
| 402 | insufficient_balance | Votre solde en USD est de $0. |
| 403 | model_not_allowed / plan_required | La liste de modèles autorisés de votre clé ou votre forfait ne couvre pas ce modèle. |
| 404 | model_not_found | Id de modèle inconnu ou désactivé. |
| 413 | payload_too_large | Le corps de la requête dépasse 25 MB. |
| 429 | rate_limited / daily_limit_reached | La limite de RPM ou la limite quotidienne en USD de la clé a été atteinte. |
| 502 | upstream_unavailable | Le fournisseur en amont est injoignable. |
Les erreurs du fournisseur en amont, comme un dépassement de la longueur de contexte ou une modération de contenu, sont renvoyées avec leur code de statut d'origine et le même format d'erreur. Voir Erreurs.