Einführung
Die FileMoon API ist eine JSON-basierte HTTP-API zur Automatisierung von Uploads, Verwaltung eigener Dateien und zum Import autorisierter direkter Video-URLs.
| Basis-URL | https://filemoon.org/api/v1 |
| Aktuelle Version | v1 |
| Content-Type | application/json / multipart/form-data |
Authentifizierung
Senden Sie ein FileMoon-Zugriffstoken im Authorization-Header mit dem Bearer-Schema.
Authorization: Bearer YOUR_FILEMOON_TOKEN
Accept: application/json
Token-Berechtigungen
Anfragelimits
Limits gelten pro Token und IP-Adresse. Das aktive Limit steht in den Antwort-Headern und beträgt höchstens 60 Anfragen pro Minute.
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
Retry-After: 12
X-Request-ID: 2c7c4d7a-0e4d-4d92-bb53-e32f1e705dda
Kontoinformationen
Liefert Konto, Dateianzahl, Speicherverbrauch und Remote-Zähler.
/account
Parameter
Beispielanfrage
curl -sS "https://filemoon.org/api/v1/account" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Beispielantwort
{
"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
}
}
}
Dateien auflisten
Liefert eine paginierte Liste. search filtert nach Namen.
/files
Parameter
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
search |
string | Optional | Filter by name or stored filename. Maximum 255 characters. |
page |
integer | Optional | Pagination page. Minimum 1. |
per_page |
integer | Optional | Results per page. Default 25, maximum 100. |
Beispielanfrage
curl -sS "https://filemoon.org/api/v1/files?search=sample&per_page=25&page=1" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Beispielantwort
{
"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
}
}
Dateiinformationen
Liefert eine eigene Datei anhand der öffentlichen FileMoon-ID.
/files/{id}
Parameter
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
id |
string (path) | Ja | Public FileMoon file ID owned by the authenticated account. |
Beispielanfrage
curl -sS "https://filemoon.org/api/v1/files/0JgG7vRZzoYW" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Datei- und HLS-Status
Liefert Datei und HLS-Konvertierungsstatus.
/files/{id}/status
Parameter
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
id |
string (path) | Ja | Public FileMoon file ID owned by the authenticated account. |
Beispielanfrage
curl -sS "https://filemoon.org/api/v1/files/0JgG7vRZzoYW/status" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Beispielantwort
{
"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"
}
}
}
Lokale Datei hochladen
Laden Sie mit multipart/form-data hoch. file ist erforderlich; visibility akzeptiert 1 oder 0.
/files/upload
Parameter
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
file |
binary | Ja | Local file attached as multipart/form-data. |
visibility |
boolean | Optional | Use 1 for public or 0 for private. |
Beispielanfrage
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"
Datei aktualisieren
Ändern Sie unterstützte Metadaten. Senden Sie nur zu ändernde Felder.
/files/{id}
Parameter
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
id |
string (path) | Ja | Public FileMoon file ID. |
name |
string | Optional | New file name. Maximum 255 characters. |
description |
string|null | Optional | File description. Maximum 1000 characters. |
visibility |
boolean | Optional | Public or private visibility. |
allow_online_watch |
boolean | Optional | Enable or disable online video watch. |
password |
string|null | Optional | Set, change or remove the file password. |
Beispielanfrage
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
}'
Datei löschen
Löscht Datei und Daten dauerhaft. Nicht rückgängig zu machen.
/files/{id}
Parameter
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
id |
string (path) | Ja | Public FileMoon file ID. |
Beispielanfrage
curl -sS -X DELETE "https://filemoon.org/api/v1/files/0JgG7vRZzoYW" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Remote-Aufträge erstellen
Stellen Sie eine oder mehrere URLs in die Warteschlange. HTTP 202 bestätigt die Hintergrundverarbeitung.
/remote-uploads
Parameter
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
urls |
array<string> | Ja | One or more public direct HTTP/HTTPS media URLs. |
name |
string|null | Optional | Custom file name. Maximum 240 characters. |
description |
string|null | Optional | Description. Maximum 1000 characters. |
folder_id |
integer|null | Optional | Folder ID owned by the authenticated user. |
visibility |
boolean | Optional | Public or private file. |
allow_online_watch |
boolean | Optional | Allow online video playback. |
password |
string|null | Optional | Optional file password. |
blocked_countries |
array<string> | Optional | Two-letter country codes. Maximum 50 entries. |
Beispielanfrage
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"]
}'
Beispielantwort
{
"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
}
]
}
Auftragsstatus
Remote-Aufträge auflisten
Liefert eine paginierte Liste der Remote-Aufträge.
/remote-uploads
Parameter
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
page |
integer | Optional | Pagination page. |
per_page |
integer | Optional | Default 25, maximum 100. |
Beispielanfrage
curl -sS "https://filemoon.org/api/v1/remote-uploads?per_page=25&page=1" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Remote-Auftragsstatus
Liefert Fortschritt, Phase, Fehler und die erstellte Datei-ID.
/remote-uploads/{id}
Parameter
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
id |
UUID (path) | Ja | Remote-upload job ID. |
Beispielanfrage
curl -sS "https://filemoon.org/api/v1/remote-uploads/d96f9d69-1d44-42eb-89e3-5a62b052e77d" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Beispielantwort
{
"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"
}
}
Remote-Auftrag abbrechen
Bricht einen wartenden Auftrag ab oder fordert den Abbruch an.
/remote-uploads/{id}/cancel
Parameter
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
id |
UUID (path) | Ja | Remote-upload job ID. |
Beispielanfrage
curl -sS -X POST "https://filemoon.org/api/v1/remote-uploads/JOB_ID/cancel" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Remote-Auftrag wiederholen
Setzt einen fehlgeschlagenen oder abgebrochenen Auftrag zurück.
/remote-uploads/{id}/retry
Parameter
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
id |
UUID (path) | Ja | Remote-upload job ID. |
Beispielanfrage
curl -sS -X POST "https://filemoon.org/api/v1/remote-uploads/JOB_ID/retry" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Fehler und Statuscodes
Fehler verwenden eine einheitliche JSON-Struktur. Bewahren Sie request_id für Support auf.
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.
Beispielantwort
{
"success": false,
"error": {
"code": "TOKEN_ABILITY_DENIED",
"message": "The token does not have the required permission."
},
"request_id": "2c7c4d7a-0e4d-4d92-bb53-e32f1e705dda"
}
Sicherheitsanforderungen
Beachten Sie diese Regeln bei der Integration.
Client-Beispiele
Minimale cURL-, PHP- und serverseitige JavaScript-Beispiele.
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);