Référence APICloner un transfert
POST/v1/transfers/{id}/clone

Cloner un transfert

Duplique un transfert existant avec un nouveau short_code, un compteur de téléchargements remis à zéro, et réutilise les fichiers d'origine sans nouvel upload.

2 min de lectureTélécharger en PDF

Requête exemple

{
"custom_slug": "contrat-q3-bis",
"expires_in_hours": 72
}

Réponse exemple

{
"transfer": {
"id": "a3f1c2e8-7b4d-4e91-9c2a-1f6b8d0e5a47",
"status": "active",
"created_at": "2026-06-05T14:22:31.000Z",
"expires_at": "2026-06-08T14:22:31.000Z",
"short_code": "contrat-q3-bis",
"max_downloads": 25,
"transfer_title": "Contrat Q3 - signature",
"encryption_mode": "server",
"total_downloads": 0
},
"share_url": "https://files.coffrify.com/contrat-q3-bis",
"cloned_from": "f02b91d4-5c7a-4a2e-8e13-6d9f0a1b2c3d",
"reused_files": 3
}
POST/v1/transfers/{id}/cloneCrée une copie active d'un transfert existant en réutilisant ses fichiers d'origine.

Duplique le transfert identifié par {id} dans le même workspace. Le clone reçoit un nouveau `short_code` (et donc une nouvelle URL de partage), un compteur total_downloads remis à 0, et un statut active. Le comportement le plus notable est que les fichiers d'origine sont réutilisés tels quels : aucune ré-upload n'est effectuée, les objets de stockage (Scaleway) sont partagés via le même storage_path. Cela rend le clonage instantané, même pour des transferts volumineux. La plupart des attributs du transfert source sont recopiés (titre, notes, protection par mot de passe et hash, max_downloads, filigrane, listes géographiques, mode de chiffrement).

La date d'expiration est recalculée. Par défaut, le clone reprend la durée de vie d'origine (intervalle created_atexpires_at du source), sauf si expires_in_hours est fourni. Cette durée est ensuite plafonnée à la rétention maximale autorisée par le plan du workspace (retention_days du produit Stripe associé), avec un minimum de 24 heures. Le champ cloned_from du clone référence l'id du transfert source.

Authentification

Cette route requiert une clé API valide avec le scope transfers:write. Une clé sans ce scope reçoit une erreur 403 scope_missing. Le transfert source est résolu strictement dans le workspace de la clé (workspace_id), ce qui empêche de cloner un transfert appartenant à un autre workspace.

Corps de la requête

Le corps est optionnel : un POST sans corps clone le transfert en reprenant ses paramètres d'origine.

ChampTypeRequisDescription
expires_in_hoursnumberNonDurée de vie du clone en heures. Forcée à un minimum de 1, puis plafonnée à la rétention maximale du plan. Si omis, la durée du transfert d'origine est réutilisée.
custom_slugstringNonSlug personnalisé pour le short_code. Mis en minuscules, nettoyé (seuls a-z, 0-9 et le tiret sont conservés) et tronqué à 24 caractères. Utilisé uniquement s'il fait au moins 2 caractères après nettoyage ; sinon un code aléatoire de 10 caractères est généré. En cas de collision avec un short_code existant, un code aléatoire est tiré (jusqu'à 5 tentatives).

Réponse

Réponse 201 (__status: 201). L'objet transfer contient les champs du clone : id, short_code, transfer_title, status (active), expires_at, max_downloads, total_downloads (0), encryption_mode et created_at. Au niveau racine, share_url donne l'URL de partage publique (https://files.coffrify.com/{short_code}), cloned_from rappelle l'id du source, et reused_files indique le nombre de fichiers réutilisés depuis l'original.

Erreurs

CodeQuandRésolution
400 validation_errorL'identifiant de transfert est absent de l'URL.Vérifier que l'URL est bien de la forme /v1/transfers/{id}/clone avec un id non vide.
401 missing_api_keyEn-tête Authorization absent.Envoyer Authorization: Bearer cof_live_... (ou cof_test_...).
401 invalid_api_keyClé invalide, mal formée ou non reconnue.Vérifier le format et la validité de la clé API.
403 scope_missingLa clé n'a pas le scope transfers:write.Émettre ou utiliser une clé incluant le scope transfers:write.
404 not_foundAucun transfert avec cet id dans le workspace de la clé.Vérifier l'id et que le transfert appartient bien au workspace authentifié.
429 rate_limitedQuota de requêtes par minute du workspace dépassé (endpoint write).Attendre la valeur de l'en-tête Retry-After avant de réessayer.
500 internal_errorErreur de lecture du source ou d'insertion du clone côté base.Réessayer ; si l'erreur persiste, contacter le support avec le request_id.

Voir aussi