Référence APIGénérer une URL de téléchargement
POST/v1/transfers/{id}/download-url

Générer une URL de téléchargement

Génère des URL présignées côté serveur, sans incrémenter le compteur de téléchargements.

2 min de lectureTélécharger en PDF

Requête exemple

"{\"file_id\": \"f_3a9c1e7b-2d4f-48a1-9c0e-6b2f1d8a4e55\", \"expires_in_seconds\": 3600}"

Réponse exemple

"{\"transfer_id\": \"tr_8f21c4a0-7e3b-4d99-b1aa-2c5d9f0e6481\", \"short_code\": \"X7K9P2\", \"expires_in_seconds\": 3600, \"expires_at\": \"2026-06-05T15:42:11.000Z\", \"files\": [{\"file_id\": \"f_3a9c1e7b-2d4f-48a1-9c0e-6b2f1d8a4e55\", \"file_name\": \"rapport-financier-q2.pdf\", \"file_size\": 2483921, \"file_type\": \"application/pdf\", \"download_url\": \"https://coffrify-transfer.s3.fr-par.scw.cloud/ws_a1b2/tr_8f21c4a0/rapport-financier-q2.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=SCWXXXXXXXXXXXXXXXXX%2F20260605%2Ffr-par%2Fs3%2Faws4_request&X-Amz-Date=20260605T144211Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&response-content-disposition=attachment%3B%20filename%3D%22rapport-financier-q2.pdf%22&X-Amz-Signature=4f8c2a1b9e7d6c5a4b3f2e1d0c9b8a7f6e5d4c3b2a1f0e9d8c7b6a5f4e3d2c1b\"}], \"note\": \"These URLs bypass the public share + password gate AND do NOT increment total_downloads. For admin/agent operational use only.\"}"

Génère une (ou plusieurs) URL S3 présignée de téléchargement direct pour les fichiers d'un transfert, sans passer par la page de partage publique ni la grille de mot de passe. L'URL pointe directement sur le bucket Scaleway coffrify-transfer (région fr-par) et est signée en AWS Signature V4 côté serveur. Comportement notable : ce téléchargement est de type administrateur/agent, il n'incrémente PAS le compteur total_downloads du transfert. Si le champ file_id est omis, l'endpoint renvoie une URL par fichier du transfert ; s'il est fourni, il ne signe que le fichier ciblé. Chaque URL force le téléchargement via un en-tête Content-Disposition: attachment reprenant le nom de fichier original.

Authentification

Requiert une clé API (cof_live_… / cof_test_…, restreinte cof_rk_… ou jeton MCP cof_mcp_…) portant le scope transfers:download. Le contrôle d'accès est portée par espace de travail : seul un transfert appartenant au workspace_id de la clé est résolu, tout autre identifiant renvoie 404. Si le scope manque, l'API répond 403 scope_missing.

Corps de la requête

Le corps JSON est entièrement optionnel : un POST sans corps signe tous les fichiers du transfert avec une expiration par défaut d'une heure.

ChampTypeRequisDescription
file_idstringNonIdentifiant d'un fichier précis du transfert. Si omis (ou non-string), une URL est générée pour chaque fichier du transfert. Si fourni mais introuvable dans ce transfert, renvoie 404.
expires_in_secondsnumberNonDurée de validité de l'URL présignée, en secondes. Valeur entière. Par défaut 3600 (1 h). Bornée automatiquement entre 60 et 86400 (24 h) : toute valeur hors bornes est ramenée dans l'intervalle, sans erreur.

Réponse

Renvoie transfer_id et short_code du transfert, la durée expires_in_seconds réellement appliquée (après bornage) et expires_at (horodatage ISO 8601 d'expiration calculé côté serveur). Le tableau files contient un objet par fichier signé, avec file_id, file_name, file_size (octets), file_type (type MIME) et download_url (URL S3 présignée complète, directement utilisable en GET). Le champ note rappelle que ces URL contournent la passerelle de partage public et le mot de passe, et n'incrémentent pas le compteur de téléchargements : usage opérationnel admin/agent uniquement.

Erreurs

Code HTTPCodeQuandComment résoudre
401missing_api_key / invalid_api_keyEn-tête Authorization absent ou clé non reconnue.Envoyer Authorization: Bearer cof_live_… avec une clé valide.
403scope_missingLa clé n'a pas le scope transfers:download.Émettre une nouvelle clé avec le scope transfers:download depuis app.coffrify.com/developer (ou /mcp pour un jeton MCP).
404not_foundTransfert inexistant ou hors de l'espace de travail, OU file_id introuvable dans ce transfert, OU transfert sans fichier.Vérifier l'id du transfert et le file_id. Confirmer que le transfert appartient à l'espace de la clé.
410not_foundLe transfert existe mais son status vaut deleted.Le transfert a été supprimé : aucune URL ne peut être générée.
429rate_limitedQuota de requêtes/minute de l'espace de travail dépassé.Respecter l'en-tête Retry-After et réessayer après la fenêtre.
503internal_errorIdentifiants Scaleway non configurés sur ce déploiement (SCALEWAY_ACCESS_KEY/SCALEWAY_SECRET_KEY manquants).Erreur d'infrastructure côté Coffrify : contacter le support, non corrigeable côté client.

Voir aussi

GET/v1/transfers/{id}Récupère les métadonnées d'un transfert et la liste de ses fichiers (file_id à passer ici).GET/v1/transfersListe paginée des transferts de l'espace de travail pour retrouver l'id cible.POST/v1/transfersCrée un transfert et ses fichiers en amont du flux de signature d'URL.