Pengantar
API FileMoon adalah API HTTP berbasis JSON untuk mengotomatiskan unggahan, mengelola file milik akun terautentikasi, dan mengimpor URL video langsung yang diizinkan.
| URL dasar | https://filemoon.org/api/v1 |
| Versi saat ini | v1 |
| Content-Type | application/json / multipart/form-data |
Autentikasi
Kirim token akses pribadi FileMoon pada header Authorization menggunakan skema Bearer.
Authorization: Bearer YOUR_FILEMOON_TOKEN
Accept: application/json
Izin token
Batas permintaan
Batas diterapkan per token dan alamat IP. Batas aktif dikirim dalam header respons dan tidak dapat melebihi 60 permintaan per menit.
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
Retry-After: 12
X-Request-ID: 2c7c4d7a-0e4d-4d92-bb53-e32f1e705dda
Informasi akun
Mengembalikan akun terautentikasi, jumlah file, pemakaian penyimpanan, dan penghitung pekerjaan jarak jauh.
/account
Parameter
Contoh permintaan
curl -sS "https://filemoon.org/api/v1/account" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Contoh respons
{
"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
}
}
}
Daftar file
Mengembalikan daftar file dengan pagination. Gunakan search untuk memfilter berdasarkan nama.
/files
Parameter
| Field | Tipe | Wajib | Deskripsi |
|---|---|---|---|
search |
string | Opsional | Filter by name or stored filename. Maximum 255 characters. |
page |
integer | Opsional | Pagination page. Minimum 1. |
per_page |
integer | Opsional | Results per page. Default 25, maximum 100. |
Contoh permintaan
curl -sS "https://filemoon.org/api/v1/files?search=sample&per_page=25&page=1" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Contoh respons
{
"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
}
}
Informasi file
Mengembalikan satu file milik akun menggunakan ID publik FileMoon.
/files/{id}
Parameter
| Field | Tipe | Wajib | Deskripsi |
|---|---|---|---|
id |
string (path) | Ya | Public FileMoon file ID owned by the authenticated account. |
Contoh permintaan
curl -sS "https://filemoon.org/api/v1/files/0JgG7vRZzoYW" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Status file dan HLS
Mengembalikan informasi file beserta status konversi HLS jika pekerjaan tersedia.
/files/{id}/status
Parameter
| Field | Tipe | Wajib | Deskripsi |
|---|---|---|---|
id |
string (path) | Ya | Public FileMoon file ID owned by the authenticated account. |
Contoh permintaan
curl -sS "https://filemoon.org/api/v1/files/0JgG7vRZzoYW/status" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Contoh respons
{
"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"
}
}
}
Unggah file lokal
Unggah file dengan multipart/form-data. Field file wajib; visibility dapat bernilai 1 atau 0.
/files/upload
Parameter
| Field | Tipe | Wajib | Deskripsi |
|---|---|---|---|
file |
binary | Ya | Local file attached as multipart/form-data. |
visibility |
boolean | Opsional | Use 1 for public or 0 for private. |
Contoh permintaan
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"
Perbarui file
Ubah metadata yang didukung. Kirim hanya field yang ingin diubah.
/files/{id}
Parameter
| Field | Tipe | Wajib | Deskripsi |
|---|---|---|---|
id |
string (path) | Ya | Public FileMoon file ID. |
name |
string | Opsional | New file name. Maximum 255 characters. |
description |
string|null | Opsional | File description. Maximum 1000 characters. |
visibility |
boolean | Opsional | Public or private visibility. |
allow_online_watch |
boolean | Opsional | Enable or disable online video watch. |
password |
string|null | Opsional | Set, change or remove the file password. |
Contoh permintaan
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
}'
Hapus file
Menghapus file dan data terkait secara permanen. Tindakan ini tidak dapat dibatalkan.
/files/{id}
Parameter
| Field | Tipe | Wajib | Deskripsi |
|---|---|---|---|
id |
string (path) | Ya | Public FileMoon file ID. |
Contoh permintaan
curl -sS -X DELETE "https://filemoon.org/api/v1/files/0JgG7vRZzoYW" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Buat pekerjaan unggahan jarak jauh
Masukkan satu atau beberapa URL media langsung ke antrean. HTTP 202 berarti pekerjaan diterima untuk pemrosesan latar belakang.
/remote-uploads
Parameter
| Field | Tipe | Wajib | Deskripsi |
|---|---|---|---|
urls |
array<string> | Ya | One or more public direct HTTP/HTTPS media URLs. |
name |
string|null | Opsional | Custom file name. Maximum 240 characters. |
description |
string|null | Opsional | Description. Maximum 1000 characters. |
folder_id |
integer|null | Opsional | Folder ID owned by the authenticated user. |
visibility |
boolean | Opsional | Public or private file. |
allow_online_watch |
boolean | Opsional | Allow online video playback. |
password |
string|null | Opsional | Optional file password. |
blocked_countries |
array<string> | Opsional | Two-letter country codes. Maximum 50 entries. |
Contoh permintaan
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"]
}'
Contoh respons
{
"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
}
]
}
Nilai status pekerjaan
Daftar pekerjaan jarak jauh
Mengembalikan pekerjaan jarak jauh milik akun dengan pagination.
/remote-uploads
Parameter
| Field | Tipe | Wajib | Deskripsi |
|---|---|---|---|
page |
integer | Opsional | Pagination page. |
per_page |
integer | Opsional | Default 25, maximum 100. |
Contoh permintaan
curl -sS "https://filemoon.org/api/v1/remote-uploads?per_page=25&page=1" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Status unggahan jarak jauh
Mengembalikan progres, tahap, error, dan ID file FileMoon setelah selesai.
/remote-uploads/{id}
Parameter
| Field | Tipe | Wajib | Deskripsi |
|---|---|---|---|
id |
UUID (path) | Ya | Remote-upload job ID. |
Contoh permintaan
curl -sS "https://filemoon.org/api/v1/remote-uploads/d96f9d69-1d44-42eb-89e3-5a62b052e77d" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Contoh respons
{
"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"
}
}
Batalkan pekerjaan
Batalkan pekerjaan pending atau minta pembatalan pekerjaan berjalan.
/remote-uploads/{id}/cancel
Parameter
| Field | Tipe | Wajib | Deskripsi |
|---|---|---|---|
id |
UUID (path) | Ya | Remote-upload job ID. |
Contoh permintaan
curl -sS -X POST "https://filemoon.org/api/v1/remote-uploads/JOB_ID/cancel" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Ulangi pekerjaan gagal
Reset pekerjaan gagal atau dibatalkan lalu masukkan kembali ke antrean aman.
/remote-uploads/{id}/retry
Parameter
| Field | Tipe | Wajib | Deskripsi |
|---|---|---|---|
id |
UUID (path) | Ya | Remote-upload job ID. |
Contoh permintaan
curl -sS -X POST "https://filemoon.org/api/v1/remote-uploads/JOB_ID/retry" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Error dan kode status
Error menggunakan struktur JSON yang konsisten. Simpan request_id saat menghubungi dukungan.
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.
Contoh respons
{
"success": false,
"error": {
"code": "TOKEN_ABILITY_DENIED",
"message": "The token does not have the required permission."
},
"request_id": "2c7c4d7a-0e4d-4d92-bb53-e32f1e705dda"
}
Persyaratan keamanan
Terapkan aturan berikut saat mengintegrasikan API FileMoon.
Contoh klien
Contoh minimal cURL, PHP, dan JavaScript sisi server dengan autentikasi Bearer.
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);