L'endpoint POST /v1/transfers/{id}/download-url génère une ou plusieurs URL S3 pré-signées (AWS4-HMAC-SHA256) pointant directement vers les fichiers stockés dans l'espace Scaleway Object Storage de Coffrify. Ces URLs sont éphémères : leur durée de vie est strictement bornée entre 60 secondes et 24 heures. Elles court-circuitent la porte de partage public (mot de passe, lien expirable) et n'incrémentent pas le compteur total_downloads du transfert. Cet endpoint est réservé aux usages opérationnels côté serveur : agents, pipelines d'archivage, intégrations MCP ou scripts de sauvegarde.
/v1/transfers/{id}/download-urlGénère une URL S3 pré-signée éphémère pour un ou tous les fichiers d'un transfert. Ne décompte pas de téléchargement. Scope requis : transfers:download.GET/v1/transfers/{id}/downloadsListe les événements de téléchargement enregistrés pour un transfert (IP, navigateur, pays, durée, octets transférés). Scope requis : downloads:read. Paramètres : limit (max 500, défaut 100) et offset.Authentification
Les deux endpoints exigent une clé API transmise dans l'en-tête Authorization: Bearer <clé>. Le format accepté est cof_live_… (production) ou cof_test_… (sandbox). Le scope transfers:download est requis pour POST /download-url ; le scope downloads:read est requis pour GET /downloads. Toute requête avec une clé invalide, révoquée ou dépourvue du scope adéquat retourne une erreur 401 ou 403.
Corps de la requête
Le corps précise le fichier visé (ou tous) et la durée de validité souhaitée. Le tableau ci-dessous détaille les champs acceptés.
| Champ | Type | Requis | Description |
|---|---|---|---|
| file_id | string | Non | Identifiant UUID d'un fichier spécifique du transfert. Si omis, l'API retourne une URL pour chaque fichier du transfert. |
| expires_in_seconds | integer | Non | Durée de vie de l'URL en secondes. Défaut : 3 600 (1 h). Minimum : 60. Maximum : 86 400 (24 h). Toute valeur hors plage est silencieusement clampée. |
Exemples de code
L'exemple ci-dessous génère une URL pré-signée puis l'utilise immédiatement pour télécharger le fichier. À exécuter côté serveur uniquement. Choisissez votre langage.
Réponse
La réponse renvoie l'URL signée, sa durée de validité (expires_in_seconds) et son échéance (expires_at). Au-delà, l'URL devient inutilisable : régénérez-en une au besoin.
Erreurs
Les erreurs portent sur le transfert introuvable, le scope manquant (transfers:download) ou un fichier inexistant. Le tableau ci-dessous indique la résolution.
| HTTP | Code | Quand | Résolution |
|---|---|---|---|
| 401 | missing_api_key / invalid_api_key | En-tête Authorization absent ou clé malformée. | Vérifiez que l'en-tête Authorization: Bearer cof_live_… est bien présent et que la clé est active. |
| 403 | scope_missing | La clé API ne possède pas le scope transfers:download (POST) ou downloads:read (GET). | Régénérez la clé en cochant le scope requis depuis la console Coffrify. |
| 404 | not_found | Le transfert n'existe pas dans votre workspace, ou le file_id fourni n'appartient pas au transfert. | Vérifiez les identifiants du transfert et du fichier. Assurez-vous que le transfert appartient au workspace authentifié. |
| 410 | not_found | Le transfert a le statut deleted. | Il n'est plus possible de générer des URLs pour un transfert supprimé. Utilisez un transfert actif. |
| 429 | rate_limited | Le quota de requêtes par minute du workspace est dépassé sur les endpoints write. | Consultez les en-têtes X-RateLimit-Remaining et Retry-After, puis réessayez après le délai indiqué. |
| 503 | internal_error | Les identifiants Scaleway ne sont pas configurés sur ce déploiement. | Contactez le support Coffrify : les variables d'environnement Scaleway sont manquantes côté serveur. |
- Créer un transfert
- Lister les fichiers d'un transfert
- Étendre l'expiration d'un transfert
- Authentification et scopes API
- Limites de débit et quotas