Deux endpoints complémentaires couvrent la gestion du cycle de vie d'un transfert après sa création. Cloner (POST /v1/transfers/{id}/clone) crée un nouveau transfert avec un short_code inédit et un compteur de téléchargements remis à zéro, tout en réutilisant les objets de stockage existants : aucun re-téléversement n'est nécessaire. Prolonger (POST /v1/transfers/{id}/extend) repousse la date d'expiration d'un transfert actif ou expiré, dans la limite de la durée maximale autorisée par votre plan. Dans les deux cas, le plafond de rétention est lu en temps réel depuis coffrify_stripe_products.retention_days, ce qui garantit la cohérence avec votre abonnement.
/v1/transfers/{id}/cloneDuplique un transfert existant avec un nouveau short_code et un compteur réinitialisé. Les fichiers sont réutilisés depuis le stockage d'origine, sans re-téléversement.POST/v1/transfers/{id}/extendRepousse la date d'expiration d'un transfert. Accepte soit un nombre d'heures (hours) soit une date cible en ISO 8601 (until). Réactive automatiquement le statut à active.Authentification
Les deux endpoints exigent le scope transfers:write. Transmettez votre clé API dans l'en-tête Authorization: Bearer <clé>. En environnement de test, utilisez une clé préfixée cof_test_… ; en production, une clé cof_live_…. Le format cof_sandbox_… est accepté sur les workspaces en mode démo.
Corps de la requête
Le corps diffère selon l'opération : le clonage n'a pas de corps obligatoire, la prolongation attend une durée (hours) ou une date (until). Le tableau ci-dessous détaille les champs par endpoint.
| Endpoint | Champ | Type | Requis | Description |
|---|---|---|---|---|
/clone | expires_in_hours | number | Non | Durée de vie souhaitée pour le clone, en heures (minimum 1). Plafonné par retention_days du plan. Si omis, reproduit la durée de vie du transfert source. |
/clone | custom_slug | string | Non | Slug personnalisé pour le short_code (2 à 24 caractères alphanum ou tirets). Un slug aléatoire est généré en cas de collision ou si omis. |
/extend | hours | number | Oui (ou until) | Nombre d'heures à ajouter à partir de maintenant (minimum 1). Plafonné par retention_days du plan. |
/extend | until | string (ISO 8601) | Oui (ou hours) | Date d'expiration cible, ex. 2026-09-01T23:59:59Z. Doit rester dans la fenêtre autorisée par le plan. |
Exemples d'appel
Les exemples ci-dessous clonent un transfert, puis repoussent l'expiration d'un autre. Choisissez votre langage.
Réponses
Le clonage renvoie un nouveau transfert (201) avec un short_code neuf et un compteur de téléchargements remis à zéro. La prolongation renvoie le transfert mis à jour avec sa nouvelle échéance.
Erreurs
Les erreurs portent sur un transfert introuvable, une durée hors plafond du plan ou un scope manquant. Le tableau ci-dessous indique la résolution.
| HTTP | Code | Quand | Résolution |
|---|---|---|---|
| 400 | validation_error | Aucun champ hours ni until fourni sur /extend, ou valeur until non parseable en ISO 8601. | Vérifiez que votre corps JSON contient hours (entier) ou until (chaîne ISO 8601 valide). |
| 400 | validation_error | La date until dépasse le plafond autorisé par le plan. Le message contient la date maximale autorisée. | Réduisez la valeur until ou passez à un plan offrant une rétention plus longue. |
| 401 | invalid_api_key | Clé API absente, malformée ou révoquée. | Vérifiez l'en-tête Authorization: Bearer cof_live_… ou cof_test_…. |
| 403 | scope_missing | La clé API ne possède pas le scope transfers:write. | Régénérez une clé avec le scope transfers:write depuis le tableau de bord Coffrify. |
| 404 | not_found | Le transfert n'existe pas dans le workspace courant ou l'identifiant est incorrect. | Vérifiez que l'id correspond bien à un transfert appartenant à votre workspace. |
| 410 | not_found | (Extend uniquement) Le transfert a le statut deleted. | Un transfert supprimé ne peut pas être prolongé. Utilisez /clone depuis un autre transfert actif. |
| 500 | internal_error | Erreur de base de données inattendue. | Réessayez. Si l'erreur persiste, contactez le support avec le message d'erreur retourné. |
Voir aussi
- Créer un transfert
- Gérer les fichiers d'un transfert
- Protéger un transfert par mot de passe
- Référence complète : Transfers
- POST /v1/transfers/{id}/clone
- POST /v1/transfers/{id}/extend