Les clés API sont signées en HMAC à la création : la clé porte sa propre preuve d’intégrité, au format praxium_v1_<tenant>_<profile>_<timestamp>_<signature>, où la signature est dérivée côté serveur en HMAC-SHA256 à partir d’un secret de signature propre à chaque profil, conservé chiffré en base — le secret ne circule jamais sur le réseau, seule circule la signature qu’il produit. Le nom court de l’organisation est lié cryptographiquement à la signature : une clé émise pour l’organisation A ne peut donc pas être réutilisée sur l’organisation B sans casser la vérification. À l’arrivée, le serveur vérifie l’intégrité de la clé avant de renvoyer la moindre donnée, et les clés falsifiées ou détournées reçoivent un 403.
Les requêtes s’authentifient avec le classique Authorization: Bearer <key> en HTTPS — le même schéma que GitHub, OpenAI, Slack et Notion.
Par-dessus, chaque clé appartient à un seul profil API, qui définit précisément les types de données et les champs qu’elle peut lire. Chaque intégration ne touche que les données dont elle a besoin — le principe du moindre privilège, appliqué au champ près plutôt qu’au point de terminaison. La révocation et la rotation se font par profil depuis le portail d’administration.