Felo API PlatformFelo API Platform

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.

SuperficieURL di baseA che serve
API dei modelliopenapi.felo.ai/api/v1 · openapi.felo.ai/apiChiamare direttamente un modello di linguaggio, immagine, video o decisione
API datiopenapi.felo.ai/v1/betaChiamare un provider dati o di ricerca di terze parti per nome
Felo APIsopenapi.felo.ai/v2Workflow 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 documentazione

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

EndpointProtocolloRestituisce
POST /api/v1/chat/completionsOpenAI Chat CompletionsStream o una risposta
POST /api/v1/responsesOpenAI ResponsesStream o una risposta
POST /api/v1/messagesAnthropic MessagesStream o una risposta
POST /api/v1/images/generationsInvolucro immagine di OpenAIUn task_id da interrogare
POST /api/v1/videos/generationsInvolucro video di OpenAIUn task_id da interrogare
POST /api/v1/decisionsSchema decisionale FeloRisposte 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_kindEndpoint
chatResponses, Chat Completions o Messages, a seconda di ciò che il modello supporta
image_generationPOST /api/v1/images/generations
video_generationPOST /api/v1/videos/generations
decisionsPOST /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[].code del 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.

Leggi la documentazione

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 crediti

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

StatoCodiceCosa fare
401UNAUTHORIZEDCorreggi o rigenera la chiave
402INSUFFICIENT_CREDITSRicarica nella fatturazione della console, poi rinvia
404dipende dall'endpointControlla l'ID del modello, del task o la rotta
429RATE_LIMITEDAttendi Retry-After, poi riprova
5xxCHAT_FAILED, SERVICE_UNAVAILABLERiprova 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.

Leggi la documentazione

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, result

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

Leggi la documentazione

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.

Tutte le API

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.