Documentazione
Smart AIPI fornisce API compatibili sia con OpenAI sia con Anthropic. Usa il nostro servizio con qualsiasi SDK, strumento o app OpenAI o Anthropic esistente semplicemente cambiando la base URL. Nessuna modifica al codice richiesta.
OpenAI Base URL
https://api.smartaipi.com/v1
Anthropic Base URL
https://api.smartaipi.com
Strumenti CLI e MCP
Smart AIPI offre due pacchetti npm per aiutare gli sviluppatori a lavorare con i propri account:
Installa entrambi
npm install -g smart-aipi @smart-aipi/mcp
Installa singolarmente
npm install -g smart-aipi
npm install -g @smart-aipi/mcp
Autenticazione
Tutte le richieste API richiedono una API key. La stessa chiave funziona con entrambi i metodi di autenticazione:
Authorization: Bearer YOUR_API_KEY
x-api-key: YOUR_API_KEY
Guida alla migrazione
La migrazione richiede meno di un minuto. La nostra API è compatibile al 100% con endpoint OpenAI e Anthropic.
Da OpenAI
Ottieni la tua API key Smart AIPI
Registrati e crea una API key dalla tua dashboard.
Cambia la base URL
Sostituisci https://api.openai.com/v1 con https://api.smartaipi.com/v1
Aggiorna la tua API key
Usa la tua chiave Smart AIPI invece della tua chiave OpenAI. Tutto qui!
Da Anthropic
Ottieni la tua API key Smart AIPI
Registrati e crea una API key dalla tua dashboard.
Cambia la base URL
Sostituisci https://api.anthropic.com con https://api.smartaipi.com
Aggiorna la tua API key
Usa la tua chiave Smart AIPI invece della tua chiave Anthropic. I tuoi nomi modello Claude esistenti funzionano così come sono.
Il tuo codice esistente, gli SDK e le app che usano Anthropic Messages API funzioneranno senza alcuna modifica al codice. I nomi dei modelli Claude (claude-opus-4-6, claude-sonnet-4-5-20250929, claude-haiku-4-5-20251001) vengono instradati automaticamente verso modelli GPT-5.4 ad alte prestazioni. Ogni risposta include un x-actual-model header che mostra il vero modello backend per totale trasparenza.
Completamenti della chat
Crea una chat completion per i messaggi e il modello forniti. Questo è l'endpoint principale per interagire con i modelli linguistici.
Parametri del body della richiesta
| Parametro | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
| model | corda | Sì | ID del modello da usare (es. "gpt-6-astra", "gpt-5.6-sol") |
| messages | vettore | Sì | Array di oggetti messaggio con ruolo e contenuto |
| temperature | numero | NO | Temperatura di campionamento (0-2). Più alta = più casuale. Predefinito: 1 |
| max_tokens | intero | NO | Numero massimo di tokens da generare nella risposta |
| top_p | numero | NO | Nucleus sampling. Considera i tokens con probabilità top_p. Predefinito: 1 |
| frequency_penalty | numero | NO | Penalizza i tokens in base alla frequenza (-2 a 2). Predefinito: 0 |
| presence_penalty | numero | NO | Penalizza i tokens in base alla presenza (-2 a 2). Predefinito: 0 |
| stop | string/array | NO | Sequenze di stop. Fino a 4 sequenze in cui la generazione si interrompe. |
| stream | booleano | NO | Abilita risposte in streaming via SSE. Predefinito: false |
Ruoli dei messaggi
system- system - Imposta il comportamento/persona dell'assistenteuser- user - Messaggi dell'utenteassistant- assistant - Risposte precedenti dell'assistente
Esempi di codice
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
Abilita lo streaming per ricevere i tokens mentre vengono generati tramite Server-Sent Events (SSE). Questo offre un'esperienza utente migliore per risposte lunghe.
Imposta "stream": true nella tua richiesta per abilitare lo streaming.
Esempio di 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="")
Sforzo di reasoning
Controlla la profondità del reasoning con il parametro reasoning_effort per i modelli GPT-5.
Smart AIPI usa come predefinito reasoning.effort = "high" per tutte le richieste Responses API.
Dopo test approfonditi, abbiamo scoperto che high è il miglior sforzo di reasoning per l'uso pratico: fornisce tool-use e analisi profondi e affidabili senza il costo in latenza di xhigh. Puoi cambiarlo impostando esplicitamente lo sforzo di reasoning nella tua richiesta.
Smart AIPI usa come predefinito store = false per tutte le richieste Responses API e WebSocket.
L'API upstream richiede store: false per GPT-5.4 e modelli più recenti. Se imposti esplicitamente store: true nelle tue richieste, riceverai un errore "Store must be set to false". Rimuovilo o impostalo su false.
Modelli supportati
API Responses
gpt-5.4, gpt-5.3, gpt-5.1, gpt-5 e tutte le varianti Codex
Solo Chat Completions
gpt-5.4-nano — il supporto al reasoning è disponibile solo su /v1/chat/completions .
Livelli di sforzo di reasoning
none- Nessun reasoning. Salta completamente il thinking.low- Reasoning minimo. Ottimo per attività semplici.medium- Velocità e profondità bilanciate.high- Analisi approfondita per problemi complessi. (Predefinito Smart AIPI)xhigh- Extra alto. Massima profondità di reasoning per i problemi più difficili.
Fast Mode (elaborazione prioritaria)
Usa service_tier: "priority" per elaborazione prioritaria con latenza inferiore. È quello che usa il comando /fast in Codex CLI. Non cambia la profondità del reasoning: ottieni la stessa qualità, più velocemente.
Prezzi: L'elaborazione prioritaria viene fatturata a 1,5x la tariffa standard. Per esempio, l'output di GPT-5.4 costa normalmente $3.75/1M tokens - con priorità costa $5.625/1M tokens.
response = client.responses.create(
model="gpt-6-astra",
input="Refactor this function",
service_tier="priority" # priority processing, lower latency
)
API 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 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
)
Generazione immagini
Genera immagini da prompt testuali usando il nostro endpoint di generazione immagini.
/v1/images/variations ) non sono ancora supportate. Le modifiche immagine sono disponibili tramite /v1/images/edits.
Parametri del body della richiesta
| Parametro | Tipo | Descrizione |
|---|---|---|
| prompt | corda | Descrizione testuale dell'immagine da generare (obbligatoria) |
| model | corda | "gpt-image-2.5-flare" (frontier), "gpt-image-2.5-sunburst" oppure "gpt-image-2". Predefinito: "gpt-image-2.5-flare" |
| n | intero | Numero di immagini da generare (1-10). Predefinito: 1 |
| size | corda | "1024x1024", "1024x1792" oppure "1792x1024". Predefinito: "1024x1024" |
| quality | corda | "standard" oppure "hd". Predefinito: "standard" |
Modelli disponibili
gpt-image-2.5-flare- Modello frontier, qualità massima (predefinito)gpt-image-2.5-sunburst- Modifica di precisione e lavoro creativo premium (generazione più lenta)gpt-image-latest- Alias per gpt-image-2.5-flaregpt-image-2- Modello di punta della generazione precedentegpt-image-1.5- Modello di punta meno recente (supporta gli sfondi trasparenti)gpt-image-1- Generazione immagini in qualità completagpt-image-1-mini- Immagini più rapide e più piccole
Esempio
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))
Modifica immagini
Modifica immagini esistenti usando un prompt testuale. Accetta sia JSON (stringa base64) sia multipart/form-data (upload file), quindi gli SDK OpenAI funzionano subito.
Parametri del body della richiesta
| Parametro | Tipo | Descrizione |
|---|---|---|
| prompt | corda | Descrizione testuale della modifica desiderata (obbligatoria) |
| image | corda | Immagine codificata in base64 da modificare (obbligatoria) |
| model | corda | "gpt-image-2.5-flare" (predefinito), "gpt-image-2.5-sunburst" oppure "gpt-image-2" |
| n | intero | Numero di immagini modificate da generare (1-10). Predefinito: 1 |
| size | corda | "1024x1024", "1024x1792" oppure "1792x1024". Predefinito: "1024x1024" |
| quality | corda | "low", "medium", "high" o "auto". Predefinito: "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.
Esempio
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 con WebSocket
WebSocket sono un'API ampiamente supportata per il trasferimento dati in tempo reale, e una scelta eccellente per connettersi alla Smart AIPI Realtime API in applicazioni server-to-server.
In un'integrazione server-to-server, il tuo sistema backend si connette via WebSocket direttamente alla Realtime API. Usa un API chiave standard per autenticare la connessione, dato che il token è disponibile solo sul tuo server backend sicuro.
Connettiti via WebSocket
Qui sotto trovi diversi esempi di connessione via WebSocket. Oltre a usare l'URL WebSocket, dovrai passare un header di autenticazione usando la tua 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);
});
Invio e ricezione eventi
Le sessioni sono gestite usando eventi JSON inviati dal client e dal server sulla connessione WebSocket. Incapsula la tua richiesta in un envelope response.create :
| Evento | Direzione | Descrizione |
|---|---|---|
| response.create | Cliente | Invia una richiesta (incapsula modello, input e parametri) |
| response.created | Server | Sessione accettata, elaborazione avviata |
| response.output_text.delta | Server | Blocco di testo in streaming |
| response.completed | Server | Evento finale con risposta completa e utilizzo |
| response.failed | Server | Evento finale che indica un errore |
"store": false nell'envelope della risposta. La connessione resta attiva tra più turni: invia ulteriori frame response.create senza riconnetterti.
Elenco modelli
Recupera un elenco di tutti i modelli disponibili. Usa questo endpoint per scoprire dinamicamente quali modelli sono disponibili per il tuo account.
Formato della risposta
{
"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
]
}
Esempio
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)
Modelli disponibili
Serie GPT
- gpt-6-astra Ultimi
- 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 solo completions
Serie Codex
- gpt-5.3-codex
- gpt-5.2-codex
- gpt-5.2
- gpt-5.1
Anthropic Messaggi API
Compatibilità completa con Anthropic Messages API. Usa qualsiasi SDK Anthropic, Claude Code o app che parli il protocollo Anthropic: basta cambiare la base URL.
Funzionalità supportate
- ✓ Streaming (protocollo completo Anthropic SSE event)
- ✓ Uso strumenti / function calling
- ✓ Messaggi di sistema (formati stringa e array)
- ✓ Input immagine (base64 e URL)
- ✓ Conteggio token (
/v1/messages/count_tokens) - ✓ Thinking esteso / sforzo di reasoning
Esempi di codice
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)
Mappatura modelli
I nomi dei modelli Claude sono accettati e instradati automaticamente a GPT-5.4 con livelli di reasoning differenziati. Ogni risposta include un x-actual-model header che mostra il vero modello backend.
| Modello Claude | Backend | Ragionamento | Ideale per |
|---|---|---|---|
| claude-opus-4-6 | gpt-5.4 | Alto | Reasoning complesso, architettura |
| claude-sonnet-4-5-20250929 | gpt-5.4 | Medio | Coding quotidiano, qualità bilanciata |
| claude-haiku-4-5-20251001 | gpt-5.4 | Basso | Risposte rapide, attività semplici |
Claude Code
Usa Claude Code con Smart AIPI come backend. Supporto completo per tool use, streaming e capacità agentiche.
Configurazione automatica
npx smart-aipi claude
Questo configura ~/.claude/settings.json e ~/.claude.json automaticamente. Se hai già Claude Code configurato con un account Anthropic, ti mostrerà la configurazione manuale invece di sovrascrivere.
Configurazione manuale
Aggiungi a ~/.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"
}
Poi aggiungi "hasCompletedOnboarding": true a ~/.claude.json per saltare il wizard di configurazione.
Dopo aver modificato le impostazioni, riavvia Claude Code affinché le modifiche abbiano effetto. Se hai già Claude Code collegato a un vero account Anthropic, impostare queste env vars sovrascriverà quella connessione: usa un .claude/settings.json a livello di progetto per mantenerle entrambe.
Cosa fa ogni impostazione
"model": "opus"— Modello principale. Usa claude-opus-4-6 (reasoning alto) per tutte le attività primarie.ANTHROPIC_DEFAULT_HAIKU_MODEL— Modello in background. Usa claude-haiku-4-5 (reasoning basso) per attività rapide in background come l'indicizzazione dei file.- Passa da un modello all'altro durante la sessione con
/model sonnet,/model opus, oppure/model haiku.
| Alias | Modello Claude | Backend | Ragionamento |
|---|---|---|---|
| opus | claude-opus-4-6 | gpt-5.4 | Alto |
| sonnet | claude-sonnet-4-5-20250929 | gpt-5.4 | Medio |
| haiku | claude-haiku-4-5-20251001 | gpt-5.4 | Basso |
OpenCode
Usa Smart AIPI come backend OpenCode tramite SDK compatibile con OpenAI.
Configurazione
{
"$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"
}
Codice CLI
Usa Smart AIPI con lo strumento Codex CLI di OpenAI. Devono essere configurati tre file.
Configurazione automatica
npx smart-aipi codex
Questo configura automaticamente tutti e tre i file qui sotto. Dopo averlo eseguito, aggiungi model_reasoning_effort alla tua configurazione (vedi passaggio 2).
Configurazione manuale
Configura questi tre file:
1. API key — ~/.codex/auth.json
{
"auth_mode": "apikey",
"OPENAI_API_KEY": "sk-your-key"
}
2. Modello e reasoning — ~/.codex/config.toml
Includi sempre model_reasoning_effort - obbligatorio per i modelli personalizzati.
Senza questo, Codex userà per default nessun reasoning e non funzionerà correttamente. Usa "high" per risultati migliori.
model = "gpt-6-astra"
model_reasoning_effort = "high"
Livelli di reasoning validi: low, medium, high (consigliato), xhigh.
3. Variabili d'ambiente — ~/.zshrc
# Smart AIPI
export OPENAI_API_KEY="sk-your-key"
export OPENAI_BASE_URL="https://api.smartaipi.com/v1"
Dopo aver modificato il profilo della shell, riavvia il terminal o esegui source ~/.zshrc affinché le modifiche abbiano effetto.
Poi usa Codex normalmente:
codex "fix this bug"
Guida alla velocità di Codex WebSocket
La modalità WebSocket è in genere più veloce per i flussi di coding agentico con molte chiamate agli strumenti. Invece di riconnettersi ripetutamente via HTTP e reinviare envelope di richiesta completi, Codex mantiene una connessione attiva e invia turni incrementali, riducendo l'overhead di continuazione.
Abilita WebSockets in Codex
Usa il feature flag WebSocket v2 in ~/.codex/config.toml: ~/.codex/config.toml:
model = "gpt-6-astra"
model_reasoning_effort = "high"
[features]
responses_websockets_v2 = true
Equivalente CLI:
codex --enable responses_websockets_v2
Le build più vecchie possono usare il flag legacy:
[features]
responses_websockets = true
Comportamento noto di Homebrew
In alcune build distribuite con Homebrew, i turni WebSocket possono bloccarsi durante task a lunga esecuzione e poi tornare silenziosamente a HTTP. Lo abbiamo notato soprattutto in loop complessi di tool-call. Ricompilare dal codice open-source con le correzioni qui sotto ha migliorato sia la stabilità sia la velocità.
Post-merge: correggi il bug WebSocket open-source
Dopo aver unito il tuo branch, usa questa checklist per assicurarti che la correzione sia presente nel tuo binario locale:
# 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 devi applicare la patch manualmente, verifica che siano presenti queste correzioni a livello di codice:
# 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
Usa Smart AIPI con Cursor IDE o con l'estensione VS Code di Cline.
Cursor
- Apri le impostazioni di Cursor
- Vai alla scheda
Modelsscheda - Clicca su
+ Add Model - Imposta Base URL:
https://api.smartaipi.com/v1 - Inserisci la tua API key
- Modello:
gpt-6-astra
Cline (VS Code)
- Apri le impostazioni di Cline in VS Code
- Seleziona
OpenAI Compatible - Base URL:
https://api.smartaipi.com/v1 - Inserisci la tua API key
- Modello:
gpt-6-astra
Chiacchierata
Usa Smart AIPI Chat su chat.smartaipi.com. per flussi di lavoro con testo, immagini, video, codice, ricerca e voce.
Funzionalità
- ✓ Chiacchierata — Conversazioni testuali generiche con i modelli Smart AIPI.
- ✓ Immagini — Genera e modifica immagini dai prompt.
- ✓ Video — Genera video da input testuali o immagini.
- ✓ Codice — Assistenza e modifica del codice nel browser.
- ✓ Ricerca — Usa la ricerca web per ottenere risposte fondate.
- ✓ Voce — Parla con il modello usando input e risposte vocali.
Per iniziare
- 1. Apri chat.smartaipi.com
- 2. Accedi o crea un account.
- 3. Inizia a chattare con testo, immagini, video, codice, ricerca o voce.
Fatturazione: L'utilizzo viene addebitato sui tuoi crediti Smart AIPI.
Tester API
Testa l'API direttamente dal browser: