Felo API PlatformFelo API Platform

Guide

Errori, limiti e tentativi

Leggi le risposte di errore e le intestazioni dei limiti di velocità, riprova in sicurezza e diagnostica i guasti comuni.

Ogni API Felo restituisce un corpo di errore JSON con un codice di errore stabile e un request ID. Leggi prima lo stato HTTP, poi il codice, poi il messaggio.

Struttura dell'errore

Le risposte attuali in produzione usano lo stato HTTP come status:

{
  "status": 401,
  "code": "UNAUTHORIZED",
  "message": "Invalid API Key",
  "request_id": "202610221444486982113280416060637185"
}
CampoSignificato
statusCodice di stato HTTP, ripetuto nel corpo
codeCodice di errore leggibile dalla macchina
messageSpiegazione leggibile da una persona
request_idIdentificatore opaco di questa richiesta; includilo nelle richieste al supporto

Alcuni esempi di endpoint più vecchi usano status: "error" e una stringa di codice diversa. Basa la logica sullo stato HTTP e su code, non sul testo esatto di message.

Codici comuni

HTTPCodiceCosa significaCosa fare
400Codice di convalida specifico dell'endpointUn parametro manca o non è validoCorreggi la richiesta; non riprovare senza modifiche
401UNAUTHORIZEDChiave API mancante, non valida, scaduta o revocataInvia Authorization: Bearer $FELO_API_KEY; ruota la chiave se è revocata
402INSUFFICIENT_CREDITSCrediti di servizio insufficientiRicarica in Console Billing, poi riprova
404Specifico dell'endpointModello, attività o route sconosciutiControlla l'ID del modello o dell'attività e il percorso dell'endpoint
429RATE_LIMITEDÈ stato superato un rate limitAttendi Retry-After, poi riprova
5xxCHAT_FAILED, *_FAILED, SERVICE_UNAVAILABLEErrore upstream o del servizioRiprova con backoff; contatta il supporto se persiste

I riferimenti degli endpoint elencano i codici specifici di quell'endpoint. Inizia dagli errori della Chat API o dal riferimento dell'endpoint che stai chiamando.

Endpoint di generazione dei modelli

POST /api/v1/images/generations e POST /api/v1/videos/generations restituiscono gli errori a livello di endpoint nella struttura OpenAI invece che in quella sopra:

{
  "error": {
    "message": "Model kind does not match this generation endpoint",
    "type": "invalid_request_error",
    "param": null,
    "code": "model_kind_mismatch"
  }
}

Il request ID si trova nell'header di risposta X-Request-Id, non nel corpo. Una richiesta rifiutata non crea un'attività. Una volta che un'attività esiste, la maggior parte degli errori arriva come stato terminale dell'attività in una risposta 200 anziché come errore HTTP: controlla status per failed o interrupted, poi leggi error.message. Vedi Generazione di immagini e Attività asincrone.

Request ID

I corpi di errore Felo includono request_id. Registralo insieme all'endpoint, allo stato HTTP, al codice di errore, all'ID del modello e all'ID dell'attività. Non registrare mai la chiave API completa.

La Model API accetta anche un header di richiesta facoltativo X-Request-Id. Quando ne invii uno, viene restituito in risposta per la diagnostica, così puoi correlare i tuoi log con una richiesta. Se non ne invii uno, usa il request_id restituito.

Rate limit

/v2/chat è l'unico endpoint Felo con rate limit applicati documentati:

  • Per chiave API, finestra di 1 minuto.
  • Per utente, finestra di 1 minuto.
  • Per utente, finestra di 1 ora.

Gli utenti con un abbonamento Felo a pagamento attivo, compresi gli abbonamenti enterprise, ne sono esenti e non ricevono header X-RateLimit-*. Se lo stato dell'abbonamento non può essere verificato, i limiti si applicano comunque.

HeaderSignificato
X-RateLimit-LimitLimite della dimensione più restrittiva attualmente in vigore
X-RateLimit-RemainingQuota rimanente minima tra le tre dimensioni
X-RateLimit-ResetTimestamp Unix in secondi del reset della finestra corrente
Retry-AfterIn caso di 429, il ritardo consigliato in secondi

Gli altri endpoint /v2/** attualmente non hanno rate limit applicati. Le richieste alla Model API possono comunque essere limitate dal provider upstream, cosa che può manifestarsi come 429.

Non inserire limiti numerici nel codice. Leggi gli header di ogni risposta.

Politica di retry

SituazioneRiprovare?
400, 401, 402, 404No. Correggi prima la richiesta, la chiave o il saldo.
429Sì, dopo Retry-After o X-RateLimit-Reset.
5xx, timeout, connessioni azzerateSì, con backoff esponenziale e jitter.
Connessione di streaming caduta a metà rispostaRiprova solo se la tua applicazione tollera una generazione duplicata.

Ciclo consigliato:

  1. Riprova solo richieste idempotenti o sicure da ripetere.
  2. Usa il backoff esponenziale: parti da circa 1 secondo, raddoppia e fermati a 30 secondi.
  3. Aggiungi jitter casuale, così i client non riprovano tutti insieme.
  4. Fermati dopo un numero ridotto di tentativi e segnala l'errore.
  5. In caso di 429, rispetta Retry-After invece del tuo intervallo.

Sequenza di debug

  1. Controlla che la chiave sia presente e non revocata.
  2. Chiama GET /api/v1/models con la stessa chiave per confermare l'autenticazione.
  3. Invia la richiesta valida più piccola all'endpoint di destinazione.
  4. Aggiungi streaming, strumenti o input di grandi dimensioni uno alla volta.
  5. Per il lavoro asincrono, controlla lo stato dell'attività prima di inviare di nuovo.

Correlati