Aan de slag
Authenticatie
Authenticeer aanvragen met API-sleutels, volg beveiligingspraktijken en behandel authenticatiefouten.
Alle verzoeken aan de API's van Felo API Platform vereisen authenticatie met een API-sleutel. Deze handleiding legt uit hoe je je verzoeken authenticeert en hoe je veelvoorkomende authenticatieproblemen oplost.
Authenticatie met een API-sleutel
Felo gebruikt authenticatie met een API-sleutel voor alle v2-endpoints. Je API-sleutel identificeert je applicatie en geeft toegang tot de mogelijkheden van het platform.
Hoe het werkt
- Je haalt een API-sleutel op van de pagina API-sleutels van Felo API Platform
- Je stuurt de API-sleutel mee in de
Authorization-header van elk API-verzoek - Het platform valideert je API-sleutel en verwerkt je verzoek
Headerformaat
Stuur je API-sleutel mee in de Authorization-header volgens het Bearer-authenticatieschema:
Authorization: Bearer YOUR_API_KEYVoorbeeldverzoek
curl -X POST https://openapi.felo.ai/v2/chat \
-H "Authorization: Bearer sk_live_abc123xyz789" \
-H "Content-Type: application/json" \
-d '{"query": "What is machine learning?"}'Je API-sleutel ophalen
Zo haal je je API-sleutel op:
- Open de pagina API-sleutels van Felo API Platform
- Log in met je Felo-account als daarom wordt gevraagd
- Voer een naam voor de sleutel in en klik op Create Key
- Kopieer de volledige sleutel zodra die verschijnt. De sleutel wordt maar één keer getoond
- Bewaar de sleutel veilig en gebruik hem als
FELO_API_KEY
Beste praktijken voor beveiliging
1. Bewaar API-sleutels veilig
Doe dit niet: API-sleutels hardcoderen in je broncode:
# ❌ Bad - API Key exposed in code
api_key = "sk_live_abc123xyz789"Doe dit wel: gebruik omgevingsvariabelen of een veilige configuratie:
# ✅ Good - API Key from environment
import os
api_key = os.environ.get('FELO_API_KEY')2. Gebruik omgevingsvariabelen
Bewaar je API-sleutel in omgevingsvariabelen:
Linux/macOS:
export FELO_API_KEY="sk_live_abc123xyz789"Windows (opdrachtprompt):
set FELO_API_KEY=sk_live_abc123xyz789Windows (PowerShell):
$env:FELO_API_KEY="sk_live_abc123xyz789"3. Roteer sleutels regelmatig
Genereer periodiek nieuwe API-sleutels en trek oude in om beveiligingsrisico's te beperken.
4. Gebruik verschillende sleutels voor verschillende omgevingen
Maak afzonderlijke API-sleutels voor ontwikkel-, staging- en productieomgevingen.
5. Stel sleutels nooit bloot in code aan de clientkant
API-sleutels horen alleen in code aan de serverkant te worden gebruikt. Zet ze nooit in:
- Frontend-JavaScriptcode
- Broncode van mobiele apps
- Openbare repositories
- Configuratiebestanden aan de clientkant
Authenticatiefouten
Zie Fouten, limieten en nieuwe pogingen voor het volledige foutformaat, de rate-limitheaders en het beleid voor nieuwe pogingen.
Veelvoorkomende foutcodes
| HTTP | Code | Betekenis |
|---|---|---|
| 401 | UNAUTHORIZED | Sleutel ontbreekt, is ongeldig, verlopen of ingetrokken |
| 429 | RATE_LIMITED | Te veel verzoeken; zie de handleiding Fouten, limieten en nieuwe pogingen |
Een geweigerd verzoek geeft de status van de sleutel terug in message:
{
"status": 401,
"code": "UNAUTHORIZED",
"message": "API Key is required",
"request_id": "..."
}status is de HTTP-statuscode. Een ingetrokken sleutel meldt API Key has been revoked (keyPrefix=...). Baseer je logica op de HTTP-status en code, niet op de exacte formulering van message.
Problemen oplossen
Als authenticatie mislukt:
- Controleer of de header precies
Authorization: Bearer YOUR_API_KEYis. - Controleer of de sleutel niet is ingetrokken op de pagina API-sleutels.
- Controleer of de omgeving de sleutel gebruikt die je verwacht.
- Genereer een nieuwe sleutel als de oude is verwijderd of geroteerd. Een volledige sleutel wordt maar één keer getoond, bij het aanmaken.
Voor een checklist die begint bij de symptomen en zowel authenticatie als de rest van het platform behandelt, zie Problemen oplossen.
Voorbeeld: authenticatie debuggen
import requests
url = "https://openapi.felo.ai/v2/chat"
api_key = "YOUR_API_KEY"
# Correct format
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
response = requests.post(url, headers=headers, json={"query": "test"})
if response.status_code == 401:
error = response.json()
print(f"Authentication failed: {error['code']}")
print(f"Message: {error['message']}")
print(f"Request ID: {error['request_id']}")
else:
print("Authentication successful!")Rate limiting
Rate limits worden per endpoint afgedwongen, niet globaal per API-sleutel. Momenteel worden ze alleen afgedwongen voor `/v2/chat`; gebruikers met een actief betaald Felo-abonnement zijn vrijgesteld. Voor andere /v2/**-endpoints worden geen rate limits afgedwongen.
Een 429-respons bevat X-RateLimit-*-headers en Retry-After. Lees de geldende limieten altijd uit de responsheaders, niet uit de documentatie.
Zie Fouten, limieten en nieuwe pogingen voor de volledige rate-limitdimensies, headers en het beleid voor nieuwe pogingen.
Hulp nodig?
Als je problemen met authenticatie ervaart:
- Lees deze handleiding aandachtig door
- Bekijk de handleiding Aan de slag
- Controleer je API-sleutel op de pagina API-sleutels
- Neem contact op met support via [email protected] en vermeld je request-ID
Volgende stappen
- Handleiding Aan de slag - Leer hoe je je eerste API-aanroep doet
- Chat API-referentie - Verken de documentatie van de Chat API