API الوسائط
API جلب ملف وسائط
احصل على تفاصيل ملف واحد في مكتبة الوسائط وعنوان URL لتنزيله بواسطة معرّفه. استخدمه للتحقق من أن الملف لا يزال موجودًا قبل إرساله.
https://wbiztool.com/api/v1/media/{media_id}/النص (Body): سلسلة استعلام، أو جسم JSON مع POST
استبدل {media_id} في المسار بقيمة id التي يُرجعها رفع الوسائط أو عرض الوسائط، مثل /api/v1/media/5122/.
مثال سريع#
curl -G https://wbiztool.com/api/v1/media/5122/ \
--data-urlencode client_id=12345 \
--data-urlencode api_key=YOUR_API_KEYimport requests
media_id = 5122
response = requests.get(
f"https://wbiztool.com/api/v1/media/{media_id}/",
params={"client_id": 12345, "api_key": "YOUR_API_KEY"},
timeout=60,
)
result = response.json()
if result["status"] == 1:
media = result["data"]
print(media["original_file_name"], media["file_size_display"], media["file_url"])
else:
print("Failed:", result["message"])// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const mediaId = 5122;
const url = new URL(`https://wbiztool.com/api/v1/media/${mediaId}/`);
url.search = new URLSearchParams({ client_id: "12345", api_key: "YOUR_API_KEY" });
const response = await fetch(url);
const result = await response.json();
if (result.status === 1) {
const media = result.data;
console.log(media.original_file_name, media.file_size_display, media.file_url);
} else {
console.error("Failed:", result.message);
}<?php
$mediaId = 5122;
$query = http_build_query(['client_id' => 12345, 'api_key' => 'YOUR_API_KEY']);
$ch = curl_init("https://wbiztool.com/api/v1/media/$mediaId/?" . $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) {
echo $result['data']['original_file_name'] . ': ' . $result['data']['file_url'];
} else {
echo 'Failed: ' . ($result['message'] ?? 'no response');
}استبدل 12345 وYOUR_API_KEY بقيمك الخاصة. راجع المصادقة لمعرفة مكان العثور عليها.
معاملات الطلب#
أرسل client_id وapi_key في سلسلة الاستعلام لطلب GET، أو كجسم JSON في طلب POST. إذا كان client_id في سلسلة الاستعلام، يُتجاهل جسم JSON.
المسار
media_idintegerمطلوبمعرّف ملف الوسائط. يجب أن يكون عددًا صحيحًا؛ وأي قيمة أخرى تُرجع استجابة HTML بمعنى «الصفحة غير موجودة» بدلًا من JSON.
المصادقة
client_idintegerمطلوبمعرّف العميل في API (API Client ID) من Settings → API keys (الإعدادات ← مفاتيح API).
api_keystringمطلوبمفتاح API الخاص بك من الصفحة نفسها.
الاستجابة#
{
"status": 1,
"message": "Media file retrieved successfully",
"data": {
"id": 5122,
"file_name": "media_12345_17895804001234.pdf",
"original_file_name": "invoice-4821.pdf",
"file_url": "https://wbiztool-static.s3.ap-southeast-1.amazonaws.com/media/org_12345/media_12345_17895804001234.pdf",
"file_type": "file",
"file_size": 248312,
"file_size_display": "242.5 KB",
"mime_type": "application/pdf",
"is_image": false,
"file_extension": "pdf",
"created_at": "2026-09-16T10:20:31.512934+00:00",
"modified_at": "2026-09-16T10:20:31.512961+00:00",
"uploaded_by": "[email protected]"
}
}
| الحقل | النوع | الوصف |
|---|---|---|
status | integer | 1 عند النجاح، و0 إذا فشل الطلب. |
message | string | Media file retrieved successfully، وإلا نص الخطأ. |
data.id | integer | معرّف ملف الوسائط. |
data.file_name | string | الاسم الذي خُزّن به الملف. |
data.original_file_name | string | اسم الملف عند رفعه. |
data.file_url | string | عنوان URL مباشر للتنزيل. استخدمه كقيمة img_url أو file_url عند الإرسال. |
data.file_type | string | image أو file. |
data.file_size | integer | الحجم بالبايت. |
data.file_size_display | string | حجم مقروء بمنزلة عشرية واحدة، مثل 242.5 KB. |
data.mime_type | string | نوع MIME، مثل application/pdf. |
data.is_image | boolean | true عندما تكون قيمة file_type هي image. |
data.file_extension | string | امتداد original_file_name بأحرف صغيرة، بدون النقطة. |
data.created_at | string | وقت الرفع، بصيغة ISO 8601 بتوقيت UTC مع الفرق +00:00. |
data.modified_at | string | آخر وقت تغيّر فيه سجل الملف، بالصيغة نفسها. |
data.uploaded_by | string or null | اسم مستخدم تسجيل الدخول (عادةً عنوان البريد الإلكتروني) لعضو الفريق الذي رفع الملف. |
الأخطاء#
تُرجع الأخطاء أيضًا HTTP 200، مع status بقيمة 0:
{ "status": 0, "message": "Media file not found" }
استثناء واحد: إذا لم تكن قيمة media_id رقمًا، فلن يطابق عنوان URL أي نقطة نهاية، وستحصل على صفحة 404 بصيغة HTML بدلًا من JSON.
| الرسالة | طريقة الإصلاح |
|---|---|
client_id is required | أضف client_id. |
api_key is required | أضف api_key. |
client_id must be a valid integer | أرسل client_id كرقم. |
Invalid API key | تأكد من أن المفتاح موجود ولم يُحذف أو يُعطَّل. |
Invalid client_id for this API key | المفتاح ينتمي إلى client_id مختلف. |
Media file not found | لا يوجد ملف بهذا المعرّف في مساحة العمل الخاصة بمفتاح API، أو أنه حُذف. |
Error retrieving media file: … | حدث خطأ من جانبنا. حاول مرة أخرى. |
تحقّق من الملف قبل إرساله#
اجلب الملف بواسطة معرّفه، وتوقف إذا لم يعد موجودًا، ثم أرسل file_url الخاص به: كقيمة img_url مع msg_type 1 للصور، أو كقيمة file_url مع msg_type 2 لأي شيء آخر.
import requests
BASE = "https://wbiztool.com/api/v1"
AUTH = {"client_id": 12345, "api_key": "YOUR_API_KEY"}
result = requests.get(f"{BASE}/media/5122/", params=AUTH, timeout=60).json()
if result["status"] != 1:
raise SystemExit("Can't use this file: " + result["message"])
media = result["data"]
message = {
**AUTH,
"whatsapp_client": 678,
"country_code": "91",
"phone": "9876543210",
"msg": "Here is the document you asked for.",
}
if media["is_image"]:
message.update(msg_type=1, img_url=media["file_url"])
else:
message.update(msg_type=2, file_url=media["file_url"], file_name=media["original_file_name"])
print(requests.post(f"{BASE}/send_msg/", json=message, timeout=60).json())// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const BASE = "https://wbiztool.com/api/v1";
const auth = { client_id: 12345, api_key: "YOUR_API_KEY" };
const url = new URL(`${BASE}/media/5122/`);
url.search = new URLSearchParams(auth);
const result = await (await fetch(url)).json();
if (result.status !== 1) throw new Error(`Can't use this file: ${result.message}`);
const media = result.data;
const message = {
...auth,
whatsapp_client: 678,
country_code: "91",
phone: "9876543210",
msg: "Here is the document you asked for.",
...(media.is_image
? { msg_type: 1, img_url: media.file_url }
: { msg_type: 2, file_url: media.file_url, file_name: media.original_file_name }),
};
const sent = await fetch(`${BASE}/send_msg/`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(message),
});
console.log(await sent.json());الملفات غير الصور مثل .doc و.ppt و.csv و.zip و.wav و.mov تصل بعد إضافة .pdf إلى اسمها، والصور التي يزيد حجمها على 16 MB يفشل إرسالها. راجع رفع الوسائط ← الرفع والإرسال.
نصائح#
- الملفات المحذوفة تُرجع
Media file not found، رغم أنfile_urlالخاص بها قد يظل قابلًا للتنزيل. تحقّق باستخدام نقطة النهاية هذه بدلًا من جلب عنوان URL. عناوين URL للملفات المرفوعة عامة ودائمة؛ راجع رفع الوسائط ← الرفع والإرسال. - الملفات خاصة بكل مساحة عمل. لا يمكن قراءة ملف رُفع في مساحة عمل باستخدام مفتاح API من مساحة عمل أخرى.
- لا تعرف المعرّف؟ ابحث بالاسم باستخدام عرض الوسائط.
