Clés API
Les clés API sont la méthode principale pour s’authentifier auprès de l’API Brevo. Elles offrent un moyen simple et sécurisé d’accéder à votre compte de manière programmatique.
Que sont les clés API ?
Les clés API sont des identifiants uniques qui authentifient votre application lorsqu’elle effectue des requêtes vers l’API Brevo. Chaque clé est une chaîne de 64 caractères qui sert à la fois d’identifiant et de mot de passe.
Example API key: xkeysib-a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456-Ab1Cd2Ef3Gh4Générer des clés API
Guide étape par étape
- Connectez-vous à Brevo : accédez à votre tableau de bord Brevo
- Allez dans les paramètres : cliquez sur votre profil → Paramètres
- Ouvrez les clés API : sélectionnez « Clés API » dans le menu de gauche
- Créez une nouvelle clé : cliquez sur « Générer une nouvelle clé API »
- Nommez votre clé : donnez-lui un nom descriptif (par ex. « App de production », « Tests de développement »)
- Définissez les permissions : choisissez le niveau d’accès approprié
- Générez : cliquez sur « Générer » et copiez immédiatement la clé
Conventions de nommage des clés API
Utilisez des noms descriptifs qui aident à identifier le rôle de la clé :
production-web-appstaging-environmentmobile-app-ioswebhook-listenerdata-sync-service
Types et permissions des clés API
Clés avec accès complet
Permissions: All API endpointsUse cases: Complete application integrationRisk level: High - protect carefullyClés en lecture seule
Permissions: GET requests onlyUse cases: Analytics, reporting, dashboardsRisk level: Low - limited accessClés d’envoi uniquement
Permissions: Transactional email sendingUse cases: Application notifications, receiptsRisk level: Medium - can send emailsClés de gestion des contacts
Permissions: Contact CRUD operationsUse cases: CRM integrations, form submissionsRisk level: Medium - data modificationUtiliser les clés API
Authentification par en-tête
Incluez votre clé API dans l’en-tête api-key :
GET /v3/account HTTP/1.1Host: api.brevo.comAccept: application/jsonContent-Type: application/jsonapi-key: YOUR_API_KEYExemples de code
JavaScript/Node.js
const brevo = require('@getbrevo/brevo');
const apiInstance = new brevo.AccountApi();apiInstance.setApiKey(brevo.AccountApiApiKeys.apiKey, process.env.BREVO_API_KEY);
// Make authenticated requestapiInstance.getAccount() .then(data => console.log('Account info:', data)) .catch(error => console.error('Error:', error));Python
import sib_api_v3_sdkfrom sib_api_v3_sdk.rest import ApiException
# Configure API keyconfiguration = sib_api_v3_sdk.Configuration()configuration.api_key['api-key'] = 'YOUR_API_KEY'
# Create API instanceapi_instance = sib_api_v3_sdk.AccountApi(sib_api_v3_sdk.ApiClient(configuration))
try: # Get account info api_response = api_instance.get_account() print(api_response)except ApiException as e: print("Exception when calling AccountApi->get_account: %s\n" % e)PHP
<?phprequire_once(__DIR__ . '/vendor/autoload.php');
// Configure API key$config = SendinBlue\Client\Configuration::getDefaultConfiguration()->setApiKey('api-key', 'YOUR_API_KEY');
// Create API instance$apiInstance = new SendinBlue\Client\Api\AccountApi( new GuzzleHttp\Client(), $config);
try { $result = $apiInstance->getAccount(); print_r($result);} catch (Exception $e) { echo 'Exception when calling AccountApi->getAccount: ', $e->getMessage(), PHP_EOL;}?>Ruby
require 'sib-api-v3-sdk'
# Configure API keySibApiV3Sdk.configure do |config| config.api_key['api-key'] = 'YOUR_API_KEY'end
# Create API instanceapi_instance = SibApiV3Sdk::AccountApi.new
begin # Get account info result = api_instance.get_account puts resultrescue SibApiV3Sdk::ApiError => e puts "Exception when calling AccountApi->get_account: #{e}"endSécurité des clés API
Stockage sécurisé
Variables d’environnement (recommandé)
# .env fileBREVO_API_KEY=xkeysib-your-api-key-here
# Usage in codeconst apiKey = process.env.BREVO_API_KEY;Gestionnaires de secrets cloud
- AWS Secrets Manager
- Google Secret Manager
- Azure Key Vault
- HashiCorp Vault
Bonnes pratiques de sécurité
-
Ne codez jamais les clés en dur
// ❌ Bad - hardcodedconst apiKey = "xkeysib-a1b2c3d4...";// ✅ Good - environment variableconst apiKey = process.env.BREVO_API_KEY; -
Utilisez des clés différentes par environnement
Production: BREVO_API_KEY_PRODStaging: BREVO_API_KEY_STAGINGDevelopment: BREVO_API_KEY_DEV -
Faites tourner les clés régulièrement
- Programmez des rappels de rotation trimestrielle
- Utilisez des outils d’automatisation pour la rotation
- Préparez un plan de retour en arrière
-
Surveillez l’utilisation des clés
- Configurez des alertes en cas d’activité inhabituelle
- Examinez les logs d’utilisation chaque mois
- Suivez les schémas d’accès géographique
Gestion des clés
Suivi des clés actives
Surveillez vos clés actives dans le tableau de bord :
Key Name: production-web-appCreated: 2024-01-15Last Used: 2024-01-20 14:30 UTCRequests Today: 1,247Status: ActiveProcessus de rotation des clés
- Générer une nouvelle clé : créez une clé de remplacement
- Mettre à jour la configuration : déployez avec la nouvelle clé
- Surveiller : assurez-vous que la nouvelle clé fonctionne correctement
- Période de grâce : laissez l’ancienne clé active pendant 24 à 48 heures
- Révoquer l’ancienne clé : supprimez la clé précédente
Révocation d’urgence d’une clé
Si une clé est compromise :
- Révocation immédiate : supprimez la clé depuis le tableau de bord
- Créer un remplacement : générez immédiatement une nouvelle clé
- Mettre à jour les applications : déployez avec la nouvelle clé au plus vite
- Surveiller l’activité : vérifiez s’il y a eu des usages non autorisés
- Rapport d’incident : documentez l’incident de sécurité
Rate limiting et clés API
Chaque clé API dispose de ses propres limites de requêtes :
- Plan Gratuit : 300 requêtes/jour
- Plan Starter : 20 000 requêtes/jour
- Plan Business : 50 000 requêtes/jour
- Plan Enterprise : limites personnalisées
En-têtes de rate limit
HTTP/1.1 200 OKX-RateLimit-Limit: 1000X-RateLimit-Remaining: 999X-RateLimit-Reset: 1640995200Gérer le rate limiting
async function makeApiCall() { try { const response = await fetch(url, { headers });
if (response.status === 429) { const resetTime = response.headers.get('X-RateLimit-Reset'); const waitTime = resetTime - Math.floor(Date.now() / 1000);
console.log(`Rate limited. Waiting ${waitTime} seconds`); await new Promise(resolve => setTimeout(resolve, waitTime * 1000));
// Retry the request return makeApiCall(); }
return response.json(); } catch (error) { console.error('API call failed:', error); throw error; }}Résolution des problèmes de clés API
Messages d’erreur courants
Clé API invalide (401)
{ "code": "unauthorized", "message": "Invalid API key provided"}Permissions insuffisantes (403)
{ "code": "permission_denied", "message": "API key does not have required permissions"}Rate limit dépassé (429)
{ "code": "too_many_requests", "message": "Rate limit exceeded for API key"}Checklist de débogage
- La clé est correctement formatée (64 caractères)
- Pas d’espaces supplémentaires ni de caractères cachés
- La clé a les permissions requises
- La clé est active (non révoquée)
- Dans les limites de débit
- Utilisation du bon endpoint API
- En-têtes correctement formatés
Prochaines étapes
- En savoir plus sur OAuth 2.0
- Comprendre les tokens JWT
- Explorer les limites de débit
- Essayer les SDK