FileUp

Dokumentasi API

FazzCDN punya tiga endpoint inti: unggah file, hapus file, dan ambil file. Upload menerima file biner (multipart/form-data), link, base64, maupun raw binary body — jadi bisa langsung dipakai dari curl, browser, backend, atau bot chat tanpa SDK tambahan.

Mulai cepat

Tiga langkah untuk punya link CDN pertamamu.

Kirim file

POST ke /api/upload lewat multipart, link, atau base64.

Terima URL

Respons JSON berisi link /cdn/… yang siap dipakai.

Pakai di mana saja

Tempel di aplikasi, situs, atau chat — file langsung tersedia publik.

curl -X POST https://fileup.us.ci/api/upload \
  -F "file=@/path/ke/foto.jpg"

Autentikasi

Upload dan ambil file tidak butuh API key — siapa saja bisa mengunggah dan mengakses file publik. Hanya endpoint hapus yang butuh API key, dikirim lewat header:

HTTP header
Authorization: Bearer API_KEY_KAMU

Atau memakai header alternatif X-API-Key: API_KEY_KAMU. Jika server tidak dikonfigurasi dengan API_KEY, endpoint hapus akan menolak semua request dengan status 403 DELETE_DISABLED.

Karena upload terbuka untuk publik, jangan letakkan data sensitif di nama file atau folder — semua file yang diunggah dapat diakses siapa pun yang tahu URL-nya.

Unggah file

POST https://fileup.us.ci/api/upload Menerima file lewat empat cara sekaligus dalam satu endpoint — pilih yang paling cocok dengan aplikasimu. Alias /upload juga tersedia untuk kompatibilitas mundur.

Via file (multipart/form-data)

Cara paling umum: kirim file biner langsung. Nama field bebas — server membaca semua field bertipe file dari request, jadi file, image, upload, dsb semuanya diterima. Boleh lebih dari satu file sekaligus.

curl — satu file
curl -X POST https://fileup.us.ci/api/upload \
  -F "file=@/path/ke/foto.jpg" \
  -F "folder=gambar/2026"
curl — banyak file dalam satu request
curl -X POST https://fileup.us.ci/api/upload \
  -F "[email protected]" \
  -F "[email protected]" \
  -F "[email protected]"

Via link URL

Kirim satu atau beberapa URL sumber lewat field url / urls — server yang mengunduhkan file untukmu. Mendukung form-data, JSON array, maupun query string. Semua permintaan divalidasi agar tidak menyasar jaringan internal (proteksi SSRF).

curl — satu link
curl -X POST https://fileup.us.ci/api/upload \
  -d "url=https://contoh.com/gambar.png"
JSON — banyak link sekaligus
curl -X POST https://fileup.us.ci/api/upload \
  -H "Content-Type: application/json" \
  -d '{
    "urls": ["https://contoh.com/a.png", "https://contoh.com/b.pdf"],
    "folder": "impor"
  }'

Via base64 / data URI

Cocok untuk aplikasi yang sudah punya file dalam bentuk base64 (mis. hasil canvas, screenshot dari ekstensi browser). Kirim lewat field base64 atau data, boleh berupa data URI lengkap (data:image/png;base64,…) atau string base64 polos + field mimetype.

JSON — data URI
curl -X POST https://fileup.us.ci/api/upload \
  -H "Content-Type: application/json" \
  -d '{
    "data": "data:image/png;base64,iVBORw0KG...",
    "filename": "capture.png"
  }'

Via raw binary body

Kirim isi file langsung sebagai body request (tanpa multipart). Set Content-Type ke tipe file dan sebutkan nama file lewat query ?filename= atau header X-Filename.

curl — raw binary
curl -X POST "https://fileup.us.ci/api/upload?filename=foto.jpg" \
  -H "Content-Type: image/jpeg" \
  --data-binary @foto.jpg

Opsi tambahan

Field ini berlaku untuk keempat cara upload di atas, dikirim sebagai field form/JSON biasa atau query string:

FieldTipeKeterangan
folderstringSubfolder tujuan, contoh gambar/2026. Dibuat otomatis bila belum ada.
filename / namestringNama file kustom. Hanya berlaku jika request berisi tepat satu file.
uniquebooleanJika true/1, tambahkan kode acak pada nama file agar tidak pernah bentrok dengan file lama.

Mengunggah beberapa file dengan nama yang sama dalam satu request otomatis diberi akhiran -1, -2, dst agar tidak saling menimpa.

Bentuk respons

Berhasil semua → 201. Sebagian berhasil → 207 dengan daftar errors. Semua gagal → status error dan success: false.

201 Created
{
  "success": true,
  "message": "1 file berhasil diunggah.",
  "data": {
    "count": 1,
    "url": "https://fileup.us.ci/cdn/gambar/2026/foto.jpg",
    "files": [
      {
        "name": "foto.jpg",
        "path": "gambar/2026/foto.jpg",
        "url": "https://fileup.us.ci/cdn/gambar/2026/foto.jpg",
        "size": 284213,
        "mimetype": "image/jpeg",
        "source": "upload"
      }
    ]
  }
}
207 Multi-Status (sebagian gagal)
{
  "success": true,
  "message": "1 file berhasil diunggah, 1 gagal.",
  "data": { "count": 1, "url": "...", "files": [ { "...": "..." } ] },
  "errors": [
    {
      "index": 1,
      "source": "url",
      "input": "https://contoh.com/rusak.png",
      "code": "URL_FETCH_FAILED",
      "message": "Server tujuan membalas HTTP 404."
    }
  ]
}

