Compatible OpenAI
Gardez votre code OpenAI, changez l’URL de base
SpicyAPI parle le format chat completions d’OpenAI. Pointez n’importe quel SDK, framework ou appli de chat compatible vers notre URL de base, utilisez un ID de modèle du catalogue et diffusez les réponses en streaming comme d’habitude.
Qu’est-ce qu’une API compatible OpenAI ?
Elle accepte les mêmes requêtes que l’API de chat d’OpenAI. Tout outil conçu pour OpenAI peut parler à SpicyAPI dès que vous changez trois réglages.
- Votre appli ou client de chatSDK OpenAI, LangChain, SillyTavern…
- SpicyAPIapi.spicyapi.ai/v1
- Modèles de chat26 modèles derrière une seule clé
Idéal pour
- Applis déjà sur le SDK OpenAIChangez l’adresse et la clé. Le reste de votre code ne bouge pas.
- Jeu de rôle et applis de chatSillyTavern, RisuAI et Agnai se connectent comme point de terminaison OpenAI personnalisé.
- Frameworks d’agentsLangChain, Vercel AI SDK et Aider fonctionnent via leurs adaptateurs OpenAI.
Connectez-vous en trois étapes
- Étape 1
Créez une clé API
Connectez-vous et créez une clé dans la console. Elle commence par sk-spicy-.
header Authorization: Bearer sk-spicy-… - Étape 2
Changez l’URL de base
Remplacez l’adresse d’OpenAI par https://api.spicyapi.ai/v1.
base URL https://api.spicyapi.ai/v1 - Étape 3
Choisissez un ID de modèle
Copiez un ID de modèle de chat dans la liste ci-dessous et envoyez votre premier message.
model xai/grok-4.7/chat
Trois valeurs à changer
La plupart des clients ajoutent /chat/completions eux-mêmes : saisissez donc l’URL de base jusqu’à /v1 seulement. Les applis qui demandent le point de terminaison complet ont besoin de https://api.spicyapi.ai/v1/chat/completions.
- URL de basehttps://api.openai.com/v1https://api.spicyapi.ai/v1
- Clé APIsk-proj-…sk-spicy-…
- Modèlegpt-4oChoisissez un ID de modèle de chat
Configuration pour votre client
Copiez l’extrait correspondant au SDK, au framework ou à l’appli que vous utilisez déjà. Cliquez sur votre outil pour aller à son extrait.
curl https://api.spicyapi.ai/v1/chat/completions \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "MODEL_ID_FROM_CATALOG",
"messages": [{ "role": "user", "content": "Write a two-line opening scene." }],
"stream": true
}'API type: OpenAI-compatible (custom endpoint / proxy)
Base URL: https://api.spicyapi.ai/v1
API key: sk-spicy-...
Model: MODEL_ID_FROM_CATALOG # a chat model id ending in /chatChoisissez l’option compatible OpenAI, collez l’URL de base et votre clé, puis sélectionnez un modèle dont l’ID se termine par /chat.
import OpenAI from "openai";
import { randomUUID } from "node:crypto";
const client = new OpenAI({
apiKey: process.env.SPICY_API_KEY,
baseURL: "https://api.spicyapi.ai/v1",
});
// One key per business action. The SDK retries automatically, so without it a
// dropped response can create a second task and a second charge.
const idempotencyKey = randomUUID();
const completion = await client.chat.completions.create(
{
model: "MODEL_ID_FROM_CATALOG",
messages: [{ role: "user", content: "Say hello in five words." }],
},
{ headers: { "Idempotency-Key": idempotencyKey } },
);
console.log(completion.choices[0].message.content);Définissez baseURL sur le client et passez un identifiant de modèle du catalogue.
import os
import uuid
from openai import OpenAI
client = OpenAI(
api_key=os.environ["SPICY_API_KEY"],
base_url="https://api.spicyapi.ai/v1", # or set OPENAI_BASE_URL
)
# One key per business action. The SDK retries automatically, so without it a
# dropped response can create a second task and a second charge.
idempotency_key = str(uuid.uuid4())
completion = client.chat.completions.create(
model="MODEL_ID_FROM_CATALOG",
messages=[{"role": "user", "content": "Say hello in five words."}],
extra_headers={"Idempotency-Key": idempotency_key},
)
print(completion.choices[0].message.content)Définissez base_url sur le client, ou exportez OPENAI_BASE_URL.
import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
import { generateText } from "ai";
import { randomUUID } from "node:crypto";
const spicy = createOpenAICompatible({
name: "spicyapi",
apiKey: process.env.SPICY_API_KEY,
baseURL: "https://api.spicyapi.ai/v1",
});
const { text } = await generateText({
model: spicy("MODEL_ID_FROM_CATALOG"),
prompt: "Say hello in five words.",
// Per call, never on the client: one key shared by every request would make
// the second request replay the first one's answer.
headers: { "Idempotency-Key": randomUUID() },
});Utilisez le provider openai-compatible avec notre URL de base.
import os
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="MODEL_ID_FROM_CATALOG",
base_url="https://api.spicyapi.ai/v1",
api_key=os.environ["SPICY_API_KEY"],
# Retries here would resend an already-accepted request without an
# Idempotency-Key, which bills twice. Send the key yourself (see the
# OpenAI Python recipe) before turning retries back on.
max_retries=0,
)
print(llm.invoke("Say hello in five words.").content)ChatOpenAI accepte base_url et api_key directement.
export OPENAI_API_BASE=https://api.spicyapi.ai/v1
export OPENAI_API_KEY=$SPICY_API_KEY
aider --model openai/MODEL_ID_FROM_CATALOGDeux variables d’environnement, puis préfixez le modèle par openai/.
Les clients tiers changent de format de configuration d’une version à l’autre. Si un extrait ici ne correspond plus, c’est la documentation du client qui fait foi.
Modèles de chat disponibles
Copiez l’ID tel qu’affiché. Les prix et limites de contexte sont sur la page de chaque modèle.
- Grok 4.7 · Chatxai/grok-4.7/chat
- DeepSeek V4.1 Flash · Chatdeepseek/v4.1-flash/chat
- Grok 4.3 · Chatxai/grok-4.3/chat
- Claude Haiku 5.5 · Chatanthropic/claude-haiku-5.5/chat
- Claude Sonnet 5.5 · Chatanthropic/claude-sonnet-5.5/chat
- Claude Opus 5.5 · Chatanthropic/claude-opus-5.5/chat
- GLM 5.3 Flash · Chatzai/glm-5.3-flash/chat
- GLM 5.3 · Chatzai/glm-5.3/chat
- DeepSeek V4 Pro · Chatdeepseek/v4-pro/chat
- Gemini 3.7 Flash · Chatgoogle/gemini-3.7-flash/chat
- Grok 4.6 · Chatxai/grok-4.6/chat
- DeepSeek V4 Flash · Chatdeepseek/v4-flash/chat
Corriger les erreurs courantes
La plupart des problèmes du début sont l’un de ces trois-là. Chaque carte montre ce que vous voyez et l’unique chose à changer.
- 401
Non autorisé
La clé est absente, ou c’est une clé OpenAI. Envoyez votre clé SpicyAPI : Authorization: Bearer sk-spicy-…
- 404
Introuvable
L’URL de base est décalée d’un niveau. Utilisez https://api.spicyapi.ai/v1, pas le domaine seul ni /chat/completions ajouté deux fois.
- modèle
Modèle introuvable
Les noms OpenAI comme gpt-4o ne sont pas des alias ici. Utilisez un ID complet de la forme maker/model/chat.
Vous utilisez SillyTavern ?
SillyTavern a son propre guide, avec les paramètres de connexion et une extension qui ajoute images et courtes vidéos à vos conversations.
SillyTavernImages et vidéo
Le format OpenAI couvre le chat. Pour l’image, la vidéo et l’audio, utilisez l’API de tâches via l’un des SDK officiels.
SDK