Important
- Authentification
- Toutes les routes /api/* (hors URL signée) exigent le header X-API-Key correspondant au projet.
- Taille maximale
- Jusqu'à 50 Mo par fichier.
- Projets privés (RGPD)
- Pour un projet privé, le fichier est chiffré au repos et n'a pas de full_url publique : la réponse renvoie full_url = null et un download_url authentifié. La lecture se fait via GET /api/files/download (clé API) ou une URL signée temporaire via GET /api/files/temporary-url.
- Projets publics
- Pour un projet public, le comportement historique est conservé : full_url pointe vers un fichier accessible publiquement.
/api/upload
Upload d'un seul fichier.
Parameters
- {input_name}
- Requis. Fichier à uploader (max 50 Mo). Le nom du champ sert de sous-dossier.
- path
- Optionnel. Sous-répertoire de destination.
Headers
- X-API-Key
- Requis. Clé API du projet.
Example
Request:
curl -X POST https://uploads.holi-stat.com/api/upload \
-H "X-API-Key: your-project-api-key" \
-F "avatar=@image.jpg" \
-F "path=users"
Response:
{
"message": "File uploaded successfully",
"file": {
"original_name": "image.jpg",
"name": "d4b16ea9-41ae-4c49-80a9-b5b63d11b60f.jpg",
"path": "project-name/users/avatar/d4b16ea9-41ae-4c49-80a9-b5b63d11b60f.jpg",
"full_url": "https://uploads.holi-stat.com/storage/project-name/users/avatar/d4b16ea9-41ae-4c49-80a9-b5b63d11b60f.jpg"
}
}
/api/upload (projet privé)
Même endpoint pour un projet privé : le fichier est chiffré au repos, full_url est null et un download_url authentifié est renvoyé.
Headers
- X-API-Key
- Requis. Clé API du projet privé.
Example
Request:
curl -X POST https://uploads.holi-stat.com/api/upload \
-H "X-API-Key: your-private-project-api-key" \
-F "data=@paiements.csv" \
-F "path=runs/1"
Response:
{
"message": "File uploaded successfully",
"file": {
"original_name": "paiements.csv",
"name": "d4b16ea9-41ae-4c49-80a9-b5b63d11b60f.csv",
"path": "project-name/runs/1/d4b16ea9-41ae-4c49-80a9-b5b63d11b60f.csv",
"full_url": null,
"download_url": "https://uploads.holi-stat.com/api/files/download?path=project-name%2Fruns%2F1%2Fd4b16ea9-41ae-4c49-80a9-b5b63d11b60f.csv"
}
}
/api/upload-multiple
Upload de plusieurs fichiers (max 20).
Parameters
- {input_name}[]
- Requis. Tableau de fichiers (max 50 Mo chacun). Le nom du champ sert de sous-dossier.
- path
- Optionnel. Sous-répertoire de destination.
Headers
- X-API-Key
- Requis. Clé API du projet.
Example
Request:
curl -X POST https://uploads.holi-stat.com/api/upload-multiple \
-H "X-API-Key: your-project-api-key" \
-F "documents[]=@doc1.pdf" \
-F "documents[]=@doc2.pdf" \
-F "path=contracts"
Response:
{
"message": "Files uploaded successfully",
"files": [
{
"original_name": "doc1.pdf",
"name": "d4b16ea9-41ae-4c49-80a9-b5b63d11b60f.pdf",
"path": "project-name/contracts/documents/d4b16ea9-41ae-4c49-80a9-b5b63d11b60f.pdf",
"full_url": "https://uploads.holi-stat.com/storage/project-name/contracts/documents/d4b16ea9-41ae-4c49-80a9-b5b63d11b60f.pdf"
}
]
}
/api/upload-multiple-compressed
Upload de plusieurs fichiers avec compression des images (projets publics uniquement ; les projets privés stockent les fichiers tels quels, chiffrés).
Parameters
- {input_name}[]
- Requis. Tableau de fichiers (max 50 Mo chacun).
- path
- Optionnel. Sous-répertoire de destination.
- quality
- Optionnel. Qualité de compression image (1-100, défaut 80).
- max_width
- Optionnel. Largeur max en pixels (min 100, défaut 2000).
- max_height
- Optionnel. Hauteur max en pixels (min 100, défaut 2000).
Headers
- X-API-Key
- Requis. Clé API du projet.
Example
Request:
curl -X POST https://uploads.holi-stat.com/api/upload-multiple-compressed \
-H "X-API-Key: your-project-api-key" \
-F "photos[]=@photo1.jpg" \
-F "path=gallery" \
-F "quality=75"
Response:
{
"message": "Files processed successfully",
"compressed_files": [
{
"original_name": "photo1.jpg",
"name": "d4b16ea9-41ae-4c49-80a9-b5b63d11b60f.jpg",
"path": "project-name/gallery/photos/d4b16ea9-41ae-4c49-80a9-b5b63d11b60f.jpg",
"full_url": "https://uploads.holi-stat.com/storage/project-name/gallery/photos/d4b16ea9-41ae-4c49-80a9-b5b63d11b60f.jpg",
"compressed": true,
"dimensions": {
"width": 1600,
"height": 1200
}
}
],
"skipped_files": []
}
/api/files
Liste les fichiers du projet. Pour un projet privé, full_url est null et download_url est fourni.
Headers
- X-API-Key
- Requis. Clé API du projet.
Example
Request:
curl -X GET https://uploads.holi-stat.com/api/files \
-H "X-API-Key: your-project-api-key"
Response:
{
"files": [
{
"id": 1,
"original_name": "paiements.csv",
"name": "d4b16ea9-41ae-4c49-80a9-b5b63d11b60f.csv",
"path": "project-name/runs/1/d4b16ea9-41ae-4c49-80a9-b5b63d11b60f.csv",
"mime_type": "text/csv",
"size": 312,
"uploaded_at": "2026-07-15T14:43:00.000000Z",
"full_url": null,
"download_url": "https://uploads.holi-stat.com/api/files/download?path=project-name%2Fruns%2F1%2Fd4b16ea9-41ae-4c49-80a9-b5b63d11b60f.csv"
}
]
}
/api/files/download
Téléchargement authentifié, owner-scoped. Requis pour les projets privés (déchiffrement à la volée). Renvoie le fichier binaire.
Parameters
- path
- Requis. Chemin relatif du fichier (tel que renvoyé à l'upload).
Headers
- X-API-Key
- Requis. Clé API du projet.
Examples
Télécharger un fichier et conserver son nom d'origine
curl -X GET "https://uploads.holi-stat.com/api/files/download?path=project-name/runs/1/file.csv" \
-H "X-API-Key: your-project-api-key" -OJ
/api/files/temporary-url
Génère une URL signée (HMAC) à durée de vie limitée pour consultation navigateur, sans exposer la clé API.
Parameters
- path
- Requis. Chemin relatif du fichier.
- expires
- Optionnel. Durée de validité en minutes (défaut 5, max 1440).
Headers
- X-API-Key
- Requis. Clé API du projet.
Example
Request:
curl -X GET "https://uploads.holi-stat.com/api/files/temporary-url?path=project-name/runs/1/file.csv&expires=5" \
-H "X-API-Key: your-project-api-key"
Response:
{
"url": "https://uploads.holi-stat.com/api/files/signed/1?expires=1784126931&signature=e44691c266931a78380443fd4e092606df228731d7d0c06d0a7099c00a7f0d7a",
"expires_in": 300
}
/api/files
Supprime un fichier via son chemin relatif ou son URL complète.
Parameters
- path
- Requis. Chemin relatif ou URL complète du fichier.
Headers
- X-API-Key
- Requis. Clé API du projet.
Examples
Suppression via chemin relatif
curl -X DELETE https://uploads.holi-stat.com/api/files \
-H "X-API-Key: your-project-api-key" \
-H "Content-Type: application/json" \
-d '{"path": "project-name/runs/1/file.csv"}'