Introduction
L’API FileMoon est une API HTTP JSON permettant d’automatiser les envois, de gérer les fichiers du compte et d’importer des URL vidéo directes autorisées.
| URL de base | https://filemoon.org/api/v1 |
| Version actuelle | v1 |
| Content-Type | application/json / multipart/form-data |
Authentification
Envoyez un token d’accès FileMoon dans l’en-tête Authorization avec le schéma Bearer.
Authorization: Bearer YOUR_FILEMOON_TOKEN
Accept: application/json
Autorisations du token
Limites de requêtes
Les limites s’appliquent par token et adresse IP. La limite active apparaît dans les en-têtes et ne dépasse pas 60 requêtes par minute.
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
Retry-After: 12
X-Request-ID: 2c7c4d7a-0e4d-4d92-bb53-e32f1e705dda
Informations du compte
Retourne le compte, le nombre de fichiers, l’espace utilisé et les compteurs distants.
/account
Paramètres
Exemple de requête
curl -sS "https://filemoon.org/api/v1/account" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Exemple de réponse
{
"success": true,
"data": {
"id": "rk9zKY45m0lY",
"username": "example_user",
"email": "[email protected]",
"status": true,
"files": 20,
"storage_bytes": 1846721934,
"remote_jobs": {
"pending": 0,
"running": 0,
"completed": 1,
"failed": 0
}
}
}
Lister les fichiers
Retourne une liste paginée. Utilisez search pour filtrer par nom.
/files
Paramètres
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
search |
string | Optionnel | Filter by name or stored filename. Maximum 255 characters. |
page |
integer | Optionnel | Pagination page. Minimum 1. |
per_page |
integer | Optionnel | Results per page. Default 25, maximum 100. |
Exemple de requête
curl -sS "https://filemoon.org/api/v1/files?search=sample&per_page=25&page=1" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Exemple de réponse
{
"success": true,
"data": [
{
"id": "0JgG7vRZzoYW",
"name": "sample-video",
"filename": "sample-video.mp4",
"mime": "video/mp4",
"extension": "mp4",
"size_bytes": 1520849,
"visibility": "public",
"password_protected": false,
"allow_online_watch": true,
"downloads": 0,
"stream_views": 0,
"urls": {
"page": "https://filemoon.org/0JgG7vRZzoYW/file",
"watch": "https://filemoon.org/0JgG7vRZzoYW/watch",
"embed": "https://filemoon.org/0JgG7vRZzoYW/embed"
}
}
],
"meta": {
"current_page": 1,
"last_page": 1,
"per_page": 25,
"total": 1
}
}
Informations d’un fichier
Retourne un fichier avec son ID public FileMoon.
/files/{id}
Paramètres
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
id |
string (path) | Oui | Public FileMoon file ID owned by the authenticated account. |
Exemple de requête
curl -sS "https://filemoon.org/api/v1/files/0JgG7vRZzoYW" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Statut du fichier et HLS
Retourne le fichier avec le statut de conversion HLS.
/files/{id}/status
Paramètres
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
id |
string (path) | Oui | Public FileMoon file ID owned by the authenticated account. |
Exemple de requête
curl -sS "https://filemoon.org/api/v1/files/0JgG7vRZzoYW/status" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Exemple de réponse
{
"success": true,
"data": {
"file": {
"id": "0JgG7vRZzoYW",
"name": "sample-video",
"allow_online_watch": true
},
"conversion": {
"status": "completed",
"stage": "adaptive",
"attempts": 1,
"duration_seconds": 42,
"error": null,
"updated_at": "2026-07-18 19:20:00"
}
}
}
Envoyer un fichier local
Envoyez un fichier avec multipart/form-data. file est obligatoire; visibility accepte 1 ou 0.
/files/upload
Paramètres
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
file |
binary | Oui | Local file attached as multipart/form-data. |
visibility |
boolean | Optionnel | Use 1 for public or 0 for private. |
Exemple de requête
curl -sS -X POST "https://filemoon.org/api/v1/files/upload" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json" \
-F "file=@/path/to/video.mp4" \
-F "visibility=1"
Modifier un fichier
Modifiez les métadonnées prises en charge. Envoyez uniquement les champs à changer.
/files/{id}
Paramètres
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
id |
string (path) | Oui | Public FileMoon file ID. |
name |
string | Optionnel | New file name. Maximum 255 characters. |
description |
string|null | Optionnel | File description. Maximum 1000 characters. |
visibility |
boolean | Optionnel | Public or private visibility. |
allow_online_watch |
boolean | Optionnel | Enable or disable online video watch. |
password |
string|null | Optionnel | Set, change or remove the file password. |
Exemple de requête
curl -sS -X PATCH "https://filemoon.org/api/v1/files/0JgG7vRZzoYW" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"name": "updated-video-name",
"description": "Updated through FileMoon API",
"visibility": true,
"allow_online_watch": true
}'
Supprimer un fichier
Supprime définitivement le fichier et ses données. Action irréversible.
/files/{id}
Paramètres
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
id |
string (path) | Oui | Public FileMoon file ID. |
Exemple de requête
curl -sS -X DELETE "https://filemoon.org/api/v1/files/0JgG7vRZzoYW" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Créer des tâches distantes
Ajoutez une ou plusieurs URL à la file. HTTP 202 confirme le traitement en arrière-plan.
/remote-uploads
Paramètres
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
urls |
array<string> | Oui | One or more public direct HTTP/HTTPS media URLs. |
name |
string|null | Optionnel | Custom file name. Maximum 240 characters. |
description |
string|null | Optionnel | Description. Maximum 1000 characters. |
folder_id |
integer|null | Optionnel | Folder ID owned by the authenticated user. |
visibility |
boolean | Optionnel | Public or private file. |
allow_online_watch |
boolean | Optionnel | Allow online video playback. |
password |
string|null | Optionnel | Optional file password. |
blocked_countries |
array<string> | Optionnel | Two-letter country codes. Maximum 50 entries. |
Exemple de requête
curl -sS -X POST "https://filemoon.org/api/v1/remote-uploads" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"urls": ["https://cdn.example.com/video.mp4"],
"name": "remote-video",
"description": "Imported through FileMoon API",
"visibility": true,
"allow_online_watch": true,
"blocked_countries": ["US", "GB"]
}'
Exemple de réponse
{
"success": true,
"message": "Remote upload job(s) queued.",
"data": [
{
"id": "d96f9d69-1d44-42eb-89e3-5a62b052e77d",
"host": "cdn.example.com",
"name": "remote-video",
"status": "pending",
"stage": "queued",
"attempts": 0,
"bytes_downloaded": 0,
"bytes_total": null,
"progress_percent": null,
"error": null,
"file_id": null
}
]
}
Valeurs du statut
Lister les tâches distantes
Retourne les tâches distantes du compte avec pagination.
/remote-uploads
Paramètres
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
page |
integer | Optionnel | Pagination page. |
per_page |
integer | Optionnel | Default 25, maximum 100. |
Exemple de requête
curl -sS "https://filemoon.org/api/v1/remote-uploads?per_page=25&page=1" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Statut d’une tâche distante
Retourne la progression, l’étape, les erreurs et l’ID du fichier créé.
/remote-uploads/{id}
Paramètres
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
id |
UUID (path) | Oui | Remote-upload job ID. |
Exemple de requête
curl -sS "https://filemoon.org/api/v1/remote-uploads/d96f9d69-1d44-42eb-89e3-5a62b052e77d" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Exemple de réponse
{
"success": true,
"data": {
"id": "d96f9d69-1d44-42eb-89e3-5a62b052e77d",
"host": "cdn.example.com",
"name": "remote-video",
"status": "completed",
"stage": "completed",
"attempts": 1,
"bytes_downloaded": 1520849,
"bytes_total": 1520849,
"progress_percent": 100,
"error": null,
"file_id": "0JgG7vRZzoYW"
}
}
Annuler une tâche
Annule une tâche en attente ou demande l’annulation d’une tâche en cours.
/remote-uploads/{id}/cancel
Paramètres
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
id |
UUID (path) | Oui | Remote-upload job ID. |
Exemple de requête
curl -sS -X POST "https://filemoon.org/api/v1/remote-uploads/JOB_ID/cancel" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Relancer une tâche
Réinitialise une tâche échouée ou annulée et la remet en file.
/remote-uploads/{id}/retry
Paramètres
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
id |
UUID (path) | Oui | Remote-upload job ID. |
Exemple de requête
curl -sS -X POST "https://filemoon.org/api/v1/remote-uploads/JOB_ID/retry" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Erreurs et codes HTTP
Les erreurs utilisent une structure JSON cohérente. Conservez request_id pour le support.
Missing or invalid Bearer token.
Token disabled, expired, IP blocked or missing permission.
Owned file or remote job could not be found.
The job can no longer be cancelled.
Request fields or uploaded file are invalid.
Too many requests. Use Retry-After.
The administrator temporarily disabled the API.
Exemple de réponse
{
"success": false,
"error": {
"code": "TOKEN_ABILITY_DENIED",
"message": "The token does not have the required permission."
},
"request_id": "2c7c4d7a-0e4d-4d92-bb53-e32f1e705dda"
}
Exigences de sécurité
Appliquez ces règles lors de l’intégration.
Exemples clients
Exemples minimaux cURL, PHP et JavaScript côté serveur.
curl -sS "https://filemoon.org/api/v1/account" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"<?php
$token = getenv('FILEMOON_API_TOKEN');
$ch = curl_init('https://filemoon.org/api/v1/account');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $token,
'Accept: application/json',
],
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
if ($response === false) {
throw new RuntimeException(curl_error($ch));
}
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
curl_close($ch);
$data = json_decode($response, true, 512, JSON_THROW_ON_ERROR);
if ($status >= 400) {
throw new RuntimeException($data['error']['message'] ?? 'API request failed');
}
print_r($data);const token = process.env.FILEMOON_API_TOKEN;
const response = await fetch('https://filemoon.org/api/v1/account', {
headers: {
Authorization: `Bearer ${token}`,
Accept: 'application/json'
}
});
const data = await response.json();
if (!response.ok) {
throw new Error(data?.error?.message || 'API request failed');
}
console.log(data);