API ключове
API ключовете са основният метод за удостоверяване пред Brevo API. Те предоставят прост и сигурен начин за програмен достъп до Вашия акаунт.
Какво представляват API ключовете?
API ключовете са уникални идентификатори, които удостоверяват Вашето приложение, когато то изпраща заявки към Brevo API. Всеки ключ е низ от 64 знака, който служи едновременно като идентификатор и като парола.
Example API key: xkeysib-a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456-Ab1Cd2Ef3Gh4Генериране на API ключове
Ръководство стъпка по стъпка
- Влезте в Brevo: Отворете таблото на Brevo
- Отидете в настройките: Кликнете върху профила си → Settings
- Отворете API ключовете: Изберете „API Keys“ от лявото меню
- Създайте нов ключ: Кликнете върху „Generate a New API Key“
- Наименувайте ключа: Дайте му описателно име (напр. „Production App“, „Development Testing“)
- Задайте разрешения: Изберете подходящото ниво на достъп
- Генерирайте: Кликнете върху „Generate“ и копирайте ключа веднага
Конвенции за наименуване на API ключове
Използвайте описателни имена, които Ви помагат да разпознаете предназначението на ключа:
production-web-appstaging-environmentmobile-app-ioswebhook-listenerdata-sync-service
Видове API ключове и разрешения
Ключове с пълен достъп
Permissions: All API endpointsUse cases: Complete application integrationRisk level: High - protect carefullyКлючове само за четене
Permissions: GET requests onlyUse cases: Analytics, reporting, dashboardsRisk level: Low - limited accessКлючове само за изпращане
Permissions: Transactional email sendingUse cases: Application notifications, receiptsRisk level: Medium - can send emailsКлючове за управление на контакти
Permissions: Contact CRUD operationsUse cases: CRM integrations, form submissionsRisk level: Medium - data modificationИзползване на API ключове
Удостоверяване чрез хедър
Включете Вашия API ключ в хедъра api-key:
GET /v3/account HTTP/1.1Host: api.brevo.comAccept: application/jsonContent-Type: application/jsonapi-key: YOUR_API_KEYПримери с код
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}"endСигурност на API ключовете
Сигурно съхранение
Променливи на средата (препоръчително)
# .env fileBREVO_API_KEY=xkeysib-your-api-key-here
# Usage in codeconst apiKey = process.env.BREVO_API_KEY;Облачни мениджъри на тайни
- AWS Secrets Manager
- Google Secret Manager
- Azure Key Vault
- HashiCorp Vault
Добри практики за сигурност
-
Никога не записвайте ключове твърдо в кода
// ❌ Bad - hardcodedconst apiKey = "xkeysib-a1b2c3d4...";// ✅ Good - environment variableconst apiKey = process.env.BREVO_API_KEY; -
Използвайте различни ключове за всяка среда
Production: BREVO_API_KEY_PRODStaging: BREVO_API_KEY_STAGINGDevelopment: BREVO_API_KEY_DEV -
Ротирайте ключовете редовно
- Задайте напомняния в календара за тримесечна ротация
- Използвайте инструменти за автоматизация на ротацията на ключове
- Подгответе предварително план за връщане назад
-
Наблюдавайте използването на ключовете
- Настройте известия за необичайна активност
- Преглеждайте месечно журналите за използване на ключовете
- Проследявайте географските модели на достъп
Управление на ключовете
Наблюдение на активните ключове
Наблюдавайте активните си ключове в таблото:
Key Name: production-web-appCreated: 2024-01-15Last Used: 2024-01-20 14:30 UTCRequests Today: 1,247Status: ActiveПроцес на ротация на ключове
- Генерирайте нов ключ: Създайте заместващ ключ
- Обновете конфигурацията: Внедрете с новия ключ
- Наблюдавайте: Уверете се, че новият ключ работи правилно
- Гратисен период: Оставете стария ключ активен за 24-48 часа
- Отменете стария ключ: Изтрийте предишния ключ
Аварийно отменяне на ключ
Ако ключ е компрометиран:
- Незабавно отменяне: Изтрийте ключа от таблото
- Генерирайте заместващ: Създайте нов ключ веднага
- Обновете приложенията: Внедрете с новия ключ възможно най-бързо
- Наблюдавайте активността: Проверете за неоторизирано използване
- Доклад за инцидента: Документирайте инцидента със сигурността
Ограничаване на скоростта и API ключове
Всеки API ключ има индивидуални ограничения на скоростта:
- Безплатен план: 300 заявки/ден
- План Starter: 20 000 заявки/ден
- План Business: 50 000 заявки/ден
- План Enterprise: индивидуални ограничения
Хедъри за ограничението на скоростта
HTTP/1.1 200 OKX-RateLimit-Limit: 1000X-RateLimit-Remaining: 999X-RateLimit-Reset: 1640995200Обработка на ограниченията на скоростта
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; }}Отстраняване на проблеми с API ключове
Често срещани съобщения за грешка
Невалиден API ключ (401)
{ "code": "unauthorized", "message": "Invalid API key provided"}Недостатъчни разрешения (403)
{ "code": "permission_denied", "message": "API key does not have required permissions"}Превишено ограничение на скоростта (429)
{ "code": "too_many_requests", "message": "Rate limit exceeded for API key"}Списък за проверка при отстраняване на грешки
- Ключът е форматиран правилно (64 знака)
- Няма излишни интервали или скрити знаци
- Ключът има необходимите разрешения
- Ключът е активен (не е отменен)
- Ограниченията на скоростта не са превишени
- Използвате правилната API крайна точка
- Хедърите са форматирани правилно
Следващи стъпки
- Научете за OAuth 2.0
- Запознайте се с JWT токените
- Разгледайте ограниченията на скоростта
- Опитайте SDK