Référence APIProlonger un transfert
POST/v1/transfers/{id}/extend

Prolonger un transfert

Repousse la date d'expiration d'un transfert, dans la limite de rétention du plan.

2 min de lectureTélécharger en PDF

Requête exemple

"{\"until\": \"2026-06-12T18:00:00.000Z\"}"

Réponse exemple

"{\"transfer_id\": \"tr_8f2a1c9e\", \"short_code\": \"Xk7mPq\", \"previous_expires_at\": \"2026-06-06T18:00:00.000Z\", \"new_expires_at\": \"2026-06-12T18:00:00.000Z\", \"plan\": \"pro\", \"plan_cap_hours\": 720}"

Repousse la date d'expiration d'un transfert existant dans le futur. Vous pouvez exprimer la prolongation de deux manières : soit une durée relative en heures via hours (comptée à partir de maintenant), soit une date absolue ISO 8601 via until. Comportement notable : la prolongation est bornée par le plan de l'espace de travail. Le plafond provient de coffrify_stripe_products.retention_days (converti en heures), avec un repli de 7 jours (168 h) si aucune valeur n'est définie pour le plan. Avec hours, la valeur est silencieusement ramenée dans l'intervalle [1, plafond] ; avec until, une date au-delà du plafond est rejetée par une erreur de validation. L'appel réactive également le transfert en repositionnant son status sur active.

Authentification

Cet endpoint requiert une clé API disposant du scope transfers:write. La requête est exécutée dans le contexte de l'espace de travail rattaché à la clé : seuls les transferts appartenant à ce workspace_id sont accessibles.

Corps de la requête

Vous devez fournir au moins l'un des deux champs hours ou until. Si les deux sont absents, l'API renvoie une erreur validation_error. Si les deux sont fournis, until a la priorité sur hours.

ChampTypeRequisDescription
hoursnumber (entier)ConditionnelDurée de prolongation en heures à partir de maintenant. La valeur est arrondie à l'entier inférieur puis bornée dans l'intervalle [1, plafond du plan]. Une valeur hors limites est ajustée silencieusement, sans erreur. Requis si until est absent.
untilstring (ISO 8601)ConditionnelDate d'expiration absolue au format ISO 8601 (ex. 2026-06-12T18:00:00.000Z). Doit être un horodatage valide et ne pas dépasser le plafond du plan calculé depuis maintenant, sinon une erreur validation_error est renvoyée. Requis si hours est absent ; prioritaire sur hours si les deux sont fournis.

Réponse

En cas de succès, l'API renvoie un objet décrivant le transfert prolongé. Le champ new_expires_at contient la nouvelle date d'expiration effective (ISO 8601) et previous_expires_at l'ancienne, pour faciliter l'audit. plan indique le plan de l'espace de travail (en minuscules) et plan_cap_hours le plafond de prolongation appliqué, en heures, ce qui permet de connaître la limite réelle imposée par l'abonnement. transfer_id et short_code identifient le transfert concerné. Le transfert est de plus remis au statut active côté base.

ChampTypeDescription
transfer_idstringIdentifiant du transfert prolongé.
short_codestringCode court public du transfert (utilisé dans l'URL de partage).
previous_expires_atstring (ISO 8601) | nullAncienne date d'expiration, avant prolongation.
new_expires_atstring (ISO 8601)Nouvelle date d'expiration effective après prolongation.
planstringPlan de l'espace de travail en minuscules (ex. free, pro).
plan_cap_hoursnumberPlafond de prolongation en heures imposé par le plan (retention_days x 24, ou 168 par défaut).

Erreurs

Statut / codeQuandComment résoudre
400 validation_errorNi hours ni until fournis ; ou until n'est pas un ISO 8601 valide ; ou until dépasse le plafond du plan.Fournir au moins l'un des deux champs. Vérifier que until est un horodatage ISO 8601 valide et inférieur ou égal à now + plan_cap_hours.
401 missing_api_key / invalid_api_keyClé API absente, invalide, expirée ou révoquée.Envoyer une clé API valide dans l'en-tête d'autorisation.
403 scope_missingLa clé API ne possède pas le scope transfers:write.Émettre une clé disposant du scope transfers:write.
404 not_foundAucun transfert avec cet id dans l'espace de travail de la clé.Vérifier l'identifiant et que le transfert appartient bien au bon espace de travail.
410 not_foundLe transfert existe mais a le statut deleted.Le transfert supprimé ne peut pas être prolongé ; recréer un transfert si nécessaire.
429 rate_limitedQuota d'appels dépassé.Réessayer après le délai indiqué et appliquer un backoff.
500 internal_errorÉchec de la mise à jour en base.Réessayer ; si l'erreur persiste, contacter le support.

Voir aussi

GET/v1/transfers/{id}Récupère les détails d'un transfert, dont son statut et sa date d'expiration courante.POST/v1/transfersCrée un nouveau transfert avec une date d'expiration initiale.DELETE/v1/transfers/{id}Supprime un transfert ; un transfert supprimé ne peut plus être prolongé.