Klucze API
Klucze API to podstawowa metoda uwierzytelniania w API Brevo. Dają prosty i bezpieczny sposób programowego dostępu do Twojego konta.
Czym są klucze API?
Klucze API to unikalne identyfikatory, które uwierzytelniają Twoją aplikację podczas wysyłania zapytań do API Brevo. Każdy klucz to 64-znakowy ciąg pełniący jednocześnie rolę identyfikatora i hasła.
Example API key: xkeysib-a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456-Ab1Cd2Ef3Gh4Generowanie kluczy API
Przewodnik krok po kroku
- Zaloguj się do Brevo: wejdź do swojego panelu Brevo
- Przejdź do ustawień: kliknij swój profil → Settings
- Otwórz klucze API: wybierz “API Keys” z menu po lewej
- Utwórz nowy klucz: kliknij “Generate a New API Key”
- Nazwij klucz: nadaj mu opisową nazwę (np. “Production App”, “Development Testing”)
- Ustaw uprawnienia: wybierz odpowiedni poziom dostępu
- Wygeneruj: kliknij “Generate” i od razu skopiuj klucz
Konwencje nazewnictwa kluczy API
Używaj opisowych nazw, które pomogą Ci rozpoznać przeznaczenie klucza:
production-web-appstaging-environmentmobile-app-ioswebhook-listenerdata-sync-service
Rodzaje kluczy API i uprawnienia
Klucze z pełnym dostępem
Permissions: All API endpointsUse cases: Complete application integrationRisk level: High - protect carefullyKlucze tylko do odczytu
Permissions: GET requests onlyUse cases: Analytics, reporting, dashboardsRisk level: Low - limited accessKlucze tylko do wysyłki
Permissions: Transactional email sendingUse cases: Application notifications, receiptsRisk level: Medium - can send emailsKlucze do zarządzania kontaktami
Permissions: Contact CRUD operationsUse cases: CRM integrations, form submissionsRisk level: Medium - data modificationUżywanie kluczy API
Uwierzytelnianie nagłówkiem
Umieść swój klucz API w nagłówku api-key:
GET /v3/account HTTP/1.1Host: api.brevo.comAccept: application/jsonContent-Type: application/jsonapi-key: YOUR_API_KEYPrzykłady kodu
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}"endBezpieczeństwo kluczy API
Bezpieczne przechowywanie
Zmienne środowiskowe (zalecane)
# .env fileBREVO_API_KEY=xkeysib-your-api-key-here
# Usage in codeconst apiKey = process.env.BREVO_API_KEY;Chmurowe menedżery sekretów
- AWS Secrets Manager
- Google Secret Manager
- Azure Key Vault
- HashiCorp Vault
Dobre praktyki bezpieczeństwa
-
Nigdy nie wpisuj kluczy na stałe w kodzie
// ❌ Bad - hardcodedconst apiKey = "xkeysib-a1b2c3d4...";// ✅ Good - environment variableconst apiKey = process.env.BREVO_API_KEY; -
Używaj innych kluczy dla każdego środowiska
Production: BREVO_API_KEY_PRODStaging: BREVO_API_KEY_STAGINGDevelopment: BREVO_API_KEY_DEV -
Regularnie rotuj klucze
- Ustaw przypomnienia w kalendarzu na rotację kwartalną
- Korzystaj z narzędzi automatyzujących rotację kluczy
- Miej przygotowany plan wycofania zmian
-
Monitoruj użycie kluczy
- Skonfiguruj alerty o nietypowej aktywności
- Przeglądaj logi użycia kluczy co miesiąc
- Śledź geograficzne wzorce dostępu
Zarządzanie kluczami
Monitorowanie aktywnych kluczy
Monitoruj swoje aktywne klucze w panelu:
Key Name: production-web-appCreated: 2024-01-15Last Used: 2024-01-20 14:30 UTCRequests Today: 1,247Status: ActiveProces rotacji kluczy
- Wygeneruj nowy klucz: utwórz klucz zastępczy
- Zaktualizuj konfigurację: wdróż aplikację z nowym kluczem
- Monitoruj: upewnij się, że nowy klucz działa poprawnie
- Okres przejściowy: utrzymuj stary klucz aktywny przez 24 do 48 godzin
- Unieważnij stary klucz: usuń poprzedni klucz
Awaryjne unieważnienie klucza
Jeśli klucz zostanie skompromitowany:
- Natychmiastowe unieważnienie: usuń klucz z panelu
- Wygeneruj zamiennik: od razu utwórz nowy klucz
- Zaktualizuj aplikacje: jak najszybciej wdróż je z nowym kluczem
- Monitoruj aktywność: sprawdź, czy nie doszło do nieautoryzowanego użycia
- Raport z incydentu: udokumentuj incydent bezpieczeństwa
Limity zapytań a klucze API
Każdy klucz API ma własne limity zapytań:
- Plan Free: 300 zapytań/dzień
- Plan Starter: 20 000 zapytań/dzień
- Plan Business: 50 000 zapytań/dzień
- Plan Enterprise: limity indywidualne
Nagłówki limitów zapytań
HTTP/1.1 200 OKX-RateLimit-Limit: 1000X-RateLimit-Remaining: 999X-RateLimit-Reset: 1640995200Obsługa limitów zapytań
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; }}Rozwiązywanie problemów z kluczami API
Najczęstsze komunikaty o błędach
Nieprawidłowy klucz API (401)
{ "code": "unauthorized", "message": "Invalid API key provided"}Niewystarczające uprawnienia (403)
{ "code": "permission_denied", "message": "API key does not have required permissions"}Przekroczony limit zapytań (429)
{ "code": "too_many_requests", "message": "Rate limit exceeded for API key"}Lista kontrolna diagnostyki
- Klucz ma poprawny format (64 znaki)
- Brak dodatkowych spacji i ukrytych znaków
- Klucz ma wymagane uprawnienia
- Klucz jest aktywny (nie został unieważniony)
- Limity zapytań nie zostały przekroczone
- Używasz właściwego endpointu API
- Nagłówki mają poprawny format
Następne kroki
- Poznaj OAuth 2.0
- Zrozum tokeny JWT
- Poznaj limity zapytań
- Wypróbuj SDK