Questions fréquentes
Dépannage
Résolvez les problèmes d'authentification, de modèles, de streaming, de tâches et de limites de débit grâce à une liste de vérification par symptôme.
Commencez par le symptôme, puis appliquez le correctif. La plupart des échecs proviennent de l'URL de base, de la clé, de l'ID de modèle ou du solde.
Tableau par symptôme
| Symptôme | Cause probable | Correctif |
|---|---|---|
401 UNAUTHORIZED | Clé manquante, erronée, révoquée ou non envoyée | Envoyez Authorization: Bearer $FELO_API_KEY ; créez une nouvelle clé si elle a été révoquée |
402 INSUFFICIENT_CREDITS | Le solde ne couvre pas l'appel | Rechargez dans Console Billing |
| 404 sur chaque requête | L'URL de base inclut un chemin que l'endpoint ajoute déjà | Utilisez https://openapi.felo.ai/api/v1 pour les clients OpenAI et https://openapi.felo.ai/api pour les clients Anthropic |
| 404 sur un seul modèle | L'ID de modèle n'est pas public, ou l'endpoint ne le sert pas | Vérifiez l'ID de modèle sur la page des modèles et dans la documentation de l'endpoint |
Erreur 400 sur model ou max_tokens | Champ requis manquant, ou le modèle n'accepte pas cette forme de requête | Ajoutez max_tokens pour Messages ; retirez les champs non pris en charge |
| 429 | Limite de débit, ou limite d'un fournisseur upstream | Lisez Retry-After ; consultez Erreurs, limites et nouvelles tentatives |
| 5xx | Échec du service ou de l'upstream | Réessayez avec un backoff ; incluez request_id si le problème persiste |
| Le flux se connecte mais n'envoie rien | Un proxy met la réponse en mémoire tampon, ou le parseur d'événements attend un mauvais format | Lisez le flux de manière incrémentale ; désactivez la mise en mémoire tampon des réponses dans votre proxy |
| La tâche ne se termine jamais | Mauvais endpoint d'interrogation, ou un statut terminal non géré | Interrogez l'endpoint de statut propre à la tâche et arrêtez-vous sur les valeurs terminales |
| Les appels d'outils sont ignorés | Le modèle n'annonce pas cette capacité | Vérifiez supported_parameters dans le catalogue |
| Data API renvoie 404 | Le préfixe /v1/beta a été ajouté deux fois | Utilisez le chemin exactement tel qu'il est écrit dans la référence |
Authentification
Une clé révoquée renvoie un message qui indique le préfixe de la clé :
{
"status": 401,
"code": "UNAUTHORIZED",
"message": "API Key has been revoked (keyPrefix=...)"
}Liste de vérification :
- L'en-tête est
Authorization: Bearer <key>pour Model API et les Felo APIs. - Le Data API accepte aussi
X-API-Key: <key>. - La clé n'est pas entourée de guillemets, et il n'y a pas de saut de ligne final hérité d'une variable d'environnement copiée.
- L'environnement déployé a bien la variable définie ; une clé qui fonctionne en local peut manquer en production.
- La clé n'a pas été supprimée ni renouvelée. Une clé supprimée ou renouvelée ne peut plus être affichée ; créez-en une nouvelle.
Consultez Authentification pour la création de clés et les limites.
Pièges liés à l'URL de base
| Client | URL de base correcte |
|---|---|
| SDK OpenAI | https://openapi.felo.ai/api/v1 |
| SDK Anthropic | https://openapi.felo.ai/api |
| Endpoint de modèle brut | https://openapi.felo.ai/api/v1/chat/completions, /responses ou /messages |
| Data API | https://openapi.felo.ai/v1/beta |
API Felo /v2 | https://openapi.felo.ai/v2 |
Deux erreurs courantes :
- Ajouter
/chat/completionsà une URL de base que le SDK étend déjà. - Définir l'URL de base Anthropic sur
https://openapi.felo.ai/api/v1. Le SDK ajoute/v1/messages, la requête devient donc/api/v1/v1/messages.
Problèmes d'ID de modèle
Les ID de modèle sont les ID publics du catalogue, et non les noms internes du fournisseur upstream ni un nom d'affichage.
- Recherchez l'ID sur la page des modèles ou dans
GET /api/v1/models. - Confirmez que le modèle prend en charge le protocole que vous appelez (
supported_protocols). - Si vous avez épinglé un canal, confirmez que ce canal est publié et exécutable pour ce modèle. Un canal indisponible n'est pas un repli.
Consultez Canaux et routage fournisseur.
Problèmes de streaming
- Définissez
stream: truedans le corps de la requête, et non comme paramètre de requête. - Lisez le corps de la réponse comme un flux. Attendre la réponse complète annule l'intérêt du streaming.
- Certains proxys et plateformes serverless mettent les réponses en mémoire tampon. Désactivez la mise en mémoire tampon pour la route qui relaie la requête.
- Chat Completions diffuse
choices[0].delta, et nonchoices[0].message. Le contenu final arrive réparti sur de nombreux chunks. - Un flux peut se terminer sans événement terminal propre si la connexion est interrompue. Traitez une connexion interrompue comme une réponse incomplète.
Problèmes de tâches asynchrones
- Interrogez l'endpoint de statut qui appartient à la famille de tâches. Les workflows Felo utilisent
GET /v2/tasks/{task_id}/status; les tâches vidéo et image de modèles utilisent leurs propres endpoints de génération. - Arrêtez-vous sur chaque statut terminal, y compris les échecs et les expirations, pas seulement le succès.
- Les callbacks vidéo et image sont actuellement ignorés. N'attendez pas de webhook.
- Une URL de résultat peut être de courte durée. Demandez une nouvelle URL à l'endpoint de statut si un téléchargement expire.
- Vérifiez la tâche avant de soumettre à nouveau. Soumettre à nouveau une tâche en cours crée un doublon, et les deux sont facturés.
Consultez Tâches asynchrones.
Problèmes du Data API
- Conservez le chemin de méthode exact de la référence Data API.
- Les corps de requête sont propres à chaque fournisseur. Un champ qui fonctionne pour un fournisseur n'est pas garanti pour un autre.
- Une erreur de fournisseur peut arriver dans une réponse 4xx avec un message propre au fournisseur. Journalisez
request_idet le corps de la réponse.
Rappels de sécurité
- Ne placez jamais une clé API dans du code navigateur, un bundle d'application mobile ou un dépôt public. Gardez-la sur un serveur et faites passer les requêtes par un proxy.
- Ne journalisez pas la clé complète. Journalisez un préfixe si vous devez l'identifier.
- Renouvelez immédiatement une clé qui a pu fuiter.
Avant de contacter le support
Rassemblez :
- L'endpoint et la méthode HTTP.
- Le statut HTTP, le
codeet lerequest_id. - L'ID de modèle ou l'ID de tâche.
- L'horodatage avec le fuseau horaire.
- Un corps de requête minimal, secrets retirés.
Envoyez ces éléments au support avec l'e-mail du compte. N'incluez pas la clé API complète.