https://gateway.streamfizz.live/api/upload/initUpload en deux étapes pour les fichiers volumineux. L'endpoint /init retourne la liste des URLs presignées pour chaque part ; après les PUT, l'endpoint /complete finalise l'upload.
| Header | Type | Requis | Description |
|---|---|---|---|
x-api-key | string | Oui | Clé API du compte |
https://gateway.streamfizz.live/api/upload/initInitie l'upload multipart et retourne la liste des URLs presignées pour chaque part.
| Champ | Type | Requis | Description |
|---|---|---|---|
filename | string | Oui | Nom original du fichier (extension requise) |
mimeType | string | Oui | Type MIME du fichier |
size | number | Oui | Taille du fichier en octets (> 5 Go pour ce mode) |
{
"success": true,
"mode": "multipart",
"uploadId": "2~abcXYZ...",
"key": "{accountId}/api-uploads/media/{uuid}/big-video.mp4",
"partSize": 104857600,
"parts": [
{
"partNumber": 1,
"url": "https://s3.fr-par.scw.cloud/..."
},
{
"partNumber": 2,
"url": "https://s3.fr-par.scw.cloud/..."
},
{
"partNumber": "N",
"url": "... (une URL presignée par part)"
}
],
"completeEndpoint": "https://gateway.streamfizz.live/api/upload/{uploadId}/complete"
}| Champ | Type | Description |
|---|---|---|
uploadId | string | Identifiant multipart S3 |
key | string | Clé S3 de destination (à renvoyer au /complete) |
partSize | number | Taille de chaque part en octets |
parts | array | Liste des URLs presignées par part { partNumber, url } |
completeEndpoint | string | URL à appeler pour finaliser l'upload |
| HTTP | Code | Description |
|---|---|---|
400 | INVALID_BODY | Corps invalide ou champ manquant (filename, mimeType) |
400 | INVALID_SIZE | size absent ou non positif |
400 | INVALID_MIME_TYPE | Type de fichier non autorisé |
401 | UNAUTHORIZED | Clé API manquante ou invalide |
413 | FILE_TOO_LARGE | Le fichier dépasse 100 Go |
429 | RATE_LIMITED | Trop de requêtes |
500 | INIT_FAILED | Échec de l'initialisation S3 |
https://gateway.streamfizz.live/api/upload/{uploadId}/completeFinalise l'upload après que toutes les parts ont été PUT avec succès à S3. À appeler une fois tous les ETags collectés depuis les réponses PUT.
| Champ | Type | Description |
|---|---|---|
key | string | Clé S3 reçue à l'init |
parts | array | Liste { partNumber, etag } (ETag sans guillemets) |
{
"success": true,
"key": "{accountId}/api-uploads/media/{uuid}/big-video.mp4",
"downloadUrl": "https://storage.streamfizz.live/...?token=...",
"expiresIn": 86400
}| Champ | Type | Description |
|---|---|---|
key | string | Clé S3 finale de l'objet |
downloadUrl | string | URL de téléchargement presignée (validité 24h) |
expiresIn | number | Durée de validité du downloadUrl en secondes |
| HTTP | Code | Description |
|---|---|---|
400 | INVALID_BODY | Corps invalide, parts manquant ou mal formé |
401 | UNAUTHORIZED | Clé API manquante ou invalide |
403 | FORBIDDEN_KEY | La key ne correspond pas à votre accountId |
404 | UPLOAD_NOT_FOUND | Upload multipart introuvable ou déjà finalisé |
500 | COMPLETE_FAILED | Échec de la finalisation S3 (ETag incorrect, part manquante...) |
Exemple bout-en-bout : init → PUT chaque part en parallèle → complete.
5 requêtes par minute par clé API (appliqué sur /init)
En cas de dépassement, une erreur 429 Too Many Requests est retournée avec un champ retryAfter indiquant le délai en secondes.