Claves de API
Las claves de API son el método principal para autenticarte en la API de Brevo. Ofrecen una forma sencilla y segura de acceder a tu cuenta de manera programática.
¿Qué son las claves de API?
Las claves de API son identificadores únicos que autentican tu aplicación cuando envía peticiones a la API de Brevo. Cada clave es una cadena de 64 caracteres que funciona a la vez como identificador y como contraseña.
Example API key: xkeysib-a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456-Ab1Cd2Ef3Gh4Generar claves de API
Guía paso a paso
- Inicia sesión en Brevo: entra en tu panel de control de Brevo
- Ve a la configuración: haz clic en tu perfil → Configuración
- Abre API Keys: selecciona “API Keys” en el menú de la izquierda
- Crea una clave nueva: haz clic en “Generate a New API Key”
- Ponle nombre a la clave: dale un nombre descriptivo (por ejemplo, “Production App” o “Development Testing”)
- Define los permisos: elige el nivel de acceso adecuado
- Genera: haz clic en “Generate” y copia la clave de inmediato
Convenciones de nombres para las claves de API
Usa nombres descriptivos que te ayuden a identificar para qué sirve cada clave:
production-web-appstaging-environmentmobile-app-ioswebhook-listenerdata-sync-service
Tipos de claves de API y permisos
Claves de acceso completo
Permissions: All API endpointsUse cases: Complete application integrationRisk level: High - protect carefullyClaves de solo lectura
Permissions: GET requests onlyUse cases: Analytics, reporting, dashboardsRisk level: Low - limited accessClaves de solo envío
Permissions: Transactional email sendingUse cases: Application notifications, receiptsRisk level: Medium - can send emailsClaves de gestión de contactos
Permissions: Contact CRUD operationsUse cases: CRM integrations, form submissionsRisk level: Medium - data modificationUsar las claves de API
Autenticación por cabecera
Incluye tu clave de API en la cabecera api-key:
GET /v3/account HTTP/1.1Host: api.brevo.comAccept: application/jsonContent-Type: application/jsonapi-key: YOUR_API_KEYEjemplos de código
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}"endSeguridad de las claves de API
Almacenamiento seguro
Variables de entorno (recomendado)
# .env fileBREVO_API_KEY=xkeysib-your-api-key-here
# Usage in codeconst apiKey = process.env.BREVO_API_KEY;Gestores de secretos en la nube
- AWS Secrets Manager
- Google Secret Manager
- Azure Key Vault
- HashiCorp Vault
Buenas prácticas de seguridad
-
Nunca escribas las claves en el código
// ❌ Bad - hardcodedconst apiKey = "xkeysib-a1b2c3d4...";// ✅ Good - environment variableconst apiKey = process.env.BREVO_API_KEY; -
Usa una clave distinta en cada entorno
Production: BREVO_API_KEY_PRODStaging: BREVO_API_KEY_STAGINGDevelopment: BREVO_API_KEY_DEV -
Rota las claves con regularidad
- Programa recordatorios en el calendario para rotarlas cada trimestre
- Usa herramientas de automatización para la rotación de claves
- Ten preparado un plan de reversión
-
Vigila el uso de las claves
- Configura alertas para detectar actividad inusual
- Revisa cada mes los registros de uso de las claves
- Haz seguimiento de los patrones de acceso por ubicación geográfica
Gestión de claves
Monitorización de las claves activas
Consulta tus claves activas en el panel de control:
Key Name: production-web-appCreated: 2024-01-15Last Used: 2024-01-20 14:30 UTCRequests Today: 1,247Status: ActiveProceso de rotación de claves
- Genera una clave nueva: crea la clave que sustituirá a la anterior
- Actualiza la configuración: despliega con la clave nueva
- Monitoriza: asegúrate de que la clave nueva funciona correctamente
- Periodo de gracia: mantén activa la clave antigua entre 24 y 48 horas
- Revoca la clave antigua: elimina la clave anterior
Revocación de emergencia
Si una clave queda expuesta:
- Revocación inmediata: elimina la clave desde el panel de control
- Genera una sustituta: crea una clave nueva de inmediato
- Actualiza tus aplicaciones: despliega con la clave nueva cuanto antes
- Vigila la actividad: comprueba si ha habido usos no autorizados
- Informe del incidente: documenta el incidente de seguridad
Límites de peticiones y claves de API
Cada clave de API tiene sus propios límites de peticiones:
- Plan Gratis: 300 peticiones/día
- Plan Starter: 20.000 peticiones/día
- Plan Business: 50.000 peticiones/día
- Plan Enterprise: límites personalizados
Cabeceras de límite de peticiones
HTTP/1.1 200 OKX-RateLimit-Limit: 1000X-RateLimit-Remaining: 999X-RateLimit-Reset: 1640995200Gestionar los límites de peticiones
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; }}Solución de problemas con las claves de API
Mensajes de error habituales
Clave de API no válida (401)
{ "code": "unauthorized", "message": "Invalid API key provided"}Permisos insuficientes (403)
{ "code": "permission_denied", "message": "API key does not have required permissions"}Límite de peticiones superado (429)
{ "code": "too_many_requests", "message": "Rate limit exceeded for API key"}Lista de comprobación para depurar
- La clave tiene el formato correcto (64 caracteres)
- No hay espacios de más ni caracteres ocultos
- La clave tiene los permisos necesarios
- La clave está activa (no revocada)
- Estás dentro de los límites de peticiones
- Usas el endpoint de API correcto
- Las cabeceras tienen el formato correcto
Próximos pasos
- Más información sobre OAuth 2.0
- Comprender los tokens JWT
- Explora los límites de peticiones
- Prueba los SDK