Nous utilisons des cookies. Les cookies et le stockage du navigateur vous gardent connecté et mémorisent vos préférences. Avec votre accord, nous mesurons aussi l’utilisation du site. Vous pouvez à tout moment. Consultez notre politique relative aux cookies.

Compatibilité avec le SDK OpenAI

Premiers pas

Compatibilité avec le SDK OpenAI

Utilisez les SDK officiels d'OpenAI sans modification et migrez depuis OpenAI ou une autre API compatible en changeant seulement l'URL de base et la clé.

api14 parle l'API d'OpenAI. Tout SDK officiel d'OpenAI, et tout outil qui accepte une URL de base OpenAI personnalisée, fonctionne sans modifier le code : vous changez seulement l'URL de base et la clé d'API.

Les deux valeurs à changer

ParamètreValeur
URL de basehttps://api14.com/api/v1
Clé d'APIvotre clé sk-api14-...
import OpenAI from 'openai'

const client = new OpenAI({
  baseURL: 'https://api14.com/api/v1',
  apiKey: process.env.API14_API_KEY,
})
import os
from openai import OpenAI

client = OpenAI(base_url="https://api14.com/api/v1", api_key=os.environ["API14_API_KEY"])

De nombreux SDK lisent aussi les variables d'environnement OPENAI_BASE_URL et OPENAI_API_KEY : vous pouvez donc basculer sans toucher du tout au code.

Ce qui est compatible

Fonctionnalité OpenAIapi14
chat.completions.create y compris stream, tools, response_formatPris en charge pour tous les modèles de texte
responses.createPris en charge
completions.createPris en charge
embeddings.createPris en charge
images.generatePris en charge (/images/generations)
audio.speech.createPris en charge
audio.transcriptions.createPris en charge (multipart)
models.list / models.retrievePris en charge, avec prix et catégories
Format d'erreur { error: { message, type, code } }Identique : les SDK lèvent leur APIError habituelle

Les endpoints propres à OpenAI (Assistants, Threads, fine-tuning, files, batches, vector stores et moderations) ne sont pas disponibles.

Migrer depuis OpenAI

  1. Définissez l'URL de base sur https://api14.com/api/v1 et utilisez votre clé api14.
  2. Préfixez les noms de modèle par le fournisseur : gpt-5-mini devient openai/gpt-5-mini, text-embedding-3-small devient openai/text-embedding-3-small.
  3. C'est tout. Vous pouvez désormais passer à n'importe quel autre fournisseur en changeant l'id du modèle, par exemple anthropic/claude-sonnet-4.5 ou google/gemini-2.5-pro.
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);

Migrer depuis une autre API compatible OpenAI

Si vous utilisez déjà une autre passerelle compatible OpenAI, seules l'URL de base et la clé changent.

  1. Remplacez l'URL de base par https://api14.com/api/v1.
  2. Remplacez votre clé d'API par votre clé api14.
  3. Conservez tout le reste : ids de modèle, variantes (:free, :online, :nitro, :floor), routage provider, replis models, reasoning, plugins, transforms et usage.

Différences à connaître :

  • La facturation repose sur un solde en USD. GET /credits renvoie total_credits et total_usage en USD, ainsi qu'un champ balance_usd. Voir Solde et infos de clé.
  • Le coût d'utilisation est toujours inclus. La passerelle demande toujours usage.cost au fournisseur en amont, si bien que chaque réponse indique son prix.
  • Les en-têtes comme HTTP-Referer et X-Title sont définis par la passerelle ; vous n'avez pas besoin de les envoyer.
  • Les URL des tâches vidéo pointent vers api14 (/api/v1/videos/{id}), jamais vers le fournisseur en amont. Voir Vidéo.

Paramètres supplémentaires dans les SDK

Vous pouvez tout de même envoyer des champs que le SDK OpenAI ne connaît pas :

await client.chat.completions.create({
  model: 'openai/gpt-5-mini',
  messages: [{ role: 'user', content: 'Hi' }],
  // @ts-expect-error api14 extension
  provider: { sort: 'price' },
})
client.chat.completions.create(
    model="openai/gpt-5-mini",
    messages=[{"role": "user", "content": "Hi"}],
    extra_body={"provider": {"sort": "price"}},
)

Voir Routage des fournisseurs et replis, Raisonnement et Recherche web.