API Media
API Daftar file media
Dapatkan file di pustaka media workspace Anda beserta URL unduhannya, dari yang terbaru. Filter berdasarkan jenis atau cari berdasarkan nama untuk menemukan file yang sudah Anda unggah sebelumnya dan menggunakan kembali URL-nya di pesan.
https://wbiztool.com/api/v1/media/list/Body: Query string, atau body JSON dengan POST
Daftar mencakup file yang diunggah dengan API Unggah media dan di halaman Media directory (Direktori media). File yang dihapus tidak disertakan.
Contoh singkat#
curl -G https://wbiztool.com/api/v1/media/list/ \
--data-urlencode client_id=12345 \
--data-urlencode api_key=YOUR_API_KEY \
--data-urlencode file_type=image \
--data-urlencode page=1 \
--data-urlencode limit=20import requests
response = requests.get(
"https://wbiztool.com/api/v1/media/list/",
params={
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"file_type": "image",
"page": 1,
"limit": 20,
},
timeout=60,
)
result = response.json()
if result["status"] == 1:
data = result["data"]
print(f"Page {data['page']} of {data['total_pages']} ({data['total_count']} files)")
for media in data["media_files"]:
print(media["id"], media["original_file_name"], media["file_url"])
else:
print("Failed:", result["message"])// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const url = new URL("https://wbiztool.com/api/v1/media/list/");
url.search = new URLSearchParams({
client_id: "12345",
api_key: "YOUR_API_KEY",
file_type: "image",
page: "1",
limit: "20",
});
const response = await fetch(url);
const result = await response.json();
if (result.status === 1) {
const { data } = result;
console.log(`Page ${data.page} of ${data.total_pages} (${data.total_count} files)`);
for (const media of data.media_files) {
console.log(media.id, media.original_file_name, media.file_url);
}
} else {
console.error("Failed:", result.message);
}<?php
$query = http_build_query([
'client_id' => 12345,
'api_key' => 'YOUR_API_KEY',
'file_type' => 'image',
'page' => 1,
'limit' => 20,
]);
$ch = curl_init('https://wbiztool.com/api/v1/media/list/?' . $query);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
if (($result['status'] ?? 0) === 1) {
foreach ($result['data']['media_files'] as $media) {
echo $media['id'] . ' ' . $media['original_file_name'] . ' ' . $media['file_url'] . "\n";
}
} else {
echo 'Failed: ' . ($result['message'] ?? 'no response');
}Ganti 12345 dan YOUR_API_KEY dengan nilai Anda sendiri. Lihat Autentikasi untuk mengetahui di mana menemukannya.
Parameter request#
Kirim parameter di query string request GET, atau sebagai body JSON di request POST dengan Content-Type: application/json. Jangan mencampur keduanya: jika client_id ada di query string, body JSON diabaikan. POST yang dienkode sebagai formulir juga berfungsi untuk client_id, api_key, file_type, dan search, tetapi page dan limit diabaikan di field formulir; kirim keduanya di query string atau JSON.
Autentikasi
client_idintegerwajibAPI Client ID Anda dari Settings → API keys (Pengaturan → Kunci API).
api_keystringwajibAPI key Anda dari halaman yang sama.
Filter dan paginasi
pageintegeropsionalNomor halaman, dimulai dari
1(default). Nilai di bawah 1 diperlakukan sebagai1.limitintegeropsionalJumlah file per halaman, dari 1 hingga 100. Default
20. Nilai di atas 100 diperlakukan sebagai100, dan nilai di bawah 1 sebagai20.file_typestringopsionalimageuntuk gambar saja, ataufileuntuk semua jenis lainnya. Nilai lain diabaikan.searchstringopsionalHanya kembalikan file yang nama aslinya atau nama penyimpanannya mengandung teks ini. Tidak peka huruf besar-kecil.
curl -X POST https://wbiztool.com/api/v1/media/list/ \
-H "Content-Type: application/json" \
-d '{
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"search": "invoice",
"page": 1,
"limit": 50
}'Respons#
{
"status": 1,
"message": "Media files retrieved successfully",
"data": {
"total_count": 1,
"page": 1,
"limit": 20,
"total_pages": 1,
"has_next": false,
"has_previous": false,
"media_files": [
{
"id": 5123,
"file_name": "media_12345_17895806123456.jpg",
"original_file_name": "diwali-sale.jpg",
"file_url": "https://wbiztool-static.s3.ap-southeast-1.amazonaws.com/media/org_12345/media_12345_17895806123456.jpg",
"file_type": "image",
"file_size": 524288,
"file_size_display": "512.0 KB",
"mime_type": "image/jpeg",
"is_image": true,
"file_extension": "jpg",
"created_at": "2026-09-16T10:23:52.106447+00:00",
"uploaded_by": "[email protected]"
}
]
}
}
| Field | Tipe | Deskripsi |
|---|---|---|
status | integer | 1 jika berhasil, 0 jika request gagal. |
message | string | Media files retrieved successfully, selain itu berisi error. |
data.total_count | integer | Jumlah file yang cocok dengan filter Anda, di semua halaman. |
data.page | integer | Halaman yang dikembalikan. |
data.limit | integer | Ukuran halaman yang digunakan, setelah penyesuaian ke rentang 1 hingga 100. |
data.total_pages | integer | Jumlah halaman. 0 jika tidak ada file. |
data.has_next | boolean | true jika ada halaman setelah halaman ini. |
data.has_previous | boolean | true jika page lebih besar dari 1. |
data.media_files | array | File di halaman ini, dari yang terbaru. Kosong jika halaman melewati akhir daftar. |
Field file media#
| Field | Tipe | Deskripsi |
|---|---|---|
id | integer | ID file media. Gunakan dengan Ambil file media. |
file_name | string | Nama penyimpanan file. |
original_file_name | string | Nama file saat diunggah. |
file_url | string | URL unduhan langsung. Gunakan sebagai img_url atau file_url saat mengirim. |
file_type | string | image atau file. |
file_size | integer | Ukuran dalam byte. |
file_size_display | string | Ukuran yang mudah dibaca dengan satu desimal, misalnya 512.0 KB. |
mime_type | string | Tipe MIME, misalnya image/jpeg. |
is_image | boolean | true jika file_type bernilai image. |
file_extension | string | Ekstensi original_file_name dalam huruf kecil, tanpa titik. |
created_at | string | Waktu unggah, ISO 8601 dalam UTC dengan offset +00:00. |
uploaded_by | string atau null | Username login (biasanya alamat email) anggota tim yang mengunggah file. |
Error#
Error juga mengembalikan HTTP 200, dengan status bernilai 0:
{ "status": 0, "message": "Invalid API key" }
| Pesan | Cara memperbaikinya |
|---|---|
client_id is required | Tambahkan client_id. Jika Anda mengirim JSON, pastikan body berupa JSON yang valid (error parsing dilaporkan dengan pesan ini). |
api_key is required | Tambahkan api_key. |
client_id must be a valid integer | Kirim client_id sebagai angka. |
Invalid API key | Pastikan key tersebut ada dan belum dihapus atau dinonaktifkan. |
Invalid client_id for this API key | Key tersebut milik client_id lain. |
Error retrieving media files: … | Biasanya page atau limit di query string atau field formulir bukan bilangan bulat. Di body JSON tidak ada error: jika page bukan bilangan bulat, page, limit, file_type, dan search semuanya diabaikan, sehingga Anda mendapatkan halaman 1 dengan 20 file tanpa filter. Jika hanya limit yang bukan bilangan bulat, limit, file_type, dan search diabaikan. |
Membaca semua halaman#
Terus minta halaman berikutnya selama data.has_next bernilai true.
import requests
files, page = [], 1
while True:
result = requests.get(
"https://wbiztool.com/api/v1/media/list/",
params={"client_id": 12345, "api_key": "YOUR_API_KEY", "page": page, "limit": 100},
timeout=60,
).json()
if result["status"] != 1:
raise RuntimeError(result["message"])
files += result["data"]["media_files"]
if not result["data"]["has_next"]:
break
page += 1
print(len(files), "files")// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const files = [];
let page = 1;
while (true) {
const url = new URL("https://wbiztool.com/api/v1/media/list/");
url.search = new URLSearchParams({ client_id: "12345", api_key: "YOUR_API_KEY", page: String(page), limit: "100" });
const result = await (await fetch(url)).json();
if (result.status !== 1) throw new Error(result.message);
files.push(...result.data.media_files);
if (!result.data.has_next) break;
page += 1;
}
console.log(files.length, "files");Tips#
- Gunakan parameter kirim yang tepat: jika
is_imagebernilaitrue, kirim URL sebagaiimg_urldenganmsg_type1; jika tidak, sebagaifile_urldenganmsg_type2. Lihat Kirim pesan. - Jauhkan API key Anda dari log: query string sering dicatat oleh proxy dan server. Jika hal ini penting bagi Anda, gunakan
POSTdengan body JSON.
