Veelgestelde vragen
Probleemoplossing
Los problemen met authenticatie, modellen, streaming, taken en snelheidslimieten op met een checklist op basis van symptomen.
Begin bij het symptoom en volg dan de oplossing. De meeste fouten komen door de base-URL, de sleutel, het model-ID of het saldo.
Tabel op basis van symptomen
| Symptoom | Waarschijnlijke oorzaak | Oplossing |
|---|---|---|
401 UNAUTHORIZED | Sleutel ontbreekt, is onjuist, ingetrokken of niet meegestuurd | Stuur Authorization: Bearer $FELO_API_KEY; maak een nieuwe sleutel als die is ingetrokken |
402 INSUFFICIENT_CREDITS | Saldo is niet toereikend voor de aanroep | Waardeer op in Console Billing |
| 404 bij elk verzoek | De base-URL bevat een pad dat het endpoint er zelf al aan toevoegt | Gebruik https://openapi.felo.ai/api/v1 voor OpenAI-clients en https://openapi.felo.ai/api voor Anthropic-clients |
| 404 bij één model | Het model-ID is niet openbaar, of het endpoint bedient het model niet | Controleer het model-ID op de modellenpagina en in de documentatie van het endpoint |
400-fout bij model of max_tokens | Een verplicht veld ontbreekt, of het model accepteert de vorm van het verzoek niet | Voeg max_tokens toe voor Messages; verwijder niet-ondersteunde velden |
| 429 | Rate limit of een limiet van een upstream-provider | Lees Retry-After; zie Fouten, limieten en nieuwe pogingen |
| 5xx | Fout bij de upstream of de dienst | Probeer het opnieuw met backoff; vermeld request_id als de fout aanhoudt |
| Stream maakt verbinding maar stuurt niets | Een proxy buffert de respons, of de eventparser verwacht het verkeerde formaat | Lees de stream stapsgewijs; schakel responsebuffering in je proxy uit |
| Taak wordt nooit voltooid | Verkeerd poll-endpoint, of een definitieve status is niet afgehandeld | Poll het eigen status-endpoint van de taak en stop bij definitieve waarden |
| Tool calls worden genegeerd | Het model adverteert die mogelijkheid niet | Controleer supported_parameters in de catalogus |
| Data API retourneert 404 | Het voorvoegsel /v1/beta is twee keer toegevoegd | Gebruik het pad precies zoals het in de referentie staat |
Authenticatie
Een ingetrokken sleutel retourneert een bericht met het voorvoegsel van de sleutel:
{
"status": 401,
"code": "UNAUTHORIZED",
"message": "API Key has been revoked (keyPrefix=...)"
}Checklist:
- De header is
Authorization: Bearer <key>voor de Model API en de Felo API's. - De Data API accepteert ook
X-API-Key: <key>. - De sleutel staat niet tussen aanhalingstekens en er staat geen nieuwe regel aan het einde die uit een gekopieerde omgevingsvariabele afkomstig is.
- De omgeving waarin je implementeert heeft de variabele daadwerkelijk ingesteld; een sleutel die lokaal werkt, kan in productie ontbreken.
- De sleutel is niet verwijderd of geroteerd. Een verwijderde of geroteerde sleutel kan niet opnieuw worden getoond; maak een nieuwe aan.
Zie Authenticatie voor het aanmaken van sleutels en de limieten.
Valkuilen met de base-URL
| Client | Juiste base-URL |
|---|---|
| OpenAI SDK | https://openapi.felo.ai/api/v1 |
| Anthropic SDK | https://openapi.felo.ai/api |
| Rechtstreeks model-endpoint | https://openapi.felo.ai/api/v1/chat/completions, /responses of /messages |
| Data API | https://openapi.felo.ai/v1/beta |
Felo /v2-API's | https://openapi.felo.ai/v2 |
Twee veelvoorkomende fouten:
/chat/completionstoevoegen aan een base-URL die de SDK er zelf al aan toevoegt.- De Anthropic-base-URL instellen op
https://openapi.felo.ai/api/v1. De SDK voegt/v1/messagestoe, waardoor het verzoek/api/v1/v1/messageswordt.
Problemen met model-ID's
Model-ID's zijn de openbare ID's uit de catalogus, niet de interne namen van de upstream-provider of een weergavenaam.
- Zoek het ID op de modellenpagina of in
GET /api/v1/modelsop. - Controleer of het model het protocol ondersteunt dat je aanroept (
supported_protocols). - Als je een kanaal hebt vastgezet, controleer dan of dat kanaal gepubliceerd en uitvoerbaar is voor dat model. Een niet-beschikbaar kanaal is geen terugvaloptie.
Zie Kanalen en providerroutering.
Problemen met streaming
- Stel
stream: truein de verzoekbody in, niet als queryparameter. - Lees de responsbody als stream. Wachten op de volledige respons maakt streaming nutteloos.
- Sommige proxy's en serverless-platforms bufferen responsen. Schakel buffering uit voor de route die het verzoek doorstuurt.
- Chat Completions streamt
choices[0].delta, nietchoices[0].message. De uiteindelijke inhoud komt binnen via vele chunks. - Een stream kan zonder nette terminale gebeurtenis eindigen als de verbinding wegvalt. Behandel een verbroken verbinding als een onvolledige respons.
Problemen met asynchrone taken
- Poll het status-endpoint dat bij het soort taak hoort. Felo-workflows gebruiken
GET /v2/tasks/{task_id}/status; video- en beeldtaken van modellen gebruiken hun eigen generatie-endpoints. - Stop bij elke definitieve status, ook bij fouten en verlopen statussen, niet alleen bij succes.
- Callbacks voor video en afbeeldingen worden momenteel genegeerd. Wacht niet op een webhook.
- Een resultaat-URL kan kort geldig zijn. Vraag een nieuwe URL aan bij het status-endpoint als een download verloopt.
- Controleer de taak voordat je opnieuw indient. Een lopende taak opnieuw indienen maakt een duplicaat aan en beide worden gefactureerd.
Zie Asynchrone taken.
Problemen met de Data API
- Houd het exacte methodepath uit de Data API-referentie aan.
- Verzoekbodies zijn leveranciersspecifiek. Een veld dat voor de ene leverancier werkt, werkt niet gegarandeerd voor een andere.
- Een fout van een provider kan binnen een 4xx-respons komen met een leveranciersspecifiek bericht. Log
request_iden de responsbody.
Beveiligingsherinneringen
- Zet een API-sleutel nooit in browsercode, een bundel van een mobiele app of een openbare repository. Houd de sleutel op een server en leid verzoeken via een proxy.
- Log nooit de volledige sleutel. Log een voorvoegsel als je de sleutel moet identificeren.
- Roteer een sleutel onmiddellijk als die mogelijk is gelekt.
Voordat je contact opneemt met support
Verzamel:
- Endpoint en HTTP-methode.
- HTTP-status,
codeenrequest_id. - Model-ID of taak-ID.
- Tijdstempel met tijdzone.
- Een minimale verzoekbody zonder geheimen.
Stuur dit samen met het e-mailadres van het account naar support. Voeg niet de volledige API-sleutel toe.