Chiavi API
Le chiavi API sono il metodo principale per autenticarsi con l’API di Brevo. Offrono un modo semplice e sicuro per accedere al tuo account a livello programmatico.
Cosa sono le chiavi API?
Le chiavi API sono identificatori univoci che autenticano la tua applicazione quando effettua richieste all’API di Brevo. Ogni chiave è una stringa di 64 caratteri che funge sia da identificatore sia da password.
Example API key: xkeysib-a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456-Ab1Cd2Ef3Gh4Generare chiavi API
Guida passo passo
- Accedi a Brevo: apri la tua dashboard Brevo
- Vai in Impostazioni: clicca sul tuo profilo → Impostazioni
- Apri Chiavi API: seleziona “Chiavi API” dal menu di sinistra
- Crea una nuova chiave: clicca su “Genera una nuova chiave API”
- Assegna un nome: dalle un nome descrittivo (ad es. “App di produzione”, “Test di sviluppo”)
- Imposta i permessi: scegli il livello di accesso adeguato
- Genera: clicca su “Genera” e copia subito la chiave
Convenzioni di nomenclatura delle chiavi API
Usa nomi descrittivi che aiutino a identificare lo scopo della chiave:
production-web-appstaging-environmentmobile-app-ioswebhook-listenerdata-sync-service
Tipi e permessi delle chiavi API
Chiavi ad accesso completo
Permissions: All API endpointsUse cases: Complete application integrationRisk level: High - protect carefullyChiavi in sola lettura
Permissions: GET requests onlyUse cases: Analytics, reporting, dashboardsRisk level: Low - limited accessChiavi solo invio
Permissions: Transactional email sendingUse cases: Application notifications, receiptsRisk level: Medium - can send emailsChiavi per la gestione dei contatti
Permissions: Contact CRUD operationsUse cases: CRM integrations, form submissionsRisk level: Medium - data modificationUsare le chiavi API
Autenticazione tramite header
Includi la tua chiave API nell’header api-key:
GET /v3/account HTTP/1.1Host: api.brevo.comAccept: application/jsonContent-Type: application/jsonapi-key: YOUR_API_KEYEsempi di codice
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}"endSicurezza delle chiavi API
Archiviazione sicura
Variabili d’ambiente (consigliato)
# .env fileBREVO_API_KEY=xkeysib-your-api-key-here
# Usage in codeconst apiKey = process.env.BREVO_API_KEY;Secret manager cloud
- AWS Secrets Manager
- Google Secret Manager
- Azure Key Vault
- HashiCorp Vault
Best practice di sicurezza
-
Non scrivere mai le chiavi nel codice
// ❌ Bad - hardcodedconst apiKey = "xkeysib-a1b2c3d4...";// ✅ Good - environment variableconst apiKey = process.env.BREVO_API_KEY; -
Usa chiavi diverse per ogni ambiente
Production: BREVO_API_KEY_PRODStaging: BREVO_API_KEY_STAGINGDevelopment: BREVO_API_KEY_DEV -
Ruota le chiavi regolarmente
- Imposta promemoria per la rotazione trimestrale
- Usa strumenti di automazione per la rotazione
- Tieni pronto un piano di rollback
-
Monitora l’uso delle chiavi
- Configura alert per attività anomale
- Esamina i log di utilizzo ogni mese
- Tieni traccia degli schemi di accesso geografico
Gestione delle chiavi
Monitoraggio delle chiavi attive
Controlla le chiavi attive nella dashboard:
Key Name: production-web-appCreated: 2024-01-15Last Used: 2024-01-20 14:30 UTCRequests Today: 1,247Status: ActiveProcesso di rotazione delle chiavi
- Genera una nuova chiave: crea una chiave sostitutiva
- Aggiorna la configurazione: distribuisci con la nuova chiave
- Monitora: verifica che la nuova chiave funzioni correttamente
- Periodo di grazia: mantieni attiva la vecchia chiave per 24–48 ore
- Revoca la vecchia chiave: elimina la chiave precedente
Revoca di emergenza di una chiave
Se una chiave viene compromessa:
- Revoca immediata: elimina la chiave dalla dashboard
- Crea una sostituta: genera subito una nuova chiave
- Aggiorna le applicazioni: distribuisci la nuova chiave appena possibile
- Monitora l’attività: verifica eventuali utilizzi non autorizzati
- Report d’incidente: documenta l’incidente di sicurezza
Rate limit e chiavi API
Ogni chiave API ha limiti di richiesta individuali:
- Piano Free: 300 richieste/giorno
- Piano Starter: 20.000 richieste/giorno
- Piano Business: 50.000 richieste/giorno
- Piano Enterprise: limiti personalizzati
Header del rate limit
HTTP/1.1 200 OKX-RateLimit-Limit: 1000X-RateLimit-Remaining: 999X-RateLimit-Reset: 1640995200Gestire il rate limit
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; }}Risoluzione dei problemi con le chiavi API
Messaggi di errore comuni
Chiave API non valida (401)
{ "code": "unauthorized", "message": "Invalid API key provided"}Permessi insufficienti (403)
{ "code": "permission_denied", "message": "API key does not have required permissions"}Rate limit superato (429)
{ "code": "too_many_requests", "message": "Rate limit exceeded for API key"}Checklist di debug
- La chiave è formattata correttamente (64 caratteri)
- Nessuno spazio aggiuntivo o carattere nascosto
- La chiave ha i permessi necessari
- La chiave è attiva (non revocata)
- Entro i limiti di richiesta
- Uso dell’endpoint API corretto
- Header formattati correttamente
Prossimi passi
- Scopri OAuth 2.0
- Comprendi i token JWT
- Esplora i rate limit
- Prova gli SDK