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 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/HeaderKeterangan
fileField multipart/form-data berisi media.
apikeyAPI key wajib. Bisa dikirim lewat query, header x-api-key, atau Authorization: Bearer.
Content-TypeSupport multipart/form-data, JSON base64, dan raw body dengan filename di query. Jika MIME kosong/aneh, panel fallback ke extension + signature file.
extensionSupport image/video/audio umum seperti .png, .jpg, .jpeg, .webp, .gif, .mp4, .webm, .mov, .mp3, .wav, .ogg, .m4a, dll.
max size10MB per media.
costceil(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
EndpointFungsi
/api/panel/media/manageLihat semua media aktif yang masih tersimpan.
/api/panel/media/deleteHapus media berdasarkan id.
/api/panel/media/updateUbah 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;
}