Uploader Media Hosting.
API upload media sementara untuk image, video, dan audio. Setiap file wajib memakai API key panel, maksimal 10MB, aktif 30 hari, dan limit berkurang berdasarkan ukuran file. Validasi sekarang memakai MIME, extension, dan signature file supaya PNG/JPG/MP4/MP3 tetap diterima walau Content-Type dari browser kosong atau application/octet-stream.
POST /api/uploadImage / Video / AudioMax 10MBExpire 30 hari1 limit / MBAdmin manage
Storage panel:
File disimpan di folder panel
File disimpan di folder panel
Api/Uploader dan metadata aktif di Api/Uploader/media.json. Saat expire, panel akan membersihkan file otomatis.Endpoint Upload
POST /api/upload POST /api/media/upload
| Field/Header | Keterangan |
|---|---|
file | Field multipart/form-data berisi media. |
apikey | API key wajib. Bisa dikirim lewat query, header x-api-key, atau Authorization: Bearer. |
Content-Type | Support multipart/form-data, JSON base64, dan raw body dengan filename di query. Jika MIME kosong/aneh, panel fallback ke extension + signature file. |
extension | Support image/video/audio umum seperti .png, .jpg, .jpeg, .webp, .gif, .mp4, .webm, .mov, .mp3, .wav, .ogg, .m4a, dll. |
max size | 10MB per media. |
cost | ceil(sizeMB). 500KB = 1 limit, 1.2MB = 2 limit, 4.8MB = 5 limit. |
Response sukses
{
"ok": true,
"message": "Media berhasil diupload.",
"id": "media_id",
"url": "https://bot.chioriya.my.id/Api/Uploader/media_id.jpg",
"mediaUrl": "https://bot.chioriya.my.id/Api/Uploader/media_id.jpg",
"expiresAt": 1790000000000,
"cost": 2,
"remaining": 498
}
Manage Media Admin
Manage media hanya muncul untuk akun yang tersambung ke panel dan role-nya admin/owner. Halaman Uploader di dashboard akan otomatis membuka list media aktif jika sesi admin valid.
POST /api/panel/media/manage POST /api/panel/media/delete POST /api/panel/media/update
| Endpoint | Fungsi |
|---|---|
/api/panel/media/manage | Lihat semua media aktif yang masih tersimpan. |
/api/panel/media/delete | Hapus media berdasarkan id. |
/api/panel/media/update | Ubah expire berdasarkan id + days atau expiresAt. |
Endpoint manage memakai cookie/session connector panel, bukan API key biasa. Jadi user biasa tetap tidak bisa melihat semua media orang lain.
Examples
Browser Fetch
const form = new FormData();
form.append("file", fileInput.files[0]);
const res = await fetch("/api/upload?apikey=YOUR_APIKEY", {
method: "POST",
body: form
});
const data = await res.json();
console.log(data.mediaUrl);
curl
curl -X POST "https://api.chioriya.app/api/upload?apikey=YOUR_APIKEY" \ -F "file=@gambar.jpg"
Baileys / Keila
const axios = require("axios");
const FormData = require("form-data");
async function uploadMedia(buffer, filename, apiKey) {
const form = new FormData();
form.append("file", buffer, filename);
const { data } = await axios.post("https://api.chioriya.app/api/upload", form, {
headers: { ...form.getHeaders(), "x-api-key": apiKey },
maxBodyLength: Infinity
});
return data.mediaUrl;
}