Ambil file (CDN)

GET https://fileup.us.ci/cdn/{path} Menyajikan file apa adanya (proxy ke penyimpanan) dengan Content-Type asli, cache 1 hari, dan header CORS terbuka. Mendukung permintaan Range untuk streaming video/audio.

Tambahkan ?download=1 untuk memaksa unduhan (Content-Disposition: attachment), atau ?download=nama-baru.pdf untuk mengunduh dengan nama file berbeda.

Contoh
https://fileup.us.ci/cdn/gambar/2026/foto.jpg
https://fileup.us.ci/cdn/gambar/2026/foto.jpg?download=1
https://fileup.us.ci/cdn/dokumen/laporan.pdf?download=laporan-akhir.pdf

Hapus file

DELETE POST https://fileup.us.ci/api/delete Butuh API key Hapus satu atau banyak file sekaligus. Terima path/paths (path di penyimpanan) atau url/urls (link CDN penuh).
curl — hapus satu file
curl -X DELETE https://fileup.us.ci/api/delete \
  -H "Authorization: Bearer API_KEY_KAMU" \
  -H "Content-Type: application/json" \
  -d '{ "path": "gambar/2026/foto.jpg" }'
curl — hapus banyak file sekaligus
curl -X DELETE https://fileup.us.ci/api/delete \
  -H "Authorization: Bearer API_KEY_KAMU" \
  -H "Content-Type: application/json" \
  -d '{ "paths": ["a/1.jpg", "a/2.jpg"] }'

Respons sukses: 200 dengan daftar path yang dihapus. Tanpa API key yang valid, endpoint membalas 401 UNAUTHORIZED (atau 403 DELETE_DISABLED bila server belum mengaktifkan fitur ini).

Info & batas layanan

GET https://fileup.us.ci/api/info Mengembalikan daftar endpoint dan batas layanan saat ini secara terprogram — berguna untuk memvalidasi ukuran file di sisi klien sebelum mengunggah.
BatasNilai saat ini
Ukuran maksimal per file (upload langsung)4.5 MB
Ukuran maksimal per file (via link)4.5 MB
Jumlah file maksimal per request10
Batas waktu unduh dari link15 detik
Rate limit60 request / 10 menit per IP
Endpoint hapus aktifTidak (API_KEY belum diset)

Kode error

Semua error dibalas dalam bentuk konsisten: { "success": false, "error": { "code", "message" } }.

StatusKodeArti
400NO_FILETidak ada file/url/base64 yang terdeteksi dalam request.
400TOO_MANY_FILESJumlah file melebihi batas per request.
400INVALID_URL / URL_NOT_ALLOWEDURL tidak valid, atau menyasar alamat internal/privat (diblokir demi keamanan).
400INVALID_BASE64String base64 / data URI tidak valid.
400INVALID_FOLDER / INVALID_PATHNama folder atau path tidak valid (terlalu dalam, atau mengandung ..).
413FILE_TOO_LARGEUkuran file melebihi batas yang berlaku.
401UNAUTHORIZEDAPI key untuk endpoint hapus tidak valid atau tidak dikirim.
403DELETE_DISABLEDServer belum mengaktifkan fitur hapus (API_KEY kosong).
404NOT_FOUNDEndpoint atau file tidak ditemukan.
429RATE_LIMITEDTerlalu banyak request dari IP yang sama. Coba lagi setelah jeda.
502URL_FETCH_FAILED / STORAGE_ERRORGagal mengunduh dari link sumber, atau gagal menyimpan ke penyimpanan.
504URL_TIMEOUTServer sumber tidak merespons dalam batas waktu yang ditentukan.
500SERVER_NOT_CONFIGUREDServer belum dikonfigurasi dengan benar (variabel lingkungan penyimpanan kosong).

Saat mengirim banyak file/link dalam satu request dan sebagian gagal, error per item muncul di array errors pada respons 207 — lihat contoh di bagian bentuk respons.

Rate limit

Setiap IP dibatasi 60 request per 10 menit untuk endpoint /api/upload dan /api/delete. Saat melewati batas, server membalas 429 RATE_LIMITED beserta header standar RateLimit yang menunjukkan sisa kuota.

Endpoint GET /cdn/{path} untuk mengambil file tidak dibatasi rate limit ini — aman dipakai sebagai sumber gambar/video di halaman publik.

FAQ

Apakah upload butuh akun atau API key?

Tidak. Upload dan pengambilan file bersifat publik dan tanpa autentikasi. Hanya endpoint hapus yang membutuhkan API key.

Format file apa saja yang didukung?

Semua jenis file diterima apa adanya — gambar, video, dokumen, arsip, dan lainnya — selama ukurannya tidak melebihi batas yang berlaku.

Kenapa upload via link ke localhost/IP privat ditolak?

Ini proteksi keamanan (anti-SSRF) agar fitur unduh-dari-link tidak disalahgunakan untuk mengakses jaringan internal server. Gunakan URL publik yang dapat diakses dari internet.

Bisakah nama file diganti setelah diunggah?

Belum ada endpoint rename. Untuk mengganti nama, unggah ulang dengan filename baru lalu hapus file lama lewat /api/delete.

Apakah ada batas berapa lama file disimpan?

Tidak ada batas waktu — file tersimpan permanen di penyimpanan dataset sampai dihapus secara manual lewat /api/delete.