Gateway LLM
Un gateway LLM con il livello dati incluso
Tre URL di base, una chiave, un saldo. Chat, immagini, video e modelli decisionali con l'SDK che usi già; ricerca, documenti e slide sugli stessi crediti — a partire da un decimo del prezzo ufficiale del provider.
10%
Tariffa di partenza, rispetto al prezzo ufficiale dell'API del provider
5,000+
API nello stesso catalogo
Di solito un gateway ha una superficie. Questo ne ha tre.
Condividono account, chiave e saldo, ma rispondono a domande diverse e vivono su URL di base diverse. Sapere quale stai chiamando è tutto il punto.
| Superficie | URL di base | A che serve |
|---|---|---|
| API dei modelli | openapi.felo.ai/api/v1 · openapi.felo.ai/api | Chiamare direttamente un modello di linguaggio, immagine, video o decisione |
| API dati | openapi.felo.ai/v1/beta | Chiamare un provider dati o di ricerca di terze parti per nome |
| Felo APIs | openapi.felo.ai/v2 | Workflow proprietari di Felo: ricerca, ufficio, estrazione, conoscenza |
Una chiave copre tutte e tre. Una ricarica acquista crediti di servizio in dollari, e la chiamata al modello, la chiamata all'API dati e il workflow Felo escono dallo stesso saldo — nessun account separato per provider.
Leggi la documentazioneSei endpoint, non uno
Tutto ciò che sta sotto /api/v1 è una chiamata a un modello, ma il tipo di modello decide quale endpoint può rispondere — e ognuno restituisce il proprio formato.
| Endpoint | Protocollo | Restituisce |
|---|---|---|
POST /api/v1/chat/completions | OpenAI Chat Completions | Stream o una risposta |
POST /api/v1/responses | OpenAI Responses | Stream o una risposta |
POST /api/v1/messages | Anthropic Messages | Stream o una risposta |
POST /api/v1/images/generations | Involucro immagine di OpenAI | Un task_id da interrogare |
POST /api/v1/videos/generations | Involucro video di OpenAI | Un task_id da interrogare |
POST /api/v1/decisions | Schema decisionale Felo | Risposte tipizzate, senza stream |
Le tre superfici di chat sono implementazioni native, non un livello di traduzione: ognuna emette eventi nel proprio protocollo, quindi analizzi lo stream esattamente come oggi.
Scegli l'endpoint in base al tipo di modello, non a caso
Ogni modello del catalogo ha un model_kind, e il tipo decide quale endpoint può chiamarlo. Scoprirlo è gratis: legge il catalogo locale.
# discover before you call — free, reads the catalog
GET /api/v1/models # every kind, with channels and rates
GET /api/v1/models/{model_id} # one model, in detail
GET /api/v1/videos/models # video_generation only
GET /api/v1/decisions/models # decisions only| model_kind | Endpoint |
|---|---|
chat | Responses, Chat Completions o Messages, a seconda di ciò che il modello supporta |
image_generation | POST /api/v1/images/generations |
video_generation | POST /api/v1/videos/generations |
decisions | POST /api/v1/decisions |
Filtra con ?provider= per vedere un solo provider, o con ?exclude_video_and_decisions=true per nascondere tutto tranne chat e immagini. Essere nel catalogo non è una promessa: un modello video non risponde a una richiesta di chat, e l'API restituisce model_kind_mismatch.
Rotta predefinita, o un header per scegliere il provider
Un modello può essere servito da più canali upstream, ciascuno con il suo provider e la sua tariffa pubblicata. Senza l'header sceglie la piattaforma; con X-Felo-Channel scegli tu.
# first channel only — no automatic fallback
X-Felo-Channel: claude-cc
X-Felo-Channel: claude-cc,anthropic # ordered selection, not a retry list- Il valore è un elenco ordinato di codici canale pubblici presi da
channels[].codedel modello, convalidato nell'ordine in cui lo scrivi. - Viene contattato solo il gruppo provider del primo canale, e paghi la tariffa di quel canale.
- Non c'è commutazione automatica. Un elenco di canali è una scelta, non una politica di retry — se un provider fallisce, rinvia dalla tua applicazione con un altro canale.
X-Felo-Channel funziona sui sei endpoint di generazione qui sopra. Non si applica all'API dati né alle Felo APIs: quelle vanno al provider che indichi nella richiesta.
Quanto costa davvero una chiamata
Le chiamate ai modelli si fatturano a token — input, output e cache — con il moltiplicatore di sconto del canale applicato. Le tariffe sono pubblicate per milione di token per leggibilità, ma la fatturazione usa la precisione a token dello snapshot prezzi corrente: una richiesta breve non viene mai arrotondata al milione.
- Le tariffe cache valgono solo se la risposta del protocollo segnala uso della cache; un modello che non lo segnala fattura tutto a tariffa input.
- La ricerca web che il servizio del modello esegue e segnala costa $0.01 per ricerca.
- Alcuni modelli scaglionano in base alla dimensione del prompt: Claude Haiku 5.5 costa $0.10 in input e $0.50 in output per milione di token fino a un prompt di 100K token, poi $0.50 e $2.50 sull'intera richiesta.
- La prima ricarica è di $1. Nessun abbonamento, nessun costo per utente, nessun minimo: una chiave inattiva non costa nulla.
Le chiamate all'API dati e i workflow Felo escono dallo stesso saldo, ognuno con la propria base pubblicata: per richiesta riuscita, per elemento restituito o in base all'uso reale.
Tariffe e creditiDue limiti che si somigliano e non lo sono
Saldo esaurito restituisce 402 INSUFFICIENT_CREDITS. Chiamate troppo rapide restituiscono 429 RATE_LIMITED. Aspettare risolve il secondo e mai il primo.
| Stato | Codice | Cosa fare |
|---|---|---|
| 401 | UNAUTHORIZED | Correggi o rigenera la chiave |
| 402 | INSUFFICIENT_CREDITS | Ricarica nella fatturazione della console, poi rinvia |
| 404 | dipende dall'endpoint | Controlla l'ID del modello, del task o la rotta |
| 429 | RATE_LIMITED | Attendi Retry-After, poi riprova |
| 5xx | CHAT_FAILED, SERVICE_UNAVAILABLE | Riprova con backoff esponenziale e jitter |
Oggi solo /v2/chat documenta limiti rigidi. Le chiamate ai modelli possono anche essere limitate upstream, e questo appare come 429 — leggi X-RateLimit-* e Retry-After invece di fissare numeri. Ogni risposta porta un request_id, e l'header X-Request-Id che invii torna indietro identico, così i tuoi log e i nostri combaciano.
Immagini e video si completano in background
Entrambi gli endpoint di generazione restituiscono un task_id invece del risultato. Invia, interroga, ritira — e nota che, una volta creato il task, la maggior parte degli errori arriva come 200 con uno stato terminale, non come errore HTTP.
# submit, then poll the task
POST /api/v1/images/generations → task_id
GET /api/v1/images/generations/{id} → status, result
POST /api/v1/videos/generations → task_id
GET /api/v1/videos/generations/{id} → status, resultLeggi lo stato prima del risultato: failed e interrupted sono anch'essi risposte, e error.message dice perché. Un 402 all'invio significa che il task non è mai stato creato. SuperAgent funziona diversamente: restituisce uno stream_key e spinge gli eventi via SSE, quindi non c'è niente da interrogare.
Cambia l'URL di base, tieni il client
Entrambi gli SDK funzionano senza modifiche appena l'URL di base punta qui. npx feloapi-cli setup scrive la stessa configurazione per Claude Code e Codex.
# OpenAI SDK
base_url = "https://openapi.felo.ai/api/v1"
# Anthropic SDK — one level up; the SDK appends /v1/messages
base_url = "https://openapi.felo.ai/api"
# pin a provider (optional)
default_headers = {"X-Felo-Channel": "claude-cc"}Gli ID dei modelli non coincidono tra provider. Scegli dal catalogo prima di cambiare l'URL di base, altrimenti la prima chiamata risponde 404.
La metà che un gateway di solito ti lascia fare
Un gateway LLM instrada chiamate ai modelli. Qui la stessa chiave raggiunge anche un catalogo da 5,000+ API — così il passo di ricerca del tuo agente, le slide che produce e il documento che rilegge si pagano con gli stessi crediti, non con tre provider in più.
- Search
- PPT Task
- SuperAgent
- Web Fetch
- X Search
- Mindmap
- Landing Page Task
- LiveDoc
- YouTube Subtitling
Le chiamate all'API dati vanno a provider nominati sotto /v1/beta — Tavily, Exa, Apollo e il resto del catalogo — ognuno con la propria base pubblicata.
Dove il gateway si ferma
- Nessuna commutazione automatica tra canali: la logica di retry resta nella tua applicazione, di proposito.
- Essere nel catalogo non garantisce compatibilità; ogni tipo di modello ha una sola superficie di chiamata.
- Non esiste un limite di richieste di piattaforma documentato per le chiamate ai modelli, ma quello del provider upstream vale comunque.
- I crediti sono prepagati, non rimborsabili e non prelevabili: ricarica quanto pensi di spendere.
Sei domande sul gateway LLM
Cos'è un gateway LLM?
Un punto d'ingresso davanti a molti provider di modelli, così il tuo codice parla con un URL di base, una chiave e un saldo invece che con una dozzina di SDK. Un gateway AI fa lo stesso; questo vende in più le API dati che serve a un agente.
Posso tenere il mio SDK OpenAI o Anthropic?
Sì. Chat Completions e Responses hanno la forma di OpenAI e Messages è nativo. Gli URL di base sono https://openapi.felo.ai/api/v1 e https://openapi.felo.ai/api — un livello sopra, perché quell'SDK aggiunge da sé /v1/messages.
Come so quale modello chiamare?
GET /api/v1/models elenca tutti i tipi con i loro canali e tariffe; i modelli video e decisionali hanno liste proprie. Leggi il model_kind e chiama l'endpoint corrispondente. Essere nell'elenco non garantisce che ogni endpoint accetti quel modello.
C'è una commutazione se un provider cade?
No, ed è voluto. Un elenco di canali è una scelta, non una politica di retry: solo il primo viene contattato. La commutazione appartiene alla tua applicazione, dove si vedono l'errore, il budget e il ripiego che vuoi davvero.
Quanto costa?
Ogni modello ha una tariffa Felo che parte da un decimo del prezzo ufficiale del provider, e il canale che fissi determina la tariffa che paghi. Prepagato, addebitato per chiamata, prima ricarica da $1, nessun abbonamento.
Posso chiamare anche immagini, video e API dati?
Sì. Una chiave raggiunge i modelli di chat, immagine, video e decisione e il catalogo da 5,000+ API dietro /v1/beta — tutto si paga con gli stessi crediti.
Provalo con una chiamata
Crea una chiave, ricarica e punta l'SDK che già usi a un URL di base.