🐍
SDK & CLI·Débutant·8 min

Installer et utiliser le SDK Python (coffrify-python)

Installez le SDK Python officiel de Coffrify, authentifiez-vous avec votre clé API et créez votre premier transfert chiffré en quelques lignes de code.

Télécharger en PDF

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)
  • pip ou tout gestionnaire de paquets Python compatible

Installation

$ pip install coffrify-python

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.

GET/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

ChampTypeRequisDescription
filesarrayOuiTableau d'objets fichiers. Chaque objet doit contenir name (string), size (int, octets) et optionnellement mime_type (string).
expires_in_hoursintegerNonDurée de vie du transfert en heures à partir de la création.
max_downloadsintegerNonNombre maximum de téléchargements autorisés. En mode sandbox, plafonné automatiquement à 5.
passwordstringNonMot de passe de protection du transfert.
transfer_titlestringNonTitre libre du transfert.
recipientstringNonAdresse e-mail du destinataire principal.
allow_downloadbooleanNonAutorise ou non le téléchargement des fichiers.
auto_deletebooleanNonSupprime automatiquement le transfert après expiration.
notesstringNonMessage ou note jointe au transfert.
custom_slugstringNonSlug personnalisé pour l'URL publique du transfert.
notify_opensbooleanNonNotifie le propriétaire à chaque ouverture.
require_totpbooleanNonActive la vérification TOTP pour le téléchargement.
watermark_enabledbooleanNonActive le filigrane sur les aperçus.
watermark_textstringNonTexte du filigrane (si activé).
geo_allowlistarrayNonCodes pays ISO autorisés (ex. ["FR", "DE"]).
geo_blocklistarrayNonCodes pays ISO bloqués.
scheduled_forstringNonDate/heure ISO 8601 d'ouverture planifiée du transfert.
encryption_modestringNonMode de chiffrement (ex. aes-256-gcm). Utiliser AES-256-GCM pour le chiffrement de bout en bout.
encryption_metadataobjectNonMétadonnées de chiffrement complémentaires (utilisé avec le mode E2E).

Exemples d'appels

# Vérifier le contexte de la clé
curl -s https://api.coffrify.com/v1/me \
-H "Authorization: Bearer cof_test_xxxxxxxxxxxxxxxxxxxx"
 
# Créer un transfert
curl -s -X POST https://api.coffrify.com/v1/transfers \
-H "Authorization: Bearer cof_test_xxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"files": [{"name": "rapport.pdf", "size": 204800, "mime_type": "application/pdf"}],
"transfer_title": "Rapport Q2 2026",
"expires_in_hours": 72,
"recipient": "client@exemple.fr"
}'

Réponses

GET /v1/me retourne le contexte complet de la clé appelante :

{
"workspace": {
"id": "ws_01hxyz...",
"name": "Acme Corp",
"slug": "acme-corp",
"plan": "pro",
"is_personal": false
},
"api_key": {
"id": "key_01hxyz...",
"name": "CI/CD Pipeline",
"key_prefix": "cof_test_xxxx",
"scopes": ["transfers:read", "transfers:write"],
"environment": "test",
"last_used_at": "2026-06-06T14:32:00Z",
"created_at": "2026-01-15T09:00:00Z"
},
"scopes": ["transfers:read", "transfers:write"],
"environment": "test"
}

POST /v1/transfers retourne le transfert créé (HTTP 201), les URLs d'upload pré-signées et l'URL de partage publique :

{
"transfer": {
"id": "trf_01hxyz...",
"short_code": "aB3dE9",
"transfer_title": "Rapport Q2 2026",
"status": "pending",
"expires_at": "2026-06-09T14:32:00Z",
"max_downloads": null,
"total_downloads": 0,
"scan_status": "pending",
"encryption_mode": null,
"created_at": "2026-06-06T14:32:00Z"
},
"upload_urls": [
{
"file_id": "rapport.pdf",
"url": "https://storage.coffrify.com/upload/signed?token=...",
"headers": {
"Content-Type": "application/pdf"
}
}
],
"share_url": "https://files.coffrify.com/aB3dE9",
"totp_secret": null
}

Erreurs

Code HTTPCode erreurQuandRésolution
401missing_api_keyHeader Authorization absent ou vide.Ajoutez Authorization: Bearer cof_live_… à chaque requête.
401invalid_api_keyLe 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_.
401revoked_api_keyLa clé a été révoquée manuellement depuis le tableau de bord.Créez une nouvelle clé dans Développeur > Clés API.
401expired_api_keyLa clé a dépassé sa date d'expiration (sandbox : 24 h).Créez une nouvelle clé ou prolongez l'expiration.
403scope_missingLa 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).
403ip_not_allowedL'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.
400validation_errorLe champ files[] est absent ou vide dans le corps POST.Fournissez au moins un objet fichier avec name et size.
422validation_errorEn mode sandbox : plus de 10 fichiers ou un fichier dépasse 10 Mo.Réduisez la taille ou le nombre de fichiers en sandbox.
429rate_limitedQuota de requêtes par minute dépassé (ou 25 transferts sandbox/24 h).Respectez les en-têtes X-RateLimit-Remaining et Retry-After.
500internal_errorErreur 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
Continuer

Autres tutoriels à suivre