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:

smart-aipi — Uno strumento CLI per gestire programmaticamente il tuo account, le API key e l'utilizzo dal terminal.
@smart-aipi/mcp — Un server MCP che dà agli agent AI accesso diretto al tuo account Smart AIPI.

Installa entrambi

Terminale
npm install -g smart-aipi @smart-aipi/mcp

Installa singolarmente

Solo CLI
npm install -g smart-aipi
Solo MCP
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:

Stile OpenAI (header Authorization)
Authorization: Bearer YOUR_API_KEY
Stile Anthropic (header x-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

1

Ottieni la tua API key Smart AIPI

Registrati e crea una API key dalla tua dashboard.

2

Cambia la base URL

Sostituisci https://api.openai.com/v1 con https://api.smartaipi.com/v1

3

Aggiorna la tua API key

Usa la tua chiave Smart AIPI invece della tua chiave OpenAI. Tutto qui!

Da Anthropic

1

Ottieni la tua API key Smart AIPI

Registrati e crea una API key dalla tua dashboard.

2

Cambia la base URL

Sostituisci https://api.anthropic.com con https://api.smartaipi.com

3

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.

POST /v1/chat/completions

Parametri del body della richiesta

Parametro Tipo Obbligatorio Descrizione
model corda ID del modello da usare (es. "gpt-6-astra", "gpt-5.6-sol")
messages vettore 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'assistente
  • user - user - Messaggi dell'utente
  • assistant - 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.

Limitazioni attuali: Le varianti immagine ( /v1/images/variations ) non sono ancora supportate. Le modifiche immagine sono disponibili tramite /v1/images/edits.
POST /v1/images/generations
Novità: gpt-image-2.5-flare e gpt-image-2.5-sunburst sono ora disponibili. I più recenti modelli di immagini di OpenAI sono disponibili: qualità superiore a gpt-image-2 con una latenza fino al 50% inferiore (flare), oltre a un controllo più preciso delle modifiche multi-turno per la creatività di produzione (sunburst). Le tariffe dei token non cambiano rispetto a gpt-image-2, quindi i prezzi qui sono identici: l'aggiornamento non costa nulla in più. Entrambi supportano generazioni, modifiche e inpainting con maschera, al 50% dei prezzi diretti di OpenAI. Leggi il post di rilascio.

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-flare
  • gpt-image-2 - Modello di punta della generazione precedente
  • gpt-image-1.5 - Modello di punta meno recente (supporta gli sfondi trasparenti)
  • gpt-image-1 - Generazione immagini in qualità completa
  • gpt-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.

Nota: Sono supportate solo modifiche a immagine singola. Input multi-immagine e campi mask non sono attualmente disponibili.
POST /v1/images/edits

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"
Multi-reference edits and mask inpainting are supported. Pass 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.

WSS wss://api.smartaipi.com/v1/responses

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
Importante: Le richieste WebSocket devono includere "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.

GET /v1/models

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.

POST /v1/messages

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

Un comando
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:

~/.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

~/.config/opencode/opencode.json
{
  "$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

Un comando
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

~/.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.

~/.codex/config.toml
model = "gpt-6-astra"
model_reasoning_effort = "high"

Livelli di reasoning validi: low, medium, high (consigliato), xhigh.

3. Variabili d'ambiente — ~/.zshrc

~/.zshrc (or ~/.bashrc)
# 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:

terminale
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.

Miglioramento osservato: Nelle nostre esecuzioni di coding ricche di tool, una build open-source ricompilata di Codex con fix WebSocket ha ridotto il tempo totale di esecuzione di circa il 30-40% rispetto alla modalità di continuazione HTTP.

Abilita WebSockets in Codex

Usa il feature flag WebSocket v2 in ~/.codex/config.toml: ~/.codex/config.toml:

~/.codex/config.toml
model = "gpt-6-astra"
model_reasoning_effort = "high"

[features]
responses_websockets_v2 = true

Equivalente CLI:

terminale
codex --enable responses_websockets_v2

Le build più vecchie possono usare il flag legacy:

fallback 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:

terminale
# 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:

correzioni del client websocket
# 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 Cursor

  1. Apri le impostazioni di Cursor
  2. Vai alla scheda Models scheda
  3. Clicca su + Add Model
  4. Imposta Base URL: https://api.smartaipi.com/v1
  5. Inserisci la tua API key
  6. Modello: gpt-6-astra

Cline Cline (VS Code)

  1. Apri le impostazioni di Cline in VS Code
  2. Seleziona OpenAI Compatible
  3. Base URL: https://api.smartaipi.com/v1
  4. Inserisci la tua API key
  5. 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. 1. Apri chat.smartaipi.com
  2. 2. Accedi o crea un account.
  3. 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:

Messaggio inviato

Ti risponderemo entro 2 giorni lavorativi.

Contatta il supporto

Hai una domanda o ti serve aiuto? Inviaci un messaggio e ti risponderemo entro 2 giorni lavorativi.