API klíče
API klíče jsou hlavní metodou autentizace vůči Brevo API. Nabízejí jednoduchý a bezpečný způsob, jak programově přistupovat k Vašemu účtu.
Co jsou API klíče?
API klíče jsou jedinečné identifikátory, které ověřují Vaši aplikaci při odesílání požadavků na Brevo API. Každý klíč je řetězec o 64 znacích, který slouží zároveň jako identifikátor i jako heslo.
Example API key: xkeysib-a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456-Ab1Cd2Ef3Gh4Generování API klíčů
Průvodce krok za krokem
- Přihlaste se do Brevo: Otevřete svůj Brevo dashboard
- Přejděte do nastavení: Klikněte na svůj profil → Settings
- Otevřete API klíče: V levém menu vyberte „API Keys“
- Vytvořte nový klíč: Klikněte na „Generate a New API Key“
- Pojmenujte klíč: Zvolte popisný název (například „Production App“, „Development Testing“)
- Nastavte oprávnění: Vyberte odpovídající úroveň přístupu
- Vygenerujte: Klikněte na „Generate“ a klíč si ihned zkopírujte
Konvence pojmenování API klíčů
Používejte popisné názvy, podle kterých snadno poznáte účel klíče:
production-web-appstaging-environmentmobile-app-ioswebhook-listenerdata-sync-service
Typy API klíčů a oprávnění
Klíče s plným přístupem
Permissions: All API endpointsUse cases: Complete application integrationRisk level: High - protect carefullyKlíče jen pro čtení
Permissions: GET requests onlyUse cases: Analytics, reporting, dashboardsRisk level: Low - limited accessKlíče jen pro odesílání
Permissions: Transactional email sendingUse cases: Application notifications, receiptsRisk level: Medium - can send emailsKlíče pro správu kontaktů
Permissions: Contact CRUD operationsUse cases: CRM integrations, form submissionsRisk level: Medium - data modificationPoužívání API klíčů
Autentizace v hlavičce
Vložte svůj API klíč do hlavičky api-key:
GET /v3/account HTTP/1.1Host: api.brevo.comAccept: application/jsonContent-Type: application/jsonapi-key: YOUR_API_KEYUkázky kódu
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}"endZabezpečení API klíčů
Bezpečné uložení
Proměnné prostředí (doporučeno)
# .env fileBREVO_API_KEY=xkeysib-your-api-key-here
# Usage in codeconst apiKey = process.env.BREVO_API_KEY;Cloudoví správci tajemství
- AWS Secrets Manager
- Google Secret Manager
- Azure Key Vault
- HashiCorp Vault
Doporučené bezpečnostní postupy
-
Nikdy nezapisujte klíče natvrdo do kódu
// ❌ Bad - hardcodedconst apiKey = "xkeysib-a1b2c3d4...";// ✅ Good - environment variableconst apiKey = process.env.BREVO_API_KEY; -
Pro každé prostředí používejte jiný klíč
Production: BREVO_API_KEY_PRODStaging: BREVO_API_KEY_STAGINGDevelopment: BREVO_API_KEY_DEV -
Pravidelně klíče obměňujte
- Nastavte si v kalendáři připomínku na čtvrtletní obměnu
- Pro obměnu klíčů využijte automatizační nástroje
- Mějte připravený plán pro návrat k původnímu stavu
-
Sledujte využití klíčů
- Nastavte si upozornění na neobvyklou aktivitu
- Každý měsíc procházejte logy využití klíčů
- Sledujte, z jakých zemí přístupy přicházejí
Správa klíčů
Sledování aktivních klíčů
Aktivní klíče sledujte v dashboardu:
Key Name: production-web-appCreated: 2024-01-15Last Used: 2024-01-20 14:30 UTCRequests Today: 1,247Status: ActivePostup obměny klíče
- Vygenerujte nový klíč: Vytvořte náhradní klíč
- Aktualizujte konfiguraci: Nasaďte aplikaci s novým klíčem
- Sledujte provoz: Ověřte, že nový klíč funguje správně
- Přechodné období: Ponechte starý klíč aktivní 24 až 48 hodin
- Zrušte starý klíč: Předchozí klíč smažte
Nouzové zrušení klíče
Pokud dojde ke kompromitaci klíče:
- Okamžité zrušení: Smažte klíč v dashboardu
- Vytvoření náhrady: Ihned vygenerujte nový klíč
- Aktualizace aplikací: Co nejrychleji nasaďte nový klíč
- Kontrola aktivity: Ověřte, zda nedošlo k neoprávněnému použití
- Hlášení incidentu: Zdokumentujte bezpečnostní incident
Omezení frekvence a API klíče
Každý API klíč má vlastní limity požadavků:
- Tarif Free: 300 požadavků denně
- Tarif Starter: 20 000 požadavků denně
- Tarif Business: 50 000 požadavků denně
- Tarif Enterprise: individuální limity
Hlavičky s limity požadavků
HTTP/1.1 200 OKX-RateLimit-Limit: 1000X-RateLimit-Remaining: 999X-RateLimit-Reset: 1640995200Práce s limity požadavků
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; }}Řešení potíží s API klíči
Časté chybové zprávy
Neplatný API klíč (401)
{ "code": "unauthorized", "message": "Invalid API key provided"}Nedostatečná oprávnění (403)
{ "code": "permission_denied", "message": "API key does not have required permissions"}Překročený limit požadavků (429)
{ "code": "too_many_requests", "message": "Rate limit exceeded for API key"}Kontrolní seznam pro ladění
- Klíč má správný formát (64 znaků)
- Žádné mezery navíc ani skryté znaky
- Klíč má potřebná oprávnění
- Klíč je aktivní (nebyl zrušen)
- Jste v mezích limitu požadavků
- Používáte správný API endpoint
- Hlavičky mají správný formát
Další kroky
- Seznamte se s OAuth 2.0
- Porozumějte tokenům JWT
- Prozkoumejte limity požadavků
- Vyzkoušejte SDK