Compatible con OpenAI
Conserva tu código de OpenAI, cambia la URL base
SpicyAPI habla el formato de chat completions de OpenAI. Apunta cualquier SDK, framework o app de chat compatible a nuestra URL base, usa un ID de modelo del catálogo y recibe las respuestas en streaming como siempre.
¿Qué es una API compatible con OpenAI?
Acepta las mismas solicitudes que la API de chat de OpenAI. Cualquier herramienta creada para OpenAI puede hablar con SpicyAPI si cambias tres ajustes.
- Tu app o cliente de chatSDK de OpenAI, LangChain, SillyTavern…
- SpicyAPIapi.spicyapi.ai/v1
- Modelos de chat26 modelos con una sola clave
Ideal para
- Apps que ya usan el SDK de OpenAICambia la dirección y la clave. El resto de tu código se queda igual.
- Apps de rol y de chatSillyTavern, RisuAI y Agnai se conectan como endpoint personalizado de OpenAI.
- Frameworks de agentesLangChain, Vercel AI SDK y Aider funcionan a través de sus adaptadores de OpenAI.
Conéctate en tres pasos
- Paso 1
Crea una clave de API
Inicia sesión y crea una clave en la consola. Empieza por sk-spicy-.
header Authorization: Bearer sk-spicy-… - Paso 2
Cambia la URL base
Sustituye la dirección de OpenAI por https://api.spicyapi.ai/v1.
base URL https://api.spicyapi.ai/v1 - Paso 3
Elige un ID de modelo
Copia el ID de un modelo de chat de la lista de abajo y envía tu primer mensaje.
model xai/grok-4.7/chat
Tres valores que cambiar
La mayoría de los clientes añaden /chat/completions por su cuenta, así que escribe la URL base solo hasta /v1. Las apps que piden el endpoint completo necesitan https://api.spicyapi.ai/v1/chat/completions.
- URL basehttps://api.openai.com/v1https://api.spicyapi.ai/v1
- Clave de APIsk-proj-…sk-spicy-…
- Modelogpt-4oElige un ID de modelo de chat
Configuración para tu cliente
Copia el fragmento del SDK, framework o app que ya usas. Haz clic en tu herramienta para ir a su fragmento.
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 /chatElige la opción compatible con OpenAI, pega la URL base y tu clave, y selecciona un modelo cuyo ID termine en /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);Define baseURL en el cliente y pasa un ID de modelo del catálogo.
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)Define base_url en el cliente o exporta 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 el proveedor openai-compatible con nuestra URL 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 acepta base_url y api_key directamente.
export OPENAI_API_BASE=https://api.spicyapi.ai/v1
export OPENAI_API_KEY=$SPICY_API_KEY
aider --model openai/MODEL_ID_FROM_CATALOGDos variables de entorno y el prefijo openai/ en el modelo.
Los clientes de terceros cambian el formato de su configuración entre versiones. Si un fragmento de aquí deja de coincidir, prevalece la documentación del propio cliente.
Modelos de chat que puedes usar
Copia el ID tal como aparece. Los precios y los límites de contexto están en la página de cada modelo.
- 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
Soluciona errores comunes
Casi todos los problemas del principio son uno de estos tres. Cada tarjeta muestra lo que ves y lo único que debes cambiar.
- 401
No autorizado
Falta la clave, o es una clave de OpenAI. Envía tu clave de SpicyAPI: Authorization: Bearer sk-spicy-…
- 404
No encontrado
La ruta de la URL base no es correcta. Usa https://api.spicyapi.ai/v1: evita usar solo el dominio o añadir /chat/completions dos veces.
- modelo
Modelo no encontrado
Los nombres de OpenAI como gpt-4o no son alias aquí. Usa un ID completo con la forma maker/model/chat.
