Κλειδιά API
Τα κλειδιά API είναι η βασική μέθοδος πιστοποίησης στο API του Brevo. Προσφέρουν έναν απλό και ασφαλή τρόπο προγραμματιστικής πρόσβασης στον λογαριασμό σας.
Τι είναι τα κλειδιά API;
Τα κλειδιά API είναι μοναδικά αναγνωριστικά που πιστοποιούν την εφαρμογή σας όταν στέλνει αιτήματα στο API του Brevo. Κάθε κλειδί είναι μια συμβολοσειρά 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;Υπηρεσίες διαχείρισης μυστικών στο cloud
- 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 έχει τα δικά του όρια ρυθμού:
- Free Plan: 300 αιτήματα/ημέρα
- Starter Plan: 20.000 αιτήματα/ημέρα
- Business Plan: 50.000 αιτήματα/ημέρα
- Enterprise Plan: Προσαρμοσμένα όρια
Κεφαλίδες ορίων ρυθμού
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 χαρακτήρες)
- Δεν υπάρχουν επιπλέον κενά ή κρυφοί χαρακτήρες
- Το κλειδί έχει τα απαιτούμενα δικαιώματα
- Το κλειδί είναι ενεργό (δεν έχει ανακληθεί)
- Βρίσκεστε εντός των ορίων ρυθμού
- Χρησιμοποιείτε το σωστό endpoint του API
- Οι κεφαλίδες έχουν σωστή μορφή
Επόμενα βήματα
- Μάθετε για το OAuth 2.0
- Κατανοήστε τα tokens JWT
- Εξερευνήστε τα όρια ρυθμού
- Δοκιμάστε τα SDK