Compatível com OpenAI
Mantenha seu código da OpenAI, troque a URL base
A SpicyAPI fala o formato de chat completions da OpenAI. Aponte qualquer SDK, framework ou app de chat compatível para a nossa URL base, use um ID de modelo do catálogo e receba as respostas em streaming como de costume.
O que é uma API compatível com OpenAI?
Ela aceita as mesmas requisições da API de chat da OpenAI. Qualquer ferramenta feita para a OpenAI fala com a SpicyAPI depois de você trocar três configurações.
- Seu app ou cliente de chatSDK da OpenAI, LangChain, SillyTavern…
- SpicyAPIapi.spicyapi.ai/v1
- Modelos de chat26 modelos com uma só chave
Ideal para
- Apps que já usam o SDK da OpenAITroque o endereço e a chave. O resto do código fica igual.
- Apps de roleplay e chatSillyTavern, RisuAI e Agnai se conectam como um endpoint OpenAI personalizado.
- Frameworks de agentesLangChain, Vercel AI SDK e Aider funcionam pelos adaptadores da OpenAI.
Conecte em três passos
- Passo 1
Crie uma chave de API
Entre e crie uma chave no console. Ela começa com sk-spicy-.
header Authorization: Bearer sk-spicy-… - Passo 2
Troque a URL base
Substitua o endereço da OpenAI por https://api.spicyapi.ai/v1.
base URL https://api.spicyapi.ai/v1 - Passo 3
Escolha um ID de modelo
Copie um ID de modelo de chat da lista abaixo e envie sua primeira mensagem.
model xai/grok-4.7/chat
Três valores para trocar
A maioria dos clientes acrescenta /chat/completions sozinha, então informe a URL base só até /v1. Apps que pedem o endpoint completo precisam de https://api.spicyapi.ai/v1/chat/completions.
- URL basehttps://api.openai.com/v1https://api.spicyapi.ai/v1
- Chave de APIsk-proj-…sk-spicy-…
- Modelogpt-4oEscolha um ID de modelo de chat
Configuração para o seu cliente
Copie o trecho do SDK, framework ou app que você já usa. Clique na sua ferramenta para ir direto ao trecho.
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 /chatEscolha a opção compatível com OpenAI, cole a URL base e a sua chave e selecione um modelo cujo ID termine em /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);Defina baseURL no cliente e passe um ID de modelo do 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)Defina base_url no cliente ou exporte 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() },
});Use o provider openai-compatible com a nossa 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 aceita base_url e api_key diretamente.
export OPENAI_API_BASE=https://api.spicyapi.ai/v1
export OPENAI_API_KEY=$SPICY_API_KEY
aider --model openai/MODEL_ID_FROM_CATALOGDuas variáveis de ambiente e o prefixo openai/ no modelo.
Clientes de terceiros mudam o formato de configuração entre versões. Se um trecho daqui deixar de bater com o cliente, vale a documentação dele.
Modelos de chat disponíveis
Copie o ID exatamente como aparece. Preços e limites de contexto estão na 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
Corrija os erros mais comuns
A maioria dos problemas de primeira viagem é um destes três. Cada card mostra o que você vê e a única coisa a mudar.
- 401
Não autorizado
A chave está ausente, ou é uma chave da OpenAI. Envie a sua chave da SpicyAPI: Authorization: Bearer sk-spicy-…
- 404
Não encontrado
A URL base está no nível errado. Use https://api.spicyapi.ai/v1, sem deixar apenas o domínio nem acrescentar /chat/completions duas vezes.
- modelo
Modelo não encontrado
Nomes da OpenAI, como gpt-4o, não são aliases aqui. Use um ID completo no formato maker/model/chat.
Usa o SillyTavern?
O SillyTavern tem um guia próprio, com as configurações de conexão e uma extensão que adiciona imagens e vídeos curtos aos seus chats.
SillyTavernImagens e vídeo
O formato da OpenAI cobre o chat. Para imagens, vídeo e áudio, use a API de tarefas por qualquer um dos SDKs oficiais.
SDKs