Le SDK Python coffrify-python est la façon la plus rapide d'intégrer l'API Coffrify dans vos scripts et applications Python. Il encapsule l'authentification par clé API (cof_live_…, cof_test_…, cof_sandbox_…), la gestion des en-têtes d'upload, la pagination par curseur, et la remontée d'erreurs structurées. Ce guide vous accompagne de l'installation jusqu'à la création d'un premier transfert et à la récupération de votre contexte d'authentification via /v1/me.
Prérequis
- Python 3.9 ou supérieur
- Une clé API Coffrify (format
cof_live_…pour la production,cof_test_…pour les tests,cof_sandbox_…pour le bac à sable) pipou tout gestionnaire de paquets Python compatible
Installation
Le paquet expose un client synchrone (CoffrifyClient) et un client asynchrone (AsyncCoffrifyClient). Les exemples ci-dessous utilisent le client synchrone, adapté aux scripts et aux tâches ponctuelles.
Authentification
Toutes les requêtes authentifiées passent par le header HTTP Authorization: Bearer <votre_clé>. L'API accepte trois familles de préfixes : cof_live_… (production), cof_test_… (test), cof_sandbox_… (bac à sable éphémère). Chaque clé est liée à un workspace et à un ensemble de scopes (ex. transfers:read, transfers:write). L'endpoint /v1/me ne requiert aucun scope particulier : il retourne le contexte courant de la clé, y compris la liste de ses scopes réels.
/v1/meRetourne le contexte courant de la clé API : workspace, identifiant de la clé, scopes accordés et environnement (live / test / sandbox).GET/v1/transfersListe les transferts du workspace avec pagination par curseur. Scope requis : `transfers:read`.POST/v1/transfersCrée un nouveau transfert et retourne les URLs d'upload pré-signées pour chaque fichier. Scope requis : `transfers:write`.Corps de la requête POST /v1/transfers
| Champ | Type | Requis | Description |
|---|---|---|---|
files | array | Oui | Tableau d'objets fichiers. Chaque objet doit contenir name (string), size (int, octets) et optionnellement mime_type (string). |
expires_in_hours | integer | Non | Durée de vie du transfert en heures à partir de la création. |
max_downloads | integer | Non | Nombre maximum de téléchargements autorisés. En mode sandbox, plafonné automatiquement à 5. |
password | string | Non | Mot de passe de protection du transfert. |
transfer_title | string | Non | Titre libre du transfert. |
recipient | string | Non | Adresse e-mail du destinataire principal. |
allow_download | boolean | Non | Autorise ou non le téléchargement des fichiers. |
auto_delete | boolean | Non | Supprime automatiquement le transfert après expiration. |
notes | string | Non | Message ou note jointe au transfert. |
custom_slug | string | Non | Slug personnalisé pour l'URL publique du transfert. |
notify_opens | boolean | Non | Notifie le propriétaire à chaque ouverture. |
require_totp | boolean | Non | Active la vérification TOTP pour le téléchargement. |
watermark_enabled | boolean | Non | Active le filigrane sur les aperçus. |
watermark_text | string | Non | Texte du filigrane (si activé). |
geo_allowlist | array | Non | Codes pays ISO autorisés (ex. ["FR", "DE"]). |
geo_blocklist | array | Non | Codes pays ISO bloqués. |
scheduled_for | string | Non | Date/heure ISO 8601 d'ouverture planifiée du transfert. |
encryption_mode | string | Non | Mode de chiffrement (ex. aes-256-gcm). Utiliser AES-256-GCM pour le chiffrement de bout en bout. |
encryption_metadata | object | Non | Métadonnées de chiffrement complémentaires (utilisé avec le mode E2E). |
Exemples d'appels
Réponses
GET /v1/me retourne le contexte complet de la clé appelante :
POST /v1/transfers retourne le transfert créé (HTTP 201), les URLs d'upload pré-signées et l'URL de partage publique :
Erreurs
| Code HTTP | Code erreur | Quand | Résolution |
|---|---|---|---|
| 401 | missing_api_key | Header Authorization absent ou vide. | Ajoutez Authorization: Bearer cof_live_… à chaque requête. |
| 401 | invalid_api_key | Le préfixe de la clé est inconnu ou la clé n'existe pas en base. | Vérifiez que votre clé commence par cof_live_, cof_test_ ou cof_sandbox_. |
| 401 | revoked_api_key | La clé a été révoquée manuellement depuis le tableau de bord. | Créez une nouvelle clé dans Développeur > Clés API. |
| 401 | expired_api_key | La clé a dépassé sa date d'expiration (sandbox : 24 h). | Créez une nouvelle clé ou prolongez l'expiration. |
| 403 | scope_missing | La clé ne possède pas le scope requis (transfers:read ou transfers:write). | Créez une clé avec le scope adéquat ou utilisez workspace:manage (couvre tous les scopes). |
| 403 | ip_not_allowed | L'IP appelante n'est pas dans la liste blanche de la clé. | Ajoutez l'IP dans les paramètres de la clé ou supprimez la restriction. |
| 400 | validation_error | Le champ files[] est absent ou vide dans le corps POST. | Fournissez au moins un objet fichier avec name et size. |
| 422 | validation_error | En mode sandbox : plus de 10 fichiers ou un fichier dépasse 10 Mo. | Réduisez la taille ou le nombre de fichiers en sandbox. |
| 429 | rate_limited | Quota de requêtes par minute dépassé (ou 25 transferts sandbox/24 h). | Respectez les en-têtes X-RateLimit-Remaining et Retry-After. |
| 500 | internal_error | Erreur interne inattendue. | Contactez le support en fournissant le request_id retourné dans le corps de l'erreur. |
Voir aussi
- Référence GET /v1/me
- Référence POST /v1/transfers
- Référence GET /v1/transfers
- Authentification et scopes
- Gérer la pagination par curseur
- Utiliser les Webhooks
- Intégration MCP pour agents IA