Ce guide vous accompagne de l'installation du SDK jusqu'à votre premier transfert créé via l'API Coffrify. Vous configurerez votre clé API (cof_live_…, cof_test_… ou cof_sandbox_…), vérifierez votre contexte d'authentification avec GET /v1/me, puis créerez un transfert avec POST /v1/transfers. Tous les exemples reposent sur les champs et codes d'erreur réels de l'API (version 2026-05-14).
Prérequis et installation
Le SDK officiel cible Node.js 18 ou supérieur et fournit des types TypeScript de première classe. Installez-le avec votre gestionnaire de paquets habituel, puis exportez votre clé API dans une variable d'environnement (COFFRIFY_API_KEY) plutôt que de la coder en dur dans vos sources.
- Node.js 18 ou supérieur (LTS 20 et 22 recommandés).
- Une clé API active générée depuis app.coffrify.com/developer. Formats acceptés :
cof_live_…(production),cof_test_…(test),cof_sandbox_…(éphémère 24 h),cof_rk_…(restreinte) oucof_mcp_…(token MCP). Tout autre préfixe est rejeté avec401 invalid_api_key. - Installez le SDK via
npm install @coffrify/sdk(oupnpm add @coffrify/sdk/yarn add @coffrify/sdk), puis initialisez le client avecnew CoffrifyClient({ apiKey: process.env.COFFRIFY_API_KEY }). Stockez votre clé en variable d'environnement, jamais dans le code source.
Authentification : GET /v1/me
Avant tout appel métier, GET /v1/me est le moyen le plus simple de vérifier qu'une clé est valide : il renvoie l'identité du workspace, l'environnement de la clé (live, test ou sandbox) et la liste de ses scopes. Un 401 signifie une clé absente ou invalide, un 403 une clé valide mais sans le scope requis.
/v1/meRetourne le workspace, le descripteur de la clé (key_prefix, scopes, environment, last_used_at, created_at) et les champs synthétiques scopes et environment. Aucun scope requis.Créer un transfert : POST /v1/transfers
POST/v1/transfersCrée un transfert chiffré (AES-256-GCM par défaut) et retourne les URLs de téléversement pré-signées. Scope requis : transfers:write.Le scope transfers:write est obligatoire. Le seul champ requis est files[] (chaque élément : name, size en octets, optionnellement mime_type). Les champs facultatifs sont : expires_in_hours, max_downloads, password, transfer_title, notes, recipient, allow_download, auto_delete, custom_slug, notify_opens, require_totp, watermark_enabled, watermark_text, geo_allowlist, geo_blocklist, scheduled_for, encryption_mode et encryption_metadata. En environnement sandbox : 10 fichiers max, 10 Mo max/fichier, 5 téléchargements max, 25 transferts/24 h (au-delà : 429 rate_limited). La réponse inclut transfer (id, short_code, status, expires_at, scan_status, encryption_mode), upload_urls[] (file_id, url pré-signée, headers pour le PUT), share_url (https://files.coffrify.com/<short_code>) et totp_secret.
Erreurs
Le SDK lève une exception typée par catégorie d'erreur, ce qui vous permet de réagir précisément (clé invalide, scope manquant, quota atteint). Le tableau ci-dessous récapitule les cas les plus fréquents et leur résolution.
| HTTP | code | Quand | Résolution |
|---|---|---|---|
| 401 | missing_api_key | Header Authorization absent. | Ajoutez Authorization: Bearer cof_live_… à chaque requête. |
| 401 | invalid_api_key | Préfixe non reconnu ou clé introuvable en base. | Vérifiez le format : cof_live_…, cof_test_…, cof_sandbox_…, cof_rk_… ou cof_mcp_…. |
| 401 | expired_api_key | La clé a dépassé sa date d'expiration. | Générez une nouvelle clé depuis app.coffrify.com/developer. |
| 401 | revoked_api_key | La clé a été révoquée. | Créez une nouvelle clé avec les scopes appropriés. |
| 403 | scope_missing | Scope transfers:write ou transfers:read absent. | Activez le scope manquant à la création, ou utilisez workspace:manage pour un accès complet. |
| 403 | ip_not_allowed | L'IP n'est pas dans la liste blanche de la clé. | Ajoutez l'IP dans les paramètres de la clé ou désactivez la restriction d'IP. |
| 400 | validation_error | files[] absent, vide ou corps JSON malformé. | Envoyez un JSON valide avec au moins un objet { name, size } dans files[]. |
| 422 | validation_error | Limites sandbox dépassées (fichier > 10 Mo ou > 10 fichiers). | Réduisez la taille ou le nombre de fichiers, ou basculez en test / live. |
| 429 | rate_limited | Quota requêtes/min dépassé ou 25 transferts sandbox/24 h atteints. | Respectez les headers X-RateLimit-Remaining et Retry-After. |
| 500 | internal_error | Erreur interne inattendue. | Réessayez avec un backoff exponentiel et transmettez le header X-Request-Id au support. |
Voir aussi
- Référence GET /v1/me
- Référence POST /v1/transfers
- Référence GET /v1/transfers
- Guide : créer et gérer vos clés API
- Guide : webhooks et événements
- Guide : pagination par curseur
- Environnements : live, test, sandbox