API-nycklar
API-nycklar är den primära metoden för att autentisera mot Brevo API. De ger ett enkelt och säkert sätt att komma åt ditt konto programmatiskt.
Vad är API-nycklar?
API-nycklar är unika identifierare som autentiserar din applikation när den skickar förfrågningar till Brevo API. Varje nyckel är en sträng på 64 tecken som fungerar både som identifierare och lösenord.
Example API key: xkeysib-a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456-Ab1Cd2Ef3Gh4Skapa API-nycklar
Steg för steg
- Logga in på Brevo: Gå till din Brevo-dashboard
- Gå till inställningar: Klicka på din profil → Inställningar
- Öppna API-nycklar: Välj “API Keys” i vänstermenyn
- Skapa ny nyckel: Klicka på “Generate a New API Key”
- Namnge nyckeln: Ge den ett beskrivande namn (t.ex. “Production App”, “Development Testing”)
- Ange behörigheter: Välj lämplig åtkomstnivå
- Generera: Klicka på “Generate” och kopiera nyckeln direkt
Namnkonventioner för API-nycklar
Använd beskrivande namn som hjälper dig att se vad nyckeln används till:
production-web-appstaging-environmentmobile-app-ioswebhook-listenerdata-sync-service
Typer av API-nycklar och behörigheter
Nycklar med full åtkomst
Permissions: All API endpointsUse cases: Complete application integrationRisk level: High - protect carefullyNycklar med endast läsbehörighet
Permissions: GET requests onlyUse cases: Analytics, reporting, dashboardsRisk level: Low - limited accessNycklar med endast sändbehörighet
Permissions: Transactional email sendingUse cases: Application notifications, receiptsRisk level: Medium - can send emailsNycklar för kontakthantering
Permissions: Contact CRUD operationsUse cases: CRM integrations, form submissionsRisk level: Medium - data modificationAnvända API-nycklar
Autentisering via header
Skicka med din API-nyckel i headern api-key:
GET /v3/account HTTP/1.1Host: api.brevo.comAccept: application/jsonContent-Type: application/jsonapi-key: YOUR_API_KEYKodexempel
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äkerhet för API-nycklar
Säker lagring
Miljövariabler (rekommenderas)
# .env fileBREVO_API_KEY=xkeysib-your-api-key-here
# Usage in codeconst apiKey = process.env.BREVO_API_KEY;Molntjänster för hemligheter
- AWS Secrets Manager
- Google Secret Manager
- Azure Key Vault
- HashiCorp Vault
Bästa praxis för säkerhet
-
Hårdkoda aldrig nycklar
// ❌ Bad - hardcodedconst apiKey = "xkeysib-a1b2c3d4...";// ✅ Good - environment variableconst apiKey = process.env.BREVO_API_KEY; -
Använd olika nycklar per miljö
Production: BREVO_API_KEY_PRODStaging: BREVO_API_KEY_STAGINGDevelopment: BREVO_API_KEY_DEV -
Byt ut nycklar regelbundet
- Lägg in kalenderpåminnelser för kvartalsvis byte
- Använd automatiseringsverktyg för nyckelbyte
- Ha en plan för att återgå om något går fel
-
Följ upp hur nycklarna används
- Sätt upp aviseringar för ovanlig aktivitet
- Gå igenom loggarna över nyckelanvändning varje månad
- Följ upp geografiska åtkomstmönster
Nyckelhantering
Övervakning av aktiva nycklar
Följ dina aktiva nycklar i dashboarden:
Key Name: production-web-appCreated: 2024-01-15Last Used: 2024-01-20 14:30 UTCRequests Today: 1,247Status: ActiveProcess för nyckelbyte
- Generera ny nyckel: Skapa en ersättningsnyckel
- Uppdatera konfigurationen: Driftsätt med den nya nyckeln
- Kontrollera: Säkerställ att den nya nyckeln fungerar som den ska
- Övergångsperiod: Låt den gamla nyckeln vara aktiv i 24 till 48 timmar
- Återkalla den gamla nyckeln: Ta bort den tidigare nyckeln
Akut återkallning av nyckel
Om en nyckel har läckt:
- Återkalla omedelbart: Ta bort nyckeln i dashboarden
- Skapa en ersättare: Generera en ny nyckel direkt
- Uppdatera applikationerna: Driftsätt med den nya nyckeln så snabbt som möjligt
- Bevaka aktiviteten: Leta efter obehörig användning
- Incidentrapport: Dokumentera säkerhetsincidenten
Hastighetsbegränsningar och API-nycklar
Varje API-nyckel har egna hastighetsbegränsningar:
- Free Plan: 300 förfrågningar/dag
- Starter Plan: 20 000 förfrågningar/dag
- Business Plan: 50 000 förfrågningar/dag
- Enterprise Plan: anpassade gränser
Headers för hastighetsbegränsning
HTTP/1.1 200 OKX-RateLimit-Limit: 1000X-RateLimit-Remaining: 999X-RateLimit-Reset: 1640995200Hantera hastighetsbegränsningar
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; }}Felsökning av API-nycklar
Vanliga felmeddelanden
Ogiltig API-nyckel (401)
{ "code": "unauthorized", "message": "Invalid API key provided"}Otillräckliga behörigheter (403)
{ "code": "permission_denied", "message": "API key does not have required permissions"}Hastighetsgränsen överskriden (429)
{ "code": "too_many_requests", "message": "Rate limit exceeded for API key"}Checklista för felsökning
- Nyckeln har rätt format (64 tecken)
- Inga extra mellanslag eller dolda tecken
- Nyckeln har de behörigheter som krävs
- Nyckeln är aktiv (inte återkallad)
- Du håller dig inom hastighetsgränserna
- Du använder rätt API-endpoint
- Headers är korrekt formaterade
Nästa steg
- Läs om OAuth 2.0
- Förstå JWT-token
- Utforska hastighetsbegränsningar
- Testa SDK:erna