Tous les appels à l'API REST de Coffrify sont authentifiés par une clé secrète que vous passez dans l'en-tête HTTP Authorization. La clé identifie votre workspace, l'environnement ciblé (production, test ou sandbox) et l'ensemble des permissions accordées. Cette page décrit le format des clés, leur transmission, les scopes disponibles, la rotation, la révocation et le stockage sécurisé. Les clés se créent et se gèrent depuis votre tableau de bord développeur, ou par l'API elle-même si vous disposez d'une clé habilitée.
En-tête Authorization
Chaque requête doit porter votre clé secrète dans l'en-tête Authorization, préfixée par Bearer. La base de l'API est https://api.coffrify.com/v1. Toutes les communications passent en HTTPS : un appel en clair est refusé.
Avec le SDK JavaScript/TypeScript officiel (paquet coffrify), il vous suffit de fournir la clé à l'initialisation : l'en-tête est ajouté automatiquement à chaque appel.
Types et préfixes de clés
Le préfixe de la clé indique à la fois sa nature et son environnement. Vous reconnaissez donc d'un coup d'œil si une clé vise la production, le test ou le sandbox, et si elle est de pleine puissance ou restreinte.
| Préfixe | Environnement | Description |
|---|---|---|
| cof_live_ | Production | Clé de pleine puissance. Opère sur vos données et votre facturation réelles. |
| cof_test_ | Test | Clé de pleine puissance pour vos essais, hors facturation et sans effet sur la production. |
| cof_sandbox_ | Sandbox | Bac à sable isolé et éphémère de 24 h, avec garde-fous (volume, nombre de fichiers et de transferts plafonnés). |
| cof_rk_live_ / cof_rk_test_ / cof_rk_sandbox_ | Selon le suffixe | Clé restreinte : vous choisissez précisément les scopes accordés. |
| cof_mcp_live_ / cof_mcp_test_ / cof_mcp_sandbox_ | Selon le suffixe | Jeton MCP, destiné au serveur Model Context Protocol (mcp.coffrify.com). |
Clés restreintes et scopes
Une clé de pleine puissance (cof_live_ / cof_test_) donne accès à l'ensemble des opérations du workspace. Pour le principe du moindre privilège, préférez une clé restreinte (cof_rk_) à laquelle vous attribuez uniquement les scopes nécessaires. Un appel exigeant un scope absent de la clé renvoie une erreur 403 scope_missing. Les scopes les plus courants :
| Scope | Permission |
|---|---|
| transfers:read | Lister et lire les transferts. |
| transfers:write | Créer et supprimer des transferts. |
| transfers:download | Déclencher le téléchargement des fichiers d'un transfert. |
| collections:read | Lister et lire les collections. |
| collections:write | Créer et modifier des collections. |
| collections:manage | Gérer les collections et leurs éléments. |
| intake:read | Lire les réceptions (intakes) et leurs documents. |
| intake:write | Créer des réceptions et déposer des documents. |
| webhooks:read | Lister les webhooks et leur historique de livraison. |
| webhooks:manage | Créer, modifier, tester et supprimer des webhooks. |
| api_keys:manage | Créer, lister, faire tourner et révoquer des clés API. |
| gdpr:export | Lancer un export RGPD complet du workspace. |
Si vous créez une clé restreinte sans préciser de scopes, elle reçoit par défaut transfers:read et transfers:write. Une clé restreinte ne peut jamais accorder les scopes d'administration les plus sensibles, comme api_keys:manage : pour ceux-là, utilisez une clé de pleine puissance.
Créer une clé par l'API
La clé qui crée d'autres clés doit porter le scope api_keys:manage. Vous indiquez le nom, l'environnement (live ou test), le type (full ou restricted) et, pour une clé restreinte, la liste des scopes.
/v1/api-keysCrée une clé API. Sa valeur n'est renvoyée qu'une seule fois.Le champ key de la réponse contient la valeur secrète complète : c'est la seule occasion de la lire. Le champ key_prefix est l'identifiant abrégé que vous retrouverez ensuite dans la liste de vos clés.
Rotation
La rotation génère une nouvelle clé reprenant exactement les scopes, l'environnement et les restrictions d'origine, tout en gardant l'ancienne active pendant une fenêtre de grâce (grace_days, 7 jours par défaut, 30 au maximum). Vous déployez la nouvelle clé sans interruption, puis l'ancienne est révoquée automatiquement à l'échéance. Passez grace_days: 0 pour révoquer l'ancienne immédiatement.
/v1/api-keys/{id}/rotateFait tourner une clé et planifie la révocation de l'ancienne après la fenêtre de grâce.La réponse fournit new_key (la nouvelle valeur secrète, à copier sur-le-champ), new_id, old_id et grace_until, la date limite avant laquelle vous devez avoir basculé tous vos appels.
Révocation
Si une clé est compromise ou n'a plus lieu d'être, révoquez-la sans délai. La révocation est immédiate et définitive : tout appel ultérieur portant cette clé est refusé. Vous pouvez joindre un motif (reason).
/v1/api-keys/{id}Révoque définitivement une clé API.Stockage sécurisé des clés
Une clé secrète donne accès aux données de votre workspace : traitez-la avec le même soin qu'un mot de passe. Quelques règles simples :
- Conservez les clés dans un gestionnaire de secrets ou des variables d'environnement, jamais en dur dans le code.
- Ne les versionnez pas : excluez les fichiers
.envdu contrôle de version et ne les écrivez pas dans les journaux. - Ne les exposez jamais dans du code côté navigateur ni dans une application mobile : une clé secrète reste strictement côté serveur.
- Attribuez à chaque service sa propre clé restreinte, limitée aux scopes utiles, pour pouvoir la révoquer isolément.
- Faites tourner régulièrement les clés de production, et immédiatement à la moindre suspicion de fuite.
Erreurs d'authentification
Une authentification qui échoue renvoie un statut HTTP 401 ou 403 et un corps JSON décrivant l'erreur. Le champ request_id est précieux si vous contactez le support.
| Statut | Code | Cause |
|---|---|---|
| 401 | invalid_api_key | Clé absente, malformée, inconnue, révoquée ou expirée. |
| 403 | scope_missing | La clé est valide mais ne possède pas le scope requis par l'appel. |
| 429 | rate_limited | Limite de débit atteinte ; respectez l'en-tête Retry-After. |