API-nøkler
API-nøkler er den primære måten å autentisere seg mot Brevo API på. De gir en enkel og sikker måte å nå kontoen din programmatisk.
Hva er API-nøkler?
API-nøkler er unike identifikatorer som autentiserer applikasjonen din når den sender forespørsler til Brevo API. Hver nøkkel er en streng på 64 tegn som fungerer både som identifikator og som passord.
Example API key: xkeysib-a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456-Ab1Cd2Ef3Gh4Generere API-nøkler
Steg for steg
- Logg inn i Brevo: Gå til Brevo-dashboardet ditt
- Gå til innstillinger: Klikk på profilen din → Settings
- Åpne API-nøkler: Velg “API Keys” i menyen til venstre
- Opprett ny nøkkel: Klikk “Generate a New API Key”
- Gi nøkkelen et navn: Velg et beskrivende navn (for eksempel “Production App” eller “Development Testing”)
- Sett rettigheter: Velg riktig tilgangsnivå
- Generer: Klikk “Generate” og kopier nøkkelen med én gang
Navnekonvensjoner for API-nøkler
Bruk beskrivende navn som gjør det lett å se hva nøkkelen brukes til:
production-web-appstaging-environmentmobile-app-ioswebhook-listenerdata-sync-service
Typer API-nøkler og rettigheter
Nøkler med full tilgang
Permissions: All API endpointsUse cases: Complete application integrationRisk level: High - protect carefullyNøkler med kun lesetilgang
Permissions: GET requests onlyUse cases: Analytics, reporting, dashboardsRisk level: Low - limited accessNøkler som kun kan sende
Permissions: Transactional email sendingUse cases: Application notifications, receiptsRisk level: Medium - can send emailsNøkler for kontakthåndtering
Permissions: Contact CRUD operationsUse cases: CRM integrations, form submissionsRisk level: Medium - data modificationBruke API-nøkler
Autentisering via header
Send API-nøkkelen din i headeren api-key:
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}"endSikkerhet for API-nøkler
Trygg lagring
Miljøvariabler (anbefalt)
# .env fileBREVO_API_KEY=xkeysib-your-api-key-here
# Usage in codeconst apiKey = process.env.BREVO_API_KEY;Hemmelighetstjenester i skyen
- AWS Secrets Manager
- Google Secret Manager
- Azure Key Vault
- HashiCorp Vault
Beste praksis for sikkerhet
-
Legg aldri nøkler rett inn i koden
// ❌ Bad - hardcodedconst apiKey = "xkeysib-a1b2c3d4...";// ✅ Good - environment variableconst apiKey = process.env.BREVO_API_KEY; -
Bruk ulike nøkler per miljø
Production: BREVO_API_KEY_PRODStaging: BREVO_API_KEY_STAGINGDevelopment: BREVO_API_KEY_DEV -
Bytt ut nøkler jevnlig
- Legg inn kalenderpåminnelser om utskifting hvert kvartal
- Bruk automatiseringsverktøy til å bytte nøkler
- Ha en plan for å rulle tilbake
-
Overvåk bruken av nøkler
- Sett opp varsler for uvanlig aktivitet
- Gå gjennom bruksloggene månedlig
- Følg med på hvor i verden tilgangen kommer fra
Nøkkeladministrasjon
Overvåking av aktive nøkler
Følg med på de aktive nøklene dine i dashboardet:
Key Name: production-web-appCreated: 2024-01-15Last Used: 2024-01-20 14:30 UTCRequests Today: 1,247Status: ActiveSlik bytter du ut en nøkkel
- Generer ny nøkkel: Opprett en erstatningsnøkkel
- Oppdater konfigurasjonen: Rull ut med den nye nøkkelen
- Overvåk: Bekreft at den nye nøkkelen fungerer som den skal
- Overgangsperiode: La den gamle nøkkelen være aktiv i 24 til 48 timer
- Trekk tilbake den gamle nøkkelen: Slett den forrige nøkkelen
Hastetilbaketrekking av nøkler
Hvis en nøkkel er kompromittert:
- Trekk tilbake med én gang: Slett nøkkelen fra dashboardet
- Lag en erstatning: Opprett en ny nøkkel umiddelbart
- Oppdater applikasjonene: Rull ut med den nye nøkkelen så raskt som mulig
- Overvåk aktiviteten: Se etter uautorisert bruk
- Hendelsesrapport: Dokumenter sikkerhetshendelsen
Hastighetsbegrensning og API-nøkler
Hver API-nøkkel har sine egne hastighetsbegrensninger:
- Free Plan: 300 forespørsler per dag
- Starter Plan: 20 000 forespørsler per dag
- Business Plan: 50 000 forespørsler per dag
- Enterprise Plan: Egne grenser
Headere for hastighetsbegrensning
HTTP/1.1 200 OKX-RateLimit-Limit: 1000X-RateLimit-Remaining: 999X-RateLimit-Reset: 1640995200Håndtere hastighetsbegrensninger
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; }}Feilsøking av API-nøkler
Vanlige feilmeldinger
Invalid API Key (401)
{ "code": "unauthorized", "message": "Invalid API key provided"}Insufficient Permissions (403)
{ "code": "permission_denied", "message": "API key does not have required permissions"}Rate Limit Exceeded (429)
{ "code": "too_many_requests", "message": "Rate limit exceeded for API key"}Sjekkliste for feilsøking
- Nøkkelen har riktig format (64 tegn)
- Ingen ekstra mellomrom eller skjulte tegn
- Nøkkelen har de rettighetene som kreves
- Nøkkelen er aktiv (ikke trukket tilbake)
- Du er innenfor hastighetsbegrensningene
- Du bruker riktig API-endepunkt
- Headerne er riktig formatert
Neste steg
- Lær om OAuth 2.0
- Forstå JWT-tokens
- Utforsk hastighetsbegrensninger
- Prøv SDK-ene