UPLOAD · MEDIA · PANEL
Uploader & Media Docs
Layanan hosting file: unggah lewat HTTP murni (raw body, tanpa multipart), dapat URL publik langsung, dan kelola semua file lewat endpoint panel. Mendukung fallback proxy otomatis sehingga tetap jalan dari browser mana pun.
Auth: apikey / session panelMaks 10MB / fileBiaya: 1 limit per 512KB
Upload — POST /api/upload
Unggah media (gambar / audio / dokumen umum) dan dapatkan URL publik. Request dikirim sebagai raw body; bila direct-domain gagal karena CORS, panel otomatis mencoba proxy /api/upload yang sama.
| Parameter | Wajib | Default | Keterangan |
|---|---|---|---|
apikey | Ya | - | Wajib. Kirim via ?apikey=, header X-API-Key, atau Bearer. |
filename | Ya | - | Nama file beserta ekstensi (menentukan tipe penyimpanan). |
body | Ya | - | Isi langsung binary file — bukan multipart. Header Content-Type = MIME file. |
Contoh
curl -X POST "https://DOMAIN_ANDA/api/upload?apikey=KEY&filename=cat.jpg" \
-H "Content-Type: image/jpeg" --data-binary @cat.jpgimport { readFile } from 'node:fs/promises';
const file = await readFile('cat.jpg');
const q = new URLSearchParams({ apikey: 'KEY', filename: 'cat.jpg' });
const r = await fetch('https://DOMAIN_ANDA/api/upload?' + q, {
method: 'POST', headers: { 'Content-Type': 'image/jpeg' }, body: file
});
const d = await r.json();
console.log(d.mediaUrl, 'cost', d.chargedCost);import requests
q = {'apikey': 'KEY', 'filename': 'cat.jpg'}
r = requests.post('https://DOMAIN_ANDA/api/upload', params=q, data=open('cat.jpg', 'rb'),
headers={'Content-Type': 'image/jpeg'})
print(r.json()['mediaUrl'])Respons
{
"ok": true,
"mediaUrl": "https://.../u/abc123.jpg", // alias: url
"chargedCost": 2, // biaya limit
"expiresAt": 1767225600000, // unix ms kadaluarsa file
"deduplicated": false, // true bila file identik sudah ada
"message": "Upload berhasil."
}
Biaya otomatis:
max(1, ceil(ukuran / 512KB)) limit. Maksimal 10MB per file. Bila file identik sudah tersimpan, sistem tidak memotong ganda — hanya memperbarui masa kadaluarsa (deduplicated: true).Kelola Media (Panel)
Endpoint manajemen untuk pemilik akun — dipakai oleh modal Manage Uploader di dashboard.
| Parameter | Wajib | Default | Keterangan |
|---|---|---|---|
GET /api/panel/media/manage | GET/POST | - | Daftar seluruh media milik akun (nama, ukuran, ekstensi, expire). |
POST /api/panel/media/delete | POST | - | Hapus media. Body JSON: id media. |
POST /api/panel/media/update | POST | - | Perbarui masa kadaluarsa. Body JSON: id + expireAt. |
Aturan & Batas
- Ukuran maksimal 10MB per file.
- Biaya mengikuti ukuran: 1 limit per 512KB, minimal 1.
- File kedaluwarsa otomatis dihapus — lihat
expiresAt. - Upload file identik bersifat deduplicated: URL lama tetap berlaku, expired diperbarui.
- Semua endpoint panel butuh session login panel (bukan sekadar apikey).