Compatibile con OpenAI
Tieni il tuo codice OpenAI, cambia il base URL
SpicyAPI parla il formato chat completions di OpenAI. Punta qualsiasi SDK, framework o app di chat compatibile sul nostro base URL, usa un ID modello del catalogo e ricevi le risposte in streaming come al solito.
Cos’è un’API compatibile con OpenAI?
Accetta le stesse richieste dell’API chat di OpenAI. Qualsiasi strumento pensato per OpenAI può parlare con SpicyAPI dopo aver cambiato tre impostazioni.
- La tua app o il tuo client di chatSDK OpenAI, LangChain, SillyTavern…
- SpicyAPIapi.spicyapi.ai/v1
- Modelli chat26 modelli con una sola chiave
Ideale per
- App già sull’SDK OpenAICambia indirizzo e chiave. Il resto del codice resta com’è.
- App di roleplay e chatSillyTavern, RisuAI e Agnai si collegano come endpoint OpenAI personalizzato.
- Framework per agentiLangChain, Vercel AI SDK e Aider funzionano con i loro adattatori OpenAI.
Collegati in tre passaggi
- Passaggio 1
Crea una chiave API
Accedi e crea una chiave nella console. Inizia con sk-spicy-.
header Authorization: Bearer sk-spicy-… - Passaggio 2
Cambia il base URL
Sostituisci l’indirizzo di OpenAI con https://api.spicyapi.ai/v1.
base URL https://api.spicyapi.ai/v1 - Passaggio 3
Scegli un ID modello
Copia l’ID di un modello chat dall’elenco qui sotto e invia il tuo primo messaggio.
model xai/grok-4.7/chat
Tre valori da cambiare
La maggior parte dei client aggiunge /chat/completions da sé, quindi inserisci il base URL solo fino a /v1. Le app che chiedono l’endpoint completo richiedono https://api.spicyapi.ai/v1/chat/completions.
- Base URLhttps://api.openai.com/v1https://api.spicyapi.ai/v1
- Chiave APIsk-proj-…sk-spicy-…
- Modellogpt-4oScegli un ID di modello chat
Configurazione per il tuo client
Copia lo snippet per l’SDK, il framework o l’app che usi già. Clicca sul tuo strumento per andare al suo snippet.
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 /chatScegli l'opzione compatibile con OpenAI, incolla l'URL base e la tua chiave, poi seleziona un modello il cui ID termina con /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);Imposta baseURL sul client e passa un ID di modello preso dal catalogo.
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)Imposta base_url sul client, oppure esporta 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() },
});Usa il provider openai-compatible con il nostro base URL.
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 accetta direttamente base_url e api_key.
export OPENAI_API_BASE=https://api.spicyapi.ai/v1
export OPENAI_API_KEY=$SPICY_API_KEY
aider --model openai/MODEL_ID_FROM_CATALOGDue variabili d’ambiente, poi anteponi openai/ al nome del modello.
I client di terze parti cambiano formato di configurazione da una versione all’altra. Se uno snippet qui non corrisponde più, vale la documentazione del client.
Modelli chat che puoi usare
Copia l’ID esattamente come appare. Prezzi e limiti di contesto sono nella pagina di ogni modello.
- 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
Risolvi gli errori più comuni
Di solito i problemi iniziali sono uno di questi tre. Ogni scheda mostra cosa vedi e l’unica cosa da cambiare.
- 401
Non autorizzato
La chiave manca, oppure è una chiave OpenAI. Invia la tua chiave SpicyAPI: Authorization: Bearer sk-spicy-…
- 404
Non trovato
Il percorso dell’URL di base non è corretto. Usa https://api.spicyapi.ai/v1, senza fermarti al solo dominio e senza aggiungere /chat/completions due volte.
- modello
Modello non trovato
I nomi OpenAI come gpt-4o qui non sono alias. Usa un ID completo nella forma maker/model/chat.
Usi SillyTavern?
SillyTavern ha una guida tutta sua, con le impostazioni di connessione e un’estensione che aggiunge immagini e brevi video alle tue chat.
SillyTavernImmagini e video
Il formato OpenAI copre la chat. Per immagini, video e audio usa l’API delle attività tramite uno degli SDK ufficiali.
SDK