मीडिया API
मीडिया अपलोड करें API
अपने वर्कस्पेस की मीडिया लाइब्रेरी में इमेज, डॉक्यूमेंट, ऑडियो या वीडियो फाइल अपलोड करें और बदले में एक डाउनलोड URL पाएं। जब आपके पास अपनी फाइल होस्टिंग न हो, तो यह URL संदेश भेजें में पास करें, या, सिर्फ इमेज के लिए, रिमाइंडर बनाएं में img_url के रूप में।
https://wbiztool.com/api/v1/media/upload/बॉडी: multipart/form-data
फाइल तुरंत स्टोर हो जाती है और रिस्पॉन्स में उसका file_url होता है। अपलोड की गई फाइलें आपके डैशबोर्ड के मीडिया डायरेक्टरी पेज पर भी दिखती हैं।
छोटा उदाहरण#
curl -X POST https://wbiztool.com/api/v1/media/upload/ \
-F client_id=12345 \
-F api_key=YOUR_API_KEY \
-F media_file=@./invoice-4821.pdfimport requests
with open("invoice-4821.pdf", "rb") as f:
response = requests.post(
"https://wbiztool.com/api/v1/media/upload/",
data={"client_id": 12345, "api_key": "YOUR_API_KEY"},
files={"media_file": f},
timeout=120,
)
try:
result = response.json()
except ValueError:
# A proxy can reject a very large upload with an HTML page before it reaches Wbiztool.
raise SystemExit(f"HTTP {response.status_code}: not JSON. Check the file size.")
if result["status"] == 1:
print("Uploaded:", result["data"]["file_url"])
else:
print("Failed:", result["message"])// Node.js 20+ (built-in fetch, FormData and fs.openAsBlob). Save as .mjs to use top-level await.
import { openAsBlob } from "node:fs";
const form = new FormData();
form.append("client_id", "12345");
form.append("api_key", "YOUR_API_KEY");
form.append("media_file", await openAsBlob("./invoice-4821.pdf"), "invoice-4821.pdf");
// Don't set Content-Type yourself; fetch adds the multipart boundary.
const response = await fetch("https://wbiztool.com/api/v1/media/upload/", { method: "POST", body: form });
const result = await response.json();
if (result.status === 1) {
console.log("Uploaded:", result.data.file_url);
} else {
console.error("Failed:", result.message);
}<?php
$ch = curl_init('https://wbiztool.com/api/v1/media/upload/');
curl_setopt_array($ch, [
CURLOPT_POST => true,
// An array body (not json_encode) makes cURL send multipart/form-data.
CURLOPT_POSTFIELDS => [
'client_id' => 12345,
'api_key' => 'YOUR_API_KEY',
'media_file' => new CURLFile('/path/to/invoice-4821.pdf', 'application/pdf', 'invoice-4821.pdf'),
],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 120,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
if (($result['status'] ?? 0) === 1) {
echo 'Uploaded: ' . $result['data']['file_url'];
} else {
echo 'Failed: ' . ($result['message'] ?? 'no response');
}12345 और YOUR_API_KEY की जगह अपनी वैल्यू डालें। ये कहां मिलेंगी, यह जानने के लिए ऑथेंटिकेशन देखें।
रिक्वेस्ट पैरामीटर#
रिक्वेस्ट multipart/form-data के रूप में भेजें। यह एंडपॉइंट JSON बॉडी और query string पैरामीटर नहीं पढ़ता।
client_idintegerआवश्यकसेटिंग्स → API Keys से आपका API क्लाइंट ID।
api_keystringआवश्यकउसी पेज से आपकी API की।
media_filefileआवश्यकअपलोड की जाने वाली फाइल, अधिकतम 64 MB। इसका टाइप फाइल के नाम के एक्सटेंशन से तय होता है, इसलिए नाम किसी सपोर्टेड एक्सटेंशन पर खत्म होना चाहिए।
सपोर्टेड फाइल टाइप#
| कैटेगरी | एक्सटेंशन |
|---|---|
| इमेज | .jpg, .jpeg, .png, .gif |
| डॉक्यूमेंट | .pdf, .doc, .xls, .ppt, .txt, .csv |
| ऑडियो | .mp3, .wav |
| वीडियो | .mp4, .mov |
| आर्काइव | .zip |
इमेज file_type को image सेट करके स्टोर होती हैं; बाकी सब file होता है।
रिस्पॉन्स#
सफल रिक्वेस्ट HTTP 200 लौटाती है:
{
"status": 1,
"message": "File uploaded 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"
}
}
| फील्ड | टाइप | विवरण |
|---|---|---|
status | integer | फाइल अपलोड होने पर 1, रिक्वेस्ट फेल होने पर 0। |
message | string | File uploaded successfully, वरना एरर। |
data.id | integer | मीडिया फाइल का ID। इसे मीडिया फाइल पाएं के साथ इस्तेमाल करें। |
data.file_name | string | वह नाम जिससे फाइल स्टोर है, Wbiztool द्वारा बनाया गया। |
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 | file_type के image होने पर true। |
data.file_extension | string | original_file_name का lower-case एक्सटेंशन, बिना डॉट के। |
data.created_at | string | अपलोड का समय, UTC में ISO 8601, +00:00 ऑफसेट के साथ। |
एरर#
एरर भी HTTP 200 लौटाते हैं, और status 0 होता है:
{ "status": 0, "message": "File is too large. Maximum size is 64MB. Your file: 71.3MB" }
| संदेश | कैसे ठीक करें |
|---|---|
Only POST method is supported | POST रिक्वेस्ट भेजें। |
client_id is required | client_id को फॉर्म फील्ड के रूप में जोड़ें। जांचें कि बॉडी multipart/form-data है, JSON नहीं। |
api_key is required | api_key को फॉर्म फील्ड के रूप में जोड़ें। |
media_file is required | फाइल को media_file नाम के फील्ड में भेजें। |
client_id must be a valid integer | client_id को नंबर के रूप में भेजें। |
Invalid API key | जांचें कि की मौजूद है और डिलीट या डिसेबल नहीं हुई है। |
Invalid client_id for this API key | की किसी दूसरे client_id की है। |
File is too large. Maximum size is 64MB. Your file: …MB | 64 MB या उससे छोटी फाइल अपलोड करें। |
File type not supported. Type detected: … | किसी सपोर्टेड एक्सटेंशन का इस्तेमाल करें। |
Error uploading file: … | अपलोड पूरा नहीं हो सका। फिर से कोशिश करें। यह तब भी मिलता है जब API की किसी वर्कस्पेस से जुड़ी नहीं है; जिस वर्कस्पेस को इस्तेमाल करना चाहते हैं, उसमें नई की बनाएं। |
अपलोड करें और भेजें#
फाइल अपलोड करें, फिर file_url को संदेश भेजें में पास करें: इमेज के लिए msg_type 1 के साथ img_url के रूप में, या दूसरी फाइलों के लिए msg_type 2 के साथ file_url के रूप में।
import requests
BASE = "https://wbiztool.com/api/v1"
AUTH = {"client_id": 12345, "api_key": "YOUR_API_KEY"}
with open("invoice-4821.pdf", "rb") as f:
upload = requests.post(f"{BASE}/media/upload/", data=AUTH, files={"media_file": f}, timeout=120).json()
if upload["status"] != 1:
raise SystemExit("Upload failed: " + upload["message"])
media = upload["data"]
message = {
**AUTH,
"whatsapp_client": 678,
"country_code": "91",
"phone": "9876543210",
"msg": "Your invoice for order #4821 is attached.",
}
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"])
sent = requests.post(f"{BASE}/send_msg/", json=message, timeout=60).json()
print(sent)// Node.js 20+ (built-in fetch, FormData and fs.openAsBlob). Save as .mjs to use top-level await.
import { openAsBlob } from "node:fs";
const BASE = "https://wbiztool.com/api/v1";
const form = new FormData();
form.append("client_id", "12345");
form.append("api_key", "YOUR_API_KEY");
form.append("media_file", await openAsBlob("./invoice-4821.pdf"), "invoice-4821.pdf");
const upload = await (await fetch(`${BASE}/media/upload/`, { method: "POST", body: form })).json();
if (upload.status !== 1) throw new Error(`Upload failed: ${upload.message}`);
const media = upload.data;
const message = {
client_id: 12345,
api_key: "YOUR_API_KEY",
whatsapp_client: 678,
country_code: "91",
phone: "9876543210",
msg: "Your invoice for order #4821 is attached.",
...(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());संदेश भेजें API की फाइल एक्सटेंशन की अपनी अलग सूची है। इस API से स्वीकार होने वाले टाइप में से, msg_type 2 के साथ भेजी गई .doc, .ppt, .csv, .zip, .wav और .mov फाइलें नाम में .pdf जुड़कर डिलीवर होती हैं (जैसे brochure.doc.pdf)। डॉक्यूमेंट भेजने से पहले उन्हें PDF में बदल लें। इमेज और फाइलें भेजना देखें। नाम छोटे अक्षरों (lower case) में भी भेजा जाता है (Invoice-4821.PDF पहुंचता है invoice-4821.pdf के रूप में)।
msg_type 1 के साथ भेजी गई इमेज 16 MB या उससे छोटी होनी चाहिए। बड़ी इमेज यहां ठीक से अपलोड हो जाती हैं, लेकिन भेजते समय File exceeds WhatsApp size limit (16MB max) के साथ फेल हो जाती हैं। पहले उन्हें कंप्रेस करें, या msg_type 2 के साथ फाइल के रूप में भेजें।
सुझाव#
- अपलोड दोबारा इस्तेमाल करें।
idयाfile_urlसेव करें और एक ही फाइल को दोबारा अपलोड करने के बजाय कई बार भेजें। - मूल नाम समझने लायक रखें। डैशबोर्ड में आपको
original_file_nameही दिखता है, और भेजते समयfile_nameके लिए भी यह अच्छी वैल्यू है। - पहले के अपलोड ढूंढें: मीडिया की सूची से।
