🔄
Transferts·Intermédiaire·7 min

Cloner ou prolonger la durée d'un transfert existant

Apprenez à dupliquer un transfert avec un nouveau lien de partage ou à repousser sa date d'expiration, sans re-téléverser les fichiers.

Télécharger en PDF

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.

POST/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.

EndpointChampTypeRequisDescription
/cloneexpires_in_hoursnumberNonDuré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.
/clonecustom_slugstringNonSlug 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.
/extendhoursnumberOui (ou until)Nombre d'heures à ajouter à partir de maintenant (minimum 1). Plafonné par retention_days du plan.
/extenduntilstring (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.

# --- Clone avec slug personnalisé ---
curl -X POST https://api.coffrify.com/v1/transfers/txf_abc123/clone \
-H "Authorization: Bearer cof_live_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"expires_in_hours": 72, "custom_slug": "rapport-q2-2026"}'
 
# --- Extend via nombre d'heures ---
curl -X POST https://api.coffrify.com/v1/transfers/txf_abc123/extend \
-H "Authorization: Bearer cof_live_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"hours": 48}'
 
# --- Extend jusqu'a une date précise ---
curl -X POST https://api.coffrify.com/v1/transfers/txf_abc123/extend \
-H "Authorization: Bearer cof_live_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"until": "2026-09-01T23:59:59Z"}'

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.

// POST /clone → HTTP 201
{
"transfer": {
"id": "txf_xyz789",
"short_code": "rapport-q2-2026",
"transfer_title": "Livrables Q2 2026",
"status": "active",
"expires_at": "2026-06-09T10:00:00.000Z",
"max_downloads": 10,
"total_downloads": 0,
"encryption_mode": "server",
"created_at": "2026-06-06T10:00:00.000Z"
},
"share_url": "https://files.coffrify.com/rapport-q2-2026",
"cloned_from": "txf_abc123",
"reused_files": 3
}
 
// POST /extend → HTTP 200
{
"transfer_id": "txf_abc123",
"short_code": "livrables-q1",
"previous_expires_at": "2026-06-07T08:00:00.000Z",
"new_expires_at": "2026-06-09T10:00:00.000Z",
"plan": "pro",
"plan_cap_hours": 720
}

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.

HTTPCodeQuandRésolution
400validation_errorAucun 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).
400validation_errorLa 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.
401invalid_api_keyClé API absente, malformée ou révoquée.Vérifiez l'en-tête Authorization: Bearer cof_live_… ou cof_test_….
403scope_missingLa 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.
404not_foundLe 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.
410not_found(Extend uniquement) Le transfert a le statut deleted.Un transfert supprimé ne peut pas être prolongé. Utilisez /clone depuis un autre transfert actif.
500internal_errorErreur de base de données inattendue.Réessayez. Si l'erreur persiste, contactez le support avec le message d'erreur retourné.

Voir aussi

Continuer

Autres tutoriels à suivre