Platform Pengembang · API v1

Dokumentasi API FileMoon

Integrasikan unggahan aman, impor video jarak jauh, pengelolaan file, dan pemrosesan HLS ke aplikasi Anda.

URL dasarhttps://filemoon.org/api/v1
Buat Token API
API v1
FileMoon REST API

Pengantar

API FileMoon adalah API HTTP berbasis JSON untuk mengotomatiskan unggahan, mengelola file milik akun terautentikasi, dan mengimpor URL video langsung yang diizinkan.

URL dasarhttps://filemoon.org/api/v1
Versi saat iniv1
Content-Typeapplication/json / multipart/form-data
Security: Gunakan HTTPS untuk setiap permintaan. Jangan pernah menampilkan token pribadi dalam kode browser publik, screenshot, repositori, atau log bersama.
Memulai

Autentikasi

Kirim token akses pribadi FileMoon pada header Authorization menggunakan skema Bearer.

HTTP Headers
Authorization: Bearer YOUR_FILEMOON_TOKEN
Accept: application/json
Buat token dari Panel Pengguna → API & Remote Upload. Token lengkap hanya ditampilkan sekali.

Izin token

files:readMembaca akun, file, status file, dan status unggahan jarak jauh.
files:writeMengunggah, memperbarui, dan menghapus file milik akun.
remote:writeMembuat, membatalkan, dan mengulang pekerjaan unggahan jarak jauh.
HTTP 429

Batas permintaan

Batas diterapkan per token dan alamat IP. Batas aktif dikirim dalam header respons dan tidak dapat melebihi 60 permintaan per menit.

Response Headers
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
Retry-After: 12
X-Request-ID: 2c7c4d7a-0e4d-4d92-bb53-e32f1e705dda
Setelah HTTP 429, tunggu sesuai nilai Retry-After.
Memulai

Informasi akun

Mengembalikan akun terautentikasi, jumlah file, pemakaian penyimpanan, dan penghitung pekerjaan jarak jauh.

GET /account

Parameter

Tidak ada parameter permintaan.

Contoh permintaan

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

Contoh respons

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
    }
  }
}
File

Daftar file

Mengembalikan daftar file dengan pagination. Gunakan search untuk memfilter berdasarkan nama.

GET /files

Parameter

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

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
  }
}
File

Informasi file

Mengembalikan satu file milik akun menggunakan ID publik FileMoon.

GET /files/{id}

Parameter

FieldTipeWajibDeskripsi
id string (path) Ya Public FileMoon file ID owned by the authenticated account.

Contoh permintaan

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

Status file dan HLS

Mengembalikan informasi file beserta status konversi HLS jika pekerjaan tersedia.

GET /files/{id}/status

Parameter

FieldTipeWajibDeskripsi
id string (path) Ya Public FileMoon file ID owned by the authenticated account.

Contoh permintaan

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

Contoh respons

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"
    }
  }
}
File

Unggah file lokal

Unggah file dengan multipart/form-data. Field file wajib; visibility dapat bernilai 1 atau 0.

POST /files/upload

Parameter

FieldTipeWajibDeskripsi
file binary Ya Local file attached as multipart/form-data.
visibility boolean Opsional Use 1 for public or 0 for private.

Contoh permintaan

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"
File

Perbarui file

Ubah metadata yang didukung. Kirim hanya field yang ingin diubah.

PATCH /files/{id}

Parameter

FieldTipeWajibDeskripsi
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
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
  }'
File

Hapus file

Menghapus file dan data terkait secara permanen. Tindakan ini tidak dapat dibatalkan.

DELETE /files/{id}

Parameter

FieldTipeWajibDeskripsi
id string (path) Ya Public FileMoon file ID.

Contoh permintaan

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

Buat pekerjaan unggahan jarak jauh

Masukkan satu atau beberapa URL media langsung ke antrean. HTTP 202 berarti pekerjaan diterima untuk pemrosesan latar belakang.

Menerima URL media HTTP/HTTPS langsung yang publik. Jaringan privat, localhost, metadata cloud, redirect tidak aman, script, dan respons non-video diblokir.
POST /remote-uploads

Parameter

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

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
    }
  ]
}

Nilai status pekerjaan

pendingrunningcompletedfailedcancelled
Unggahan jarak jauh

Daftar pekerjaan jarak jauh

Mengembalikan pekerjaan jarak jauh milik akun dengan pagination.

GET /remote-uploads

Parameter

FieldTipeWajibDeskripsi
page integer Opsional Pagination page.
per_page integer Opsional Default 25, maximum 100.

Contoh permintaan

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

Status unggahan jarak jauh

Mengembalikan progres, tahap, error, dan ID file FileMoon setelah selesai.

GET /remote-uploads/{id}

Parameter

FieldTipeWajibDeskripsi
id UUID (path) Ya Remote-upload job ID.

Contoh permintaan

cURL
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

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"
  }
}
Unggahan jarak jauh

Batalkan pekerjaan

Batalkan pekerjaan pending atau minta pembatalan pekerjaan berjalan.

POST /remote-uploads/{id}/cancel

Parameter

FieldTipeWajibDeskripsi
id UUID (path) Ya Remote-upload job ID.

Contoh permintaan

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

Ulangi pekerjaan gagal

Reset pekerjaan gagal atau dibatalkan lalu masukkan kembali ke antrean aman.

POST /remote-uploads/{id}/retry

Parameter

FieldTipeWajibDeskripsi
id UUID (path) Ya Remote-upload job ID.

Contoh permintaan

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

Error dan kode status

Error menggunakan struktur JSON yang konsisten. Simpan request_id saat menghubungi dukungan.

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.

Contoh respons

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"
}
Referensi

Persyaratan keamanan

Terapkan aturan berikut saat mengintegrasikan API FileMoon.

Simpan token pada server tepercaya dan segera cabut token yang terekspos.
Gunakan izin minimum yang diperlukan.
Batasi token ke IP atau CIDR tepercaya jika memungkinkan.
Hanya unggah konten yang Anda miliki atau diizinkan untuk didistribusikan.
cURL · PHP · JavaScript

Contoh klien

Contoh minimal cURL, PHP, dan JavaScript sisi server dengan autentikasi Bearer.

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);
Kembali ke atas