API-nøgler
API-nøgler er den primære måde at autentificere sig mod Brevo API’et på. De giver en enkel og sikker adgang til din konto programmatisk.
Hvad er API-nøgler?
API-nøgler er unikke identifikatorer, der autentificerer din applikation, når den sender forespørgsler til Brevo API’et. Hver nøgle er en streng på 64 tegn, der fungerer både som identifikator og som adgangskode.
Example API key: xkeysib-a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456-Ab1Cd2Ef3Gh4Sådan genererer du API-nøgler
Trin for trin
- Log ind på Brevo: Åbn dit Brevo-dashboard
- Gå til indstillinger: Klik på din profil → Settings
- Åbn API-nøgler: Vælg “API Keys” i menuen til venstre
- Opret ny nøgle: Klik på “Generate a New API Key”
- Navngiv din nøgle: Giv den et beskrivende navn (f.eks. “Production App”, “Development Testing”)
- Sæt rettigheder: Vælg det rette adgangsniveau
- Generér: Klik på “Generate”, og kopiér nøglen med det samme
Navnekonventioner for API-nøgler
Brug beskrivende navne, der gør det let at genkende nøglens formål:
production-web-appstaging-environmentmobile-app-ioswebhook-listenerdata-sync-service
Typer af API-nøgler og rettigheder
Nøgler med fuld adgang
Permissions: All API endpointsUse cases: Complete application integrationRisk level: High - protect carefullyNøgler med læseadgang
Permissions: GET requests onlyUse cases: Analytics, reporting, dashboardsRisk level: Low - limited accessNøgler kun til afsendelse
Permissions: Transactional email sendingUse cases: Application notifications, receiptsRisk level: Medium - can send emailsNøgler til kontaktstyring
Permissions: Contact CRUD operationsUse cases: CRM integrations, form submissionsRisk level: Medium - data modificationSådan bruger du API-nøgler
Autentificering via header
Send din API-nøgle med i api-key-headeren:
GET /v3/account HTTP/1.1Host: api.brevo.comAccept: application/jsonContent-Type: application/jsonapi-key: YOUR_API_KEYKodeeksempler
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}"endSikkerhed for API-nøgler
Sikker opbevaring
Miljøvariabler (anbefalet)
# .env fileBREVO_API_KEY=xkeysib-your-api-key-here
# Usage in codeconst apiKey = process.env.BREVO_API_KEY;Cloud secret managers
- AWS Secrets Manager
- Google Secret Manager
- Azure Key Vault
- HashiCorp Vault
Bedste praksis for sikkerhed
-
Skriv aldrig nøgler direkte i koden
// ❌ Bad - hardcodedconst apiKey = "xkeysib-a1b2c3d4...";// ✅ Good - environment variableconst apiKey = process.env.BREVO_API_KEY; -
Brug forskellige nøgler til hvert miljø
Production: BREVO_API_KEY_PRODStaging: BREVO_API_KEY_STAGINGDevelopment: BREVO_API_KEY_DEV -
Rotér nøgler regelmæssigt
- Sæt en påmindelse i kalenderen om rotation hvert kvartal
- Brug automatiseringsværktøjer til nøglerotation
- Hav en rollback-plan klar
-
Hold øje med brugen af nøgler
- Opsæt alarmer for usædvanlig aktivitet
- Gennemgå logs over nøglebrug hver måned
- Følg med i geografiske adgangsmønstre
Nøglestyring
Overvågning af aktive nøgler
Hold øje med dine aktive nøgler i dashboardet:
Key Name: production-web-appCreated: 2024-01-15Last Used: 2024-01-20 14:30 UTCRequests Today: 1,247Status: ActiveSådan roterer du en nøgle
- Generér ny nøgle: Opret en afløsernøgle
- Opdatér konfigurationen: Deploy med den nye nøgle
- Overvåg: Sikr dig, at den nye nøgle virker korrekt
- Overgangsperiode: Hold den gamle nøgle aktiv i 24-48 timer
- Tilbagekald den gamle nøgle: Slet den forrige nøgle
Akut tilbagekaldelse af en nøgle
Hvis en nøgle bliver kompromitteret:
- Tilbagekald med det samme: Slet nøglen i dashboardet
- Opret en erstatning: Generér en ny nøgle med det samme
- Opdatér dine applikationer: Deploy med den nye nøgle hurtigst muligt
- Overvåg aktiviteten: Tjek for uautoriseret brug
- Hændelsesrapport: Dokumentér sikkerhedshændelsen
Rate limiting og API-nøgler
Hver API-nøgle har sine egne rate limits:
- Free Plan: 300 forespørgsler/dag
- Starter Plan: 20.000 forespørgsler/dag
- Business Plan: 50.000 forespørgsler/dag
- Enterprise Plan: individuelle grænser
Rate limit-headers
HTTP/1.1 200 OKX-RateLimit-Limit: 1000X-RateLimit-Remaining: 999X-RateLimit-Reset: 1640995200Sådan håndterer du rate limits
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; }}Fejlfinding på API-nøgler
Almindelige fejlbeskeder
Ugyldig API-nøgle (401)
{ "code": "unauthorized", "message": "Invalid API key provided"}Utilstrækkelige rettigheder (403)
{ "code": "permission_denied", "message": "API key does not have required permissions"}Rate limit overskredet (429)
{ "code": "too_many_requests", "message": "Rate limit exceeded for API key"}Tjekliste til fejlfinding
- Nøglen har det rigtige format (64 tegn)
- Ingen ekstra mellemrum eller skjulte tegn
- Nøglen har de nødvendige rettigheder
- Nøglen er aktiv (ikke tilbagekaldt)
- Du er inden for dine rate limits
- Du bruger det rigtige API-endpoint
- Headers er formateret korrekt
Næste skridt
- Læs om OAuth 2.0
- Forstå JWT-tokens
- Udforsk rate limits
- Prøv SDK’erne