Plateforme Développeur · API v1

Documentation API FileMoon

Intégrez les envois sécurisés, l’import vidéo distant, la gestion des fichiers et le traitement HLS à votre application.

URL de basehttps://filemoon.org/api/v1
Créer un Token API
API v1
FileMoon REST API

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 basehttps://filemoon.org/api/v1
Version actuellev1
Content-Typeapplication/json / multipart/form-data
Security: Utilisez HTTPS pour chaque requête. N’exposez jamais un token privé dans du code public, des captures, des dépôts ou des journaux partagés.
Démarrage

Authentification

Envoyez un token d’accès FileMoon dans l’en-tête Authorization avec le schéma Bearer.

HTTP Headers
Authorization: Bearer YOUR_FILEMOON_TOKEN
Accept: application/json
Créez un token depuis Tableau de bord → API & Remote Upload. Le token complet n’est affiché qu’une fois.

Autorisations du token

files:readLire le compte, les fichiers et leurs statuts.
files:writeEnvoyer, modifier et supprimer les fichiers du compte.
remote:writeCréer, annuler et relancer les tâches distantes.
HTTP 429

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.

Response Headers
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
Retry-After: 12
X-Request-ID: 2c7c4d7a-0e4d-4d92-bb53-e32f1e705dda
Après HTTP 429, attendez la durée Retry-After.
Démarrage

Informations du compte

Retourne le compte, le nombre de fichiers, l’espace utilisé et les compteurs distants.

GET /account

Paramètres

Aucun paramètre de requête.

Exemple de requête

cURL
curl -sS "https://filemoon.org/api/v1/account" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"

Exemple de réponse

200 JSON
{
  "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
    }
  }
}
Fichiers

Lister les fichiers

Retourne une liste paginée. Utilisez search pour filtrer par nom.

GET /files

Paramètres

ChampTypeObligatoireDescription
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
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

200 JSON
{
  "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
  }
}
Fichiers

Informations d’un fichier

Retourne un fichier avec son ID public FileMoon.

GET /files/{id}

Paramètres

ChampTypeObligatoireDescription
id string (path) Oui Public FileMoon file ID owned by the authenticated account.

Exemple de requête

cURL
curl -sS "https://filemoon.org/api/v1/files/0JgG7vRZzoYW" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"
Fichiers

Statut du fichier et HLS

Retourne le fichier avec le statut de conversion HLS.

GET /files/{id}/status

Paramètres

ChampTypeObligatoireDescription
id string (path) Oui Public FileMoon file ID owned by the authenticated account.

Exemple de requête

cURL
curl -sS "https://filemoon.org/api/v1/files/0JgG7vRZzoYW/status" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"

Exemple de réponse

200 JSON
{
  "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"
    }
  }
}
Fichiers

Envoyer un fichier local

Envoyez un fichier avec multipart/form-data. file est obligatoire; visibility accepte 1 ou 0.

POST /files/upload

Paramètres

ChampTypeObligatoireDescription
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
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"
Fichiers

Modifier un fichier

Modifiez les métadonnées prises en charge. Envoyez uniquement les champs à changer.

PATCH /files/{id}

Paramètres

ChampTypeObligatoireDescription
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
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
  }'
Fichiers

Supprimer un fichier

Supprime définitivement le fichier et ses données. Action irréversible.

DELETE /files/{id}

Paramètres

ChampTypeObligatoireDescription
id string (path) Oui Public FileMoon file ID.

Exemple de requête

cURL
curl -sS -X DELETE "https://filemoon.org/api/v1/files/0JgG7vRZzoYW" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"
Envoi distant

Créer des tâches distantes

Ajoutez une ou plusieurs URL à la file. HTTP 202 confirme le traitement en arrière-plan.

Accepte les URL publiques et directes HTTP/HTTPS. Les réseaux privés, localhost, métadonnées cloud, redirections dangereuses, scripts et réponses non vidéo sont bloqués.
POST /remote-uploads

Paramètres

ChampTypeObligatoireDescription
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
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

202 JSON
{
  "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

pendingrunningcompletedfailedcancelled
Envoi distant

Lister les tâches distantes

Retourne les tâches distantes du compte avec pagination.

GET /remote-uploads

Paramètres

ChampTypeObligatoireDescription
page integer Optionnel Pagination page.
per_page integer Optionnel Default 25, maximum 100.

Exemple de requête

cURL
curl -sS "https://filemoon.org/api/v1/remote-uploads?per_page=25&page=1" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"
Envoi distant

Statut d’une tâche distante

Retourne la progression, l’étape, les erreurs et l’ID du fichier créé.

GET /remote-uploads/{id}

Paramètres

ChampTypeObligatoireDescription
id UUID (path) Oui Remote-upload job ID.

Exemple de requête

cURL
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

200 JSON
{
  "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"
  }
}
Envoi distant

Annuler une tâche

Annule une tâche en attente ou demande l’annulation d’une tâche en cours.

POST /remote-uploads/{id}/cancel

Paramètres

ChampTypeObligatoireDescription
id UUID (path) Oui Remote-upload job ID.

Exemple de requête

cURL
curl -sS -X POST "https://filemoon.org/api/v1/remote-uploads/JOB_ID/cancel" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"
Envoi distant

Relancer une tâche

Réinitialise une tâche échouée ou annulée et la remet en file.

POST /remote-uploads/{id}/retry

Paramètres

ChampTypeObligatoireDescription
id UUID (path) Oui Remote-upload job ID.

Exemple de requête

cURL
curl -sS -X POST "https://filemoon.org/api/v1/remote-uploads/JOB_ID/retry" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"
HTTP

Erreurs et codes HTTP

Les erreurs utilisent une structure JSON cohérente. Conservez request_id pour le support.

401
UNAUTHENTICATED

Missing or invalid Bearer token.

403
TOKEN_DISABLED / TOKEN_EXPIRED

Token disabled, expired, IP blocked or missing permission.

404
NOT_FOUND

Owned file or remote job could not be found.

409
REMOTE_JOB_NOT_CANCELLABLE

The job can no longer be cancelled.

422
VALIDATION_ERROR

Request fields or uploaded file are invalid.

429
RATE_LIMITED

Too many requests. Use Retry-After.

503
API_DISABLED

The administrator temporarily disabled the API.

Exemple de réponse

Error JSON
{
  "success": false,
  "error": {
    "code": "TOKEN_ABILITY_DENIED",
    "message": "The token does not have the required permission."
  },
  "request_id": "2c7c4d7a-0e4d-4d92-bb53-e32f1e705dda"
}
Référence

Exigences de sécurité

Appliquez ces règles lors de l’intégration.

Conservez les tokens sur un serveur de confiance et révoquez tout token exposé.
Utilisez uniquement les autorisations minimales.
Limitez le token à des IP ou CIDR de confiance si possible.
Envoyez uniquement du contenu que vous possédez ou pouvez distribuer.
cURL · PHP · JavaScript

Exemples clients

Exemples minimaux cURL, PHP et JavaScript côté serveur.

cURL
curl -sS "https://filemoon.org/api/v1/account" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"
PHP 8+
<?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);
Node.js / Server-side JS
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);
Retour en haut