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
Brevo limitează cererile per endpoint, nu pe zi. Pe nivelul general, pe care îl primește orice plan, POST /v3/smtp/email permite 1.000 de cereri pe secundă, endpointurile /v3/contacts permit 10 pe secundă și 36.000 pe oră, iar endpointurile fără limită proprie permit 100 pe oră. Planurile Professional și Enterprise deblochează niveluri superioare. Vezi Limite de rată pentru tabelul complet.
Anteturile de limitare a ratei
HTTP/1.1 200 OKx-sib-ratelimit-limit: 1000x-sib-ratelimit-remaining: 750x-sib-ratelimit-reset: 1Cum tratezi limitele de rată
async function makeApiCall() { try { const response = await fetch(url, { headers });
if (response.status === 429) { // Seconds until the window resets const waitTime = Number(response.headers.get('x-sib-ratelimit-reset') || 1);
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