Las claves de API se firman con HMAC al crearlas: la clave lleva su propia prueba de integridad con el formato praxium_v1_<tenant>_<profile>_<timestamp>_<signature>, donde la firma se deriva en el servidor con HMAC-SHA256 a partir de un secreto de firma propio de cada perfil que se guarda cifrado en la base de datos — el secreto nunca viaja por la red, solo viaja la firma que produce. El nombre corto de la organización queda unido criptográficamente a la firma, así que una clave emitida para la organización A no se puede reutilizar en la organización B sin romper la verificación. Al llegar, el servidor comprueba la integridad de la clave antes de devolver ningún dato, y las claves falsificadas o reutilizadas reciben un 403.
Las peticiones se autentican con el habitual Authorization: Bearer <key> sobre HTTPS — el mismo patrón que usan GitHub, OpenAI, Slack y Notion.
Además, cada clave pertenece a un único perfil de API, que define exactamente qué tipos de datos y campos puede leer. Cada integración toca solo los datos que necesita — el principio de mínimo privilegio, aplicado campo a campo y no endpoint a endpoint. La revocación y la rotación se hacen por perfil desde el portal de administración.