Documentação
O Smart AIPI oferece APIs compatíveis com OpenAI e Anthropic. Use nosso serviço com qualquer SDK, ferramenta ou app existente da OpenAI ou Anthropic simplesmente mudando a base URL. Zero mudanças de código necessárias.
OpenAI Base URL
https://api.smartaipi.com/v1
Anthropic Base URL
https://api.smartaipi.com
Ferramentas CLI e MCP
O Smart AIPI oferece dois pacotes npm para ajudar desenvolvedores a trabalhar com suas contas:
Instalar Ambos
npm install -g smart-aipi @smart-aipi/mcp
Instalar Individualmente
npm install -g smart-aipi
npm install -g @smart-aipi/mcp
Autenticação
Todas as requisições da API exigem uma API key. A mesma chave funciona com os dois métodos de autenticação:
Authorization: Bearer YOUR_API_KEY
x-api-key: YOUR_API_KEY
Guia de Migração
A migração leva menos de um minuto. Nossa API é 100% compatível com endpoints OpenAI e Anthropic.
Da OpenAI
Pegue sua API key do Smart AIPI
Cadastre-se e crie uma API key no seu dashboard.
Mude a base URL
Substitua https://api.openai.com/v1 por https://api.smartaipi.com/v1
Atualize sua API key
Use sua chave Smart AIPI em vez da sua chave OpenAI. É só isso!
Da Anthropic
Pegue sua API key do Smart AIPI
Cadastre-se e crie uma API key no seu dashboard.
Mude a base URL
Substitua https://api.anthropic.com por https://api.smartaipi.com
Atualize sua API key
Use sua chave Smart AIPI em vez da sua chave Anthropic. Seus nomes de modelo Claude existentes funcionam como estão.
Seu código, SDKs e apps existentes usando a Anthropic Messages API funcionarão sem nenhuma mudança de código. Os nomes de modelo Claude (claude-opus-4-6, claude-sonnet-4-5-20250929, claude-haiku-4-5-20251001) são roteados automaticamente para modelos GPT-5.4 de alto desempenho. Toda resposta inclui um x-actual-model header mostrando o modelo real de backend para total transparência.
Conclusões de bate-papo
Crie uma chat completion para as mensagens e o modelo fornecidos. Este é o principal endpoint para interagir com modelos de linguagem.
Parâmetros do Corpo da Requisição
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| model | corda | Sim | ID do modelo a usar (ex.: "gpt-6-astra", "gpt-5.6-sol") |
| messages | variedade | Sim | Array de objetos de mensagem com role e content |
| temperature | número | Não | Temperatura de amostragem (0-2). Maior = mais aleatório. Padrão: 1 |
| max_tokens | inteiro | Não | Máximo de tokens a gerar na resposta |
| top_p | número | Não | Nucleus sampling. Considera tokens com probabilidade top_p. Padrão: 1 |
| frequency_penalty | número | Não | Penaliza tokens com base na frequência (-2 a 2). Padrão: 0 |
| presence_penalty | número | Não | Penaliza tokens com base na presença (-2 a 2). Padrão: 0 |
| stop | string/array | Não | Sequências de parada. Até 4 sequências onde a geração para. |
| stream | booleano | Não | Ativa respostas por streaming via SSE. Padrão: false |
Roles de Mensagem
system- system - Define o comportamento/persona do assistenteuser- user - Mensagens do usuárioassistant- assistant - Respostas anteriores do assistente
Exemplos de Código
from openai import OpenAI
client = OpenAI(
base_url="https://api.smartaipi.com/v1",
api_key="your-api-key"
)
response = client.chat.completions.create(
model="gpt-6-astra",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
],
temperature=0.7,
max_tokens=1000
)
print(response.choices[0].message.content)
Streaming
Ative streaming para receber tokens à medida que forem gerados via Server-Sent Events (SSE). Isso oferece uma experiência melhor para o usuário em respostas longas.
Defina "stream": true na sua requisição para ativar streaming.
Exemplo de Streaming
from openai import OpenAI
client = OpenAI(
base_url="https://api.smartaipi.com/v1",
api_key="your-api-key"
)
# Enable streaming
stream = client.chat.completions.create(
model="gpt-6-astra",
messages=[{"role": "user", "content": "Write a poem"}],
stream=True
)
# Process chunks as they arrive
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
Esforço de Reasoning
Controle a profundidade do reasoning com o parâmetro reasoning_effort para modelos GPT-5.
O Smart AIPI usa como padrão reasoning.effort = "high" para todas as requisições da Responses API.
Depois de muitos testes, descobrimos que high é o melhor esforço de reasoning para uso prático - ele oferece uso de ferramentas e análise profundos e confiáveis sem o custo de latência de xhigh. Você pode sobrescrever isso definindo explicitamente o esforço de reasoning na sua requisição.
O Smart AIPI usa por padrão store = false para todas as requisições da Responses API e WebSocket.
A API upstream exige store: false para GPT-5.4 e modelos mais novos. Se você definir explicitamente store: true nas suas requisições, você receberá um erro "Store must be set to false". Remova isso ou defina como false.
Modelos Suportados
API de Responses
gpt-5.4, gpt-5.3, gpt-5.1, gpt-5 e todas as variantes Codex
Apenas Chat Completions
gpt-5.4-nano — o suporte a reasoning está disponível apenas em /v1/chat/completions .
Níveis de Esforço de Reasoning
none- Sem reasoning. Pula o pensamento completamente.low- Reasoning mínimo. Ótimo para tarefas simples.medium- Equilíbrio entre velocidade e profundidade.high- Análise profunda para problemas complexos. (Padrão do Smart AIPI)xhigh- Extra alto. Profundidade máxima de reasoning para os problemas mais difíceis.
Modo Rápido (Processamento Prioritário)
Usar service_tier: "priority" para processamento prioritário com menor latência. É isso que o comando /fast no Codex CLI usa. Isso não muda a profundidade do reasoning - você recebe a mesma qualidade, mais rápido.
Preço: O processamento prioritário é cobrado a 1,5x da taxa padrão. Por exemplo, a saída do GPT-5.4 normalmente custa $3.75/1M tokens - com prioridade custa $5.625/1M tokens.
response = client.responses.create(
model="gpt-6-astra",
input="Refactor this function",
service_tier="priority" # priority processing, lower latency
)
API de Chat Completions
response = client.chat.completions.create(
model="gpt-6-astra",
messages=[{"role": "user", "content": "Analyze this code for bugs..."}],
reasoning_effort="high" # or "xhigh" for maximum depth
)
API de Responses
# Reasoning is set via the "reasoning" object
response = client.responses.create(
model="gpt-6-astra",
input=[{"role": "user", "content": "Refactor this function..."}],
reasoning={"effort": "high"} # defaults to "high" on Smart AIPI
)
Geração de Imagens
Gere imagens a partir de prompts de texto usando nosso endpoint de geração de imagens.
/v1/images/variations ) ainda não são suportadas. Edições de imagem estão disponíveis em /v1/images/edits.
Parâmetros do Corpo da Requisição
| Parâmetro | Tipo | Descrição |
|---|---|---|
| prompt | corda | Descrição em texto da imagem a gerar (obrigatório) |
| model | corda | "gpt-image-2.5-flare" (frontier), "gpt-image-2.5-sunburst" ou "gpt-image-2". Padrão: "gpt-image-2.5-flare" |
| n | inteiro | Número de imagens a gerar (1-10). Padrão: 1 |
| size | corda | "1024x1024", "1024x1792" ou "1792x1024". Padrão: "1024x1024" |
| quality | corda | "standard" ou "hd". Padrão: "standard" |
Modelos Disponíveis
gpt-image-2.5-flare- Modelo de ponta, maior qualidade (padrão)gpt-image-2.5-sunburst- Edição de precisão e trabalho criativo premium (geração mais lenta)gpt-image-latest- Alias para gpt-image-2.5-flaregpt-image-2- Carro-chefe da geração anteriorgpt-image-1.5- Carro-chefe mais antigo (oferece suporte a fundos transparentes)gpt-image-1- Geração de imagem em qualidade totalgpt-image-1-mini- Imagens menores e mais rápidas
Exemplo
response = client.images.generate(
model="gpt-image-2.5-flare",
prompt="A futuristic city at sunset, cyberpunk style",
size="1024x1024",
n=1
)
# Response contains base64-encoded image
image_b64 = response.data[0].b64_json
# Save to file
import base64
with open("output.png", "wb") as f:
f.write(base64.b64decode(image_b64))
Edição de Imagens
Edite imagens existentes usando um prompt de texto. Aceita tanto JSON (string base64) quanto multipart/form-data (upload de arquivo), então os SDKs da OpenAI funcionam imediatamente.
Parâmetros do Corpo da Requisição
| Parâmetro | Tipo | Descrição |
|---|---|---|
| prompt | corda | Descrição em texto da edição desejada (obrigatório) |
| image | corda | Imagem codificada em base64 para editar (obrigatório) |
| model | corda | "gpt-image-2.5-flare" (padrão), "gpt-image-2.5-sunburst" ou "gpt-image-2" |
| n | inteiro | Número de imagens editadas a gerar (1-10). Padrão: 1 |
| size | corda | "1024x1024", "1024x1792" ou "1792x1024". Padrão: "1024x1024" |
| quality | corda | "low", "medium", "high" ou "auto". Padrão: "medium" |
image as an array of base64 strings (JSON) or as repeated image / image[] parts (multipart). Add a mask field alongside image to restrict edits to specific regions (white = edit, black = preserve). Works identically to the official OpenAI SDK.
Exemplo
import base64
response = client.images.edit(
model="gpt-image-2.5-flare",
image=open("input.png", "rb"),
prompt="Change the background to a sunset beach",
size="1024x1024",
n=1
)
# Save the edited image
edited_b64 = response.data[0].b64_json
with open("edited.png", "wb") as f:
f.write(base64.b64decode(edited_b64))
Realtime API com WebSocket
WebSockets são uma API amplamente suportada para transferência de dados em tempo real, e uma ótima escolha para conectar à Realtime API do Smart AIPI em aplicações server-to-server.
Em uma integração server-to-server, seu sistema de backend se conecta via WebSocket diretamente à Realtime API. Use uma Chave API padrão para autenticar a conexão, já que o token só está disponível no seu servidor de backend seguro.
Conectar via WebSocket
Abaixo estão vários exemplos de conexão via WebSocket. Além de usar a URL de WebSocket, você também precisará passar um header de autenticação usando sua API key.
import WebSocket from "ws";
const url = "wss://api.smartaipi.com/v1/responses";
const ws = new WebSocket(url, {
headers: {
Authorization: "Bearer " + process.env.SMARTAIPI_API_KEY,
},
});
ws.on("open", function open() {
console.log("Connected to server.");
// Send a response.create event
ws.send(JSON.stringify({
type: "response.create",
response: {
model: "gpt-6-astra",
store: false,
input: [{ role: "user", content: "Hello!" }],
stream: true,
},
}));
});
ws.on("message", function incoming(message) {
const event = JSON.parse(message.toString());
console.log(event.type, event);
});
Enviando e Recebendo Eventos
As sessões são gerenciadas usando eventos JSON enviados pelo cliente e pelo servidor na conexão WebSocket. Encapsule sua requisição em um envelope response.create :
| Evento | Direção | Descrição |
|---|---|---|
| response.create | Cliente | Envie uma requisição (encapsula seu modelo, entrada e parâmetros) |
| response.created | Servidor | Sessão aceita, processamento iniciado |
| response.output_text.delta | Servidor | Chunk de texto em streaming |
| response.completed | Servidor | Evento terminal com resposta completa e uso |
| response.failed | Servidor | Evento terminal indicando um erro |
"store": false no envelope da resposta. A conexão persiste em vários turnos - envie frames response.create adicionais sem reconectar.
Listar Modelos
Recupere uma lista de todos os modelos disponíveis. Use este endpoint para descobrir dinamicamente quais modelos estão disponíveis para sua conta.
Formato da Resposta
{
"object": "list",
"data": [
{
"id": "gpt-6-astra",
"object": "model",
"created": 1700000000,
"owned_by": "smart-aipi"
},
{
"id": "gpt-5.3-codex",
"object": "model",
"created": 1700000000,
"owned_by": "smart-aipi"
},
// ... more models
]
}
Exemplo
from openai import OpenAI
client = OpenAI(
base_url="https://api.smartaipi.com/v1",
api_key="your-api-key"
)
# List all available models
models = client.models.list()
for model in models.data:
print(model.id)
Modelos Disponíveis
Série GPT
- gpt-6-astra Mais recente
- gpt-5.6-sol
- gpt-5.6-terra
- gpt-5.6-luna
- gpt-5.5
- gpt-5.4-pro
- gpt-5.4
- gpt-5.4-mini
- gpt-5.4-nano apenas completions
Série Codex
- gpt-5.3-codex
- gpt-5.2-codex
- gpt-5.2
- gpt-5.1
Anthropic Mensagens API
Compatibilidade total com a Anthropic Messages API. Use qualquer SDK da Anthropic, Claude Code ou app que fale o protocolo Anthropic - basta mudar a base URL.
Recursos Suportados
- ✓ Streaming (protocolo completo de eventos SSE da Anthropic)
- ✓ Uso de ferramentas / function calling
- ✓ Mensagens de sistema (formatos string e array)
- ✓ Entradas de imagem (base64 e URL)
- ✓ Contagem de Token (
/v1/messages/count_tokens) - ✓ Pensamento estendido / esforço de reasoning
Exemplos de Código
from anthropic import Anthropic
client = Anthropic(
base_url="https://api.smartaipi.com",
api_key="your-api-key"
)
response = client.messages.create(
model="claude-sonnet-4-5-20250929",
max_tokens=1024,
messages=[
{"role": "user", "content": "Hello!"}
]
)
print(response.content[0].text)
Mapeamento de Modelos
Nomes de modelo Claude são aceitos e roteados automaticamente para GPT-5.4 com esforço de reasoning em camadas. Toda resposta inclui um x-actual-model header mostrando o modelo real de backend.
| Modelo Claude | Back-end | Raciocínio | Melhor Para |
|---|---|---|---|
| claude-opus-4-6 | gpt-5.4 | Alto | Reasoning complexo, arquitetura |
| claude-sonnet-4-5-20250929 | gpt-5.4 | Médio | Programação do dia a dia, qualidade equilibrada |
| claude-haiku-4-5-20251001 | gpt-5.4 | Baixo | Respostas rápidas, tarefas simples |
Claude Code
Use Claude Code com Smart AIPI como backend. Compatibilidade total com uso de ferramentas, streaming e recursos agentic.
Configuração Automática
npx smart-aipi claude
Isso configura ~/.claude/settings.json e ~/.claude.json automaticamente. Se você já tiver o Claude Code configurado com uma conta Anthropic, ele vai mostrar a configuração manual em vez de sobrescrever.
Configuração Manual
Adicione em ~/.claude/settings.json:
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.smartaipi.com",
"ANTHROPIC_API_KEY": "sk-your-key",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "claude-haiku-4-5-20251001"
},
"model": "opus"
}
Depois adicione "hasCompletedOnboarding": true a ~/.claude.json para pular o assistente de configuração.
Depois de editar as configurações, reinicie o Claude Code para que as alterações tenham efeito. Se você já tiver o Claude Code conectado a uma conta Anthropic real, definir essas env vars vai sobrescrever essa conexão - use um .claude/settings.json no nível do projeto para manter ambos.
O Que Cada Configuração Faz
"model": "opus"— Modelo principal. Usa claude-opus-4-6 (alto reasoning) para todas as tarefas principais.ANTHROPIC_DEFAULT_HAIKU_MODEL— Modelo de background. Usa claude-haiku-4-5 (baixo reasoning) para tarefas rápidas em background, como indexação de arquivos.- Alterne entre modelos no meio da sessão com
/model sonnet,/model opus, ou/model haiku.
| Apelido | Modelo Claude | Back-end | Raciocínio |
|---|---|---|---|
| opus | claude-opus-4-6 | gpt-5.4 | Alto |
| sonnet | claude-sonnet-4-5-20250929 | gpt-5.4 | Médio |
| haiku | claude-haiku-4-5-20251001 | gpt-5.4 | Baixo |
OpenCode
Use Smart AIPI como backend do OpenCode via SDK compatível com OpenAI.
Configuração
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"smart-aipi": {
"npm": "@ai-sdk/openai-compatible",
"name": "Smart AIPI",
"options": {
"baseURL": "https://api.smartaipi.com/v1",
"apiKey": "YOUR_API_KEY"
},
"models": {
"gpt-6-astra": {
"name": "GPT-6 Astra",
"reasoning": true,
"limit": { "context": 400000, "output": 128000 }
},
"gpt-5.3-codex": {
"name": "GPT-5.3 Codex",
"reasoning": true,
"limit": { "context": 400000, "output": 128000 }
},
"gpt-5.2-codex": {
"name": "GPT-5.2 Codex",
"reasoning": true,
"limit": { "context": 400000, "output": 128000 }
},
"gpt-5-codex": {
"name": "GPT-5 Codex",
"reasoning": true,
"limit": { "context": 400000, "output": 128000 }
}
}
}
},
"model": "smart-aipi/gpt-6-astra"
}
Códice CLI
Use o Smart AIPI com a ferramenta Codex CLI da OpenAI. Três arquivos precisam ser configurados.
Configuração Automática
npx smart-aipi codex
Isso configura automaticamente os três arquivos abaixo. Depois de executar, adicione model_reasoning_effort à sua configuração (veja o passo 2).
Configuração Manual
Configure estes três arquivos:
1. Chave API — ~/.codex/auth.json
{
"auth_mode": "apikey",
"OPENAI_API_KEY": "sk-your-key"
}
2. Modelo e Reasoning — ~/.codex/config.toml
Sempre inclua model_reasoning_effort - obrigatório para modelos personalizados.
Sem isso, o Codex usa como padrão nenhum reasoning e não vai funcionar corretamente. Use "high" para melhores resultados.
model = "gpt-6-astra"
model_reasoning_effort = "high"
Níveis de reasoning válidos: low, medium, high (recomendado), xhigh.
3. Variáveis de Ambiente — ~/.zshrc
# Smart AIPI
export OPENAI_API_KEY="sk-your-key"
export OPENAI_BASE_URL="https://api.smartaipi.com/v1"
Depois de editar o perfil do seu shell, reinicie o terminal ou execute source ~/.zshrc para que as alterações tenham efeito.
Depois use o Codex normalmente:
codex "fix this bug"
Guia de Velocidade do Codex WebSocket
O modo WebSocket geralmente é mais rápido para fluxos de programação agentic com muitas tool calls. Em vez de se reconectar repetidamente por HTTP e reenviar envelopes completos da requisição, o Codex mantém uma única conexão ativa e envia turnos incrementais, o que reduz a sobrecarga de continuação.
Ative WebSockets no Codex
Use a feature flag WebSocket v2 em ~/.codex/config.toml: ~/.codex/config.toml:
model = "gpt-6-astra"
model_reasoning_effort = "high"
[features]
responses_websockets_v2 = true
Equivalente em CLI:
codex --enable responses_websockets_v2
Builds mais antigas podem usar a flag legada:
[features]
responses_websockets = true
Comportamento Conhecido do Homebrew
Em algumas builds distribuídas via Homebrew, os turnos via WebSocket podem travar durante tarefas longas e depois voltar silenciosamente para HTTP. Vimos isso especialmente em loops complexos de tool calls. Recompilar a partir do código open-source com as correções abaixo melhorou tanto a estabilidade quanto a velocidade.
Pós-Merge: Corrija o Bug de WebSocket no Open-Source
Depois de fazer merge da sua branch, use este checklist para garantir que a correção está no seu binário local:
# 1) Pull merged main
git checkout main
git pull --ff-only
# 2) Confirm websocket flags exist
codex features list | rg responses_websockets
# 3) Build and install
cd codex-rs
cargo build --release
install -m 0755 target/release/codex ~/.local/bin/codex-beta
# 4) Run with websocket enabled
CODEX_RS_RESPONSES_WS=true \
OPENAI_BASE_URL=https://api.smartaipi.com/v1 \
~/.local/bin/codex-beta --enable responses_websockets_v2
Se precisar aplicar o patch manualmente, verifique se estas correções no nível de código estão presentes:
# A) Build websocket request with IntoClientRequest so required headers are set
let mut request = url.as_str().into_client_request()?;
request.headers_mut().extend(headers);
# B) Ensure TLS roots are enabled for tokio-tungstenite in Cargo.toml
tokio-tungstenite = { version = "...", features = ["rustls-tls-native-roots"] }
Cursor e Cline
Use Smart AIPI com o Cursor IDE ou a extensão Cline para VS Code.
Cursor
- Abra as Configurações do Cursor
- Vá para a aba
Modelsaba - Clique em
+ Add Model - Defina a Base URL:
https://api.smartaipi.com/v1 - Digite sua API key
- Modelo:
gpt-6-astra
Cline (VS Code)
- Abra as configurações do Cline no VS Code
- Selecione
OpenAI Compatible - Base URL:
https://api.smartaipi.com/v1 - Digite sua API key
- Modelo:
gpt-6-astra
Bater papo
Use o Smart AIPI Chat em chat.smartaipi.com. para fluxos de trabalho com texto, imagem, vídeo, código, busca e voz.
Recursos
- ✓ Bater papo — Conversas de texto de propósito geral com modelos Smart AIPI.
- ✓ Imagens — Gere e edite imagens a partir de prompts.
- ✓ Vídeo — Gere vídeos a partir de texto ou imagens.
- ✓ Código — Assistência e edição de código no navegador.
- ✓ Busca — Use busca na web para respostas fundamentadas.
- ✓ Voz — Converse com o modelo usando entrada e respostas por voz.
Primeiros Passos
- 1. Abra chat.smartaipi.com
- 2. Entre ou crie uma conta.
- 3. Comece a conversar com texto, imagens, vídeo, código, busca ou voz.
Cobrança: O uso é cobrado dos seus créditos Smart AIPI.
Testador de API
Teste a API diretamente do seu navegador: