Autenticación
API keys, scopes, rotación, cómo guardarlas.
Replai usa API keys con Bearer auth para el API REST y cookies HMAC-firmadas para el dashboard. Cada API key vive dentro de un tenant — nunca cruza tenants.
Formato de la API key
rk_live_ax87Cd... ← producción rk_test_PE2zKy... ← sandbox (próximamente)
Prefijo rk_live_ + 40+ chars. Guárdala como secreto — la tratamos como una contraseña. La parte después del prefijo es lo único que valida el server.
Header Authorization
Todo request al API REST lleva:
Authorization: Bearer rk_live_ax87Cd...
Scopes
Hoy todas las API keys tienen scope=*. Próximamente:
messages:send— sólo enviar mensajesmessages:read— sólo leer conversacioneswebhooks:manage— CRUD de webhooksadmin:*— todo lo de arriba + billing + team
Rotación
Cada key tiene un id (kid) + secret. Al rotar:
- El dashboard genera una key nueva.
- La vieja sigue funcionando 24h (overlap window).
- Pasadas las 24h, los requests con la vieja devuelven
401 UNAUTHENTICATED.
En producción rota cada 90 días o tras cualquier sospecha de filtración. Para rotación automática usa el endpoint POST /v1/api-keys y guarda el secret nuevo en tu secret manager.
Cookies del dashboard
El dashboard usa session_id + cookie HMAC-firmada (SESSION_SECRET). TTL 14 días deslizante. Domain-locked al dominio del dashboard. Marcada Secure y SameSite=Lax.
Errores comunes
| Status | Code | Causa |
|---|---|---|
| 401 | UNAUTHENTICATED | Falta header o key inválida. |
| 401 | UNAUTHENTICATED | Key rotada hace > 24h. |
| 403 | FORBIDDEN | Recurso de otro tenant. |
| 402 | PAYMENT_REQUIRED | Suscripción no activa. Ver Pricing. |