Chei API
Cheile API sunt metoda principală de autentificare la API-ul Brevo. Îți oferă o cale simplă și sigură de a-ți accesa contul programatic.
Ce sunt cheile API?
Cheile API sunt identificatori unici care autentifică aplicația ta atunci când trimite cereri către API-ul Brevo. Fiecare cheie este un șir de 64 de caractere care servește atât ca identificator, cât și ca parolă.
Example API key: xkeysib-a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456-Ab1Cd2Ef3Gh4Generarea cheilor API
Ghid pas cu pas
- Conectează-te la Brevo: accesează panoul de administrare Brevo
- Mergi la setări: apasă pe profilul tău → Settings
- Deschide secțiunea de chei API: alege „API Keys” din meniul din stânga
- Creează o cheie nouă: apasă pe „Generate a New API Key”
- Denumește cheia: dă-i un nume descriptiv (de exemplu „Production App”, „Development Testing”)
- Stabilește permisiunile: alege nivelul de acces potrivit
- Generează: apasă pe „Generate” și copiază imediat cheia
Convenții de denumire a cheilor API
Folosește nume descriptive, care te ajută să identifici scopul cheii:
production-web-appstaging-environmentmobile-app-ioswebhook-listenerdata-sync-service
Tipuri de chei API și permisiuni
Chei cu acces complet
Permissions: All API endpointsUse cases: Complete application integrationRisk level: High - protect carefullyChei doar pentru citire
Permissions: GET requests onlyUse cases: Analytics, reporting, dashboardsRisk level: Low - limited accessChei doar pentru trimitere
Permissions: Transactional email sendingUse cases: Application notifications, receiptsRisk level: Medium - can send emailsChei pentru gestionarea contactelor
Permissions: Contact CRUD operationsUse cases: CRM integrations, form submissionsRisk level: Medium - data modificationFolosirea cheilor API
Autentificarea prin antet
Include cheia API în antetul api-key:
GET /v3/account HTTP/1.1Host: api.brevo.comAccept: application/jsonContent-Type: application/jsonapi-key: YOUR_API_KEYExemple de cod
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}"endSecuritatea cheilor API
Stocare sigură
Variabile de mediu (recomandat)
# .env fileBREVO_API_KEY=xkeysib-your-api-key-here
# Usage in codeconst apiKey = process.env.BREVO_API_KEY;Servicii cloud de gestionare a secretelor
- AWS Secrets Manager
- Google Secret Manager
- Azure Key Vault
- HashiCorp Vault
Bune practici de securitate
-
Nu scrie niciodată cheile direct în cod
// ❌ Bad - hardcodedconst apiKey = "xkeysib-a1b2c3d4...";// ✅ Good - environment variableconst apiKey = process.env.BREVO_API_KEY; -
Folosește chei diferite pentru fiecare mediu
Production: BREVO_API_KEY_PRODStaging: BREVO_API_KEY_STAGINGDevelopment: BREVO_API_KEY_DEV -
Rotește cheile periodic
- Setează-ți memento-uri în calendar pentru rotația trimestrială
- Folosește instrumente de automatizare pentru rotația cheilor
- Pregătește un plan de revenire la varianta anterioară
-
Monitorizează utilizarea cheilor
- Configurează alerte pentru activitate neobișnuită
- Verifică lunar jurnalele de utilizare a cheilor
- Urmărește tiparele geografice de acces
Gestionarea cheilor
Monitorizarea cheilor active
Monitorizează-ți cheile active din panoul de administrare:
Key Name: production-web-appCreated: 2024-01-15Last Used: 2024-01-20 14:30 UTCRequests Today: 1,247Status: ActiveProcesul de rotație a cheilor
- Generează o cheie nouă: creează cheia de înlocuire
- Actualizează configurația: implementează cu noua cheie
- Monitorizează: asigură-te că noua cheie funcționează corect
- Perioadă de grație: menține cheia veche activă timp de 24-48 de ore
- Revocă cheia veche: șterge cheia anterioară
Revocarea de urgență a unei chei
Dacă o cheie este compromisă:
- Revocare imediată: șterge cheia din panoul de administrare
- Generează o înlocuire: creează imediat o cheie nouă
- Actualizează aplicațiile: implementează cât mai repede cu noua cheie
- Monitorizează activitatea: verifică dacă a existat utilizare neautorizată
- Raport de incident: documentează incidentul de securitate
Limitarea ratei și cheile API
Fiecare cheie API are limite de rată individuale:
- Plan Free: 300 de cereri/zi
- Plan Starter: 20.000 de cereri/zi
- Plan Business: 50.000 de cereri/zi
- Plan Enterprise: limite personalizate
Anteturile de limitare a ratei
HTTP/1.1 200 OKX-RateLimit-Limit: 1000X-RateLimit-Remaining: 999X-RateLimit-Reset: 1640995200Cum tratezi limitele de rată
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; }}Depanarea cheilor API
Mesaje de eroare frecvente
Cheie API invalidă (401)
{ "code": "unauthorized", "message": "Invalid API key provided"}Permisiuni insuficiente (403)
{ "code": "permission_denied", "message": "API key does not have required permissions"}Limită de rată depășită (429)
{ "code": "too_many_requests", "message": "Rate limit exceeded for API key"}Listă de verificare pentru depanare
- Cheia este formatată corect (64 de caractere)
- Fără spații suplimentare sau caractere ascunse
- Cheia are permisiunile necesare
- Cheia este activă (nu a fost revocată)
- Te încadrezi în limitele de rată
- Folosești endpointul API corect
- Anteturile sunt formatate corect
Pașii următori
- Află mai multe despre OAuth 2.0
- Înțelege tokenurile JWT
- Explorează limitele de rată
- Încearcă SDK-urile