क्विकस्टार्ट
आपकी पहली API कॉल तक तीन चरण।
- यहाँ से एक API कुंजी बनाएँ खाता › API कुंजियाँ
- Authorization: Bearer हेडर के साथ v1 एंडपॉइंट्स में से किसी एक पर multipart/form-data POST भेजें।
- JSON प्रतिक्रिया का निरीक्षण करें — सफल कॉल 15 मिनट के लिए मान्य एक हस्ताक्षरित डाउनलोड URL लौटाते हैं।
बेस URL
प्रमाणीकरण
हर अनुरोध में Bearer टोकन के रूप में आपकी API कुंजी के साथ एक Authorization हेडर शामिल होना चाहिए।
Authorization: Bearer pdn_live_a1b2c3d4e5f6...कुंजी प्रारूप
pdn_live_<32 hex>— उत्पादन कुंजी। आपकी योजना की दर सीमा में गिनी जाती है।pdn_test_<32 hex>— परीक्षण कुंजी। समान दर सीमा; लॉग में परिवेशों को अलग करने के लिए उपयोगी।
दर सीमाएँ
दर सीमाएँ प्रति उपयोगकर्ता, प्रति रोलिंग 1-घंटे विंडो के आधार पर गणना की जाती हैं। हर प्रतिक्रिया में X-RateLimit-* हेडर शामिल होते हैं ताकि आप अपने पुनः प्रयासों की योजना बना सकें।
| योजना | अनुरोध / घंटा |
|---|---|
| Free | 10 |
| Premium | 1,000 |
| Business | 5,000 |
| Enterprise | असीमित |
प्रतिक्रिया हेडर
X-RateLimit-Limit— आपकी योजना की प्रति-घंटा सीमा।X-RateLimit-Remaining— वर्तमान विंडो में शेष कॉल।X-RateLimit-Reset— Unix टाइमस्टैम्प जब विंडो रीसेट होती है।Retry-After— प्रतीक्षा करने के सेकंड, केवल 429 प्रतिक्रियाओं पर भेजे जाते हैं।
त्रुटियाँ
सभी त्रुटियाँ एक स्थिर कोड और मानव-पठनीय संदेश के साथ JSON के रूप में लौटाई जाती हैं।
{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded for your plan (free: 10/hour)."
},
"meta": { "request_id": "8f9a2b3c1d4e5f6a" }
}त्रुटि कोड
| Code | HTTP | अर्थ |
|---|---|---|
unauthorized | 401 | गायब, गलत प्रारूप में, या निरस्त API कुंजी। |
rate_limited | 429 | आपकी योजना के लिए प्रति-घंटा दर सीमा पार हो गई। |
invalid_input | 400 | अनुरोध बॉडी या पैरामीटर सत्यापन में विफल रहे। |
payload_too_large | 413 | फ़ाइल या संयुक्त पेलोड आपकी योजना की आकार सीमा से अधिक है। |
internal_error | 500 | अप्रत्याशित सर्वर त्रुटि। बैकऑफ़ के साथ पुनः प्रयास करना सुरक्षित। |
POST /compress
जब उपलब्ध हो तब Ghostscript का उपयोग करके PDF संपीड़ित करें, FPDI फ़ॉलबैक के साथ। एक हस्ताक्षरित डाउनलोड URL लौटाता है।
पैरामीटर (multipart/form-data)
| नाम | प्रकार | विवरण |
|---|---|---|
| file * | file | संपीड़ित करने के लिए PDF फ़ाइल। |
| level | string | संपीड़न प्रीसेट। low, medium, high |
कोड उदाहरण
curl -X POST https://whatapdf.com/api/v1/compress \
-H "Authorization: Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-F "[email protected]" \
-F "level=medium"const form = new FormData();
form.append('file', fileInput.files[0]);
form.append('level', 'medium');
const res = await fetch('https://whatapdf.com/api/v1/compress', {
method: 'POST',
headers: { 'Authorization': 'Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' },
body: form,
});
const json = await res.json();
console.log(json.data.download.url);import requests
with open('input.pdf', 'rb') as f:
r = requests.post(
'https://whatapdf.com/api/v1/compress',
headers={'Authorization': 'Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'},
files={'file': f},
data={'level': 'medium'},
)
print(r.json())<?php
$ch = curl_init('https://whatapdf.com/api/v1/compress');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'],
CURLOPT_POSTFIELDS => [
'file' => new CURLFile('input.pdf', 'application/pdf'),
'level' => 'medium',
],
]);
$res = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($res);उदाहरण प्रतिक्रिया
{
"data": {
"filename": "report_compressed.pdf",
"original_size": 5242880,
"compressed_size": 2621440,
"savings_percent": 50.0,
"method": "ghostscript",
"download": {
"url": "/api/get-pdf.php?file=...&exp=...&sig=...",
"expires_in": 900
}
},
"meta": { "request_id": "8f9a2b3c1d4e5f6a" }
}POST /merge
अपलोड क्रम में 2–20 PDF को एकल दस्तावेज़ में मर्ज करें।
पैरामीटर
| नाम | प्रकार | विवरण |
|---|---|---|
| files[] * | file[] | दो या अधिक PDF फ़ाइलें (multipart सरणी)। |
कोड उदाहरण
curl -X POST https://whatapdf.com/api/v1/merge \
-H "Authorization: Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-F "files[][email protected]" \
-F "files[][email protected]" \
-F "files[][email protected]"const form = new FormData();
for (const f of fileInput.files) form.append('files[]', f);
const res = await fetch('https://whatapdf.com/api/v1/merge', {
method: 'POST',
headers: { 'Authorization': 'Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' },
body: form,
});
console.log(await res.json());import requests
files = [
('files[]', open('a.pdf', 'rb')),
('files[]', open('b.pdf', 'rb')),
('files[]', open('c.pdf', 'rb')),
]
r = requests.post(
'https://whatapdf.com/api/v1/merge',
headers={'Authorization': 'Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'},
files=files,
)
print(r.json())<?php
$ch = curl_init('https://whatapdf.com/api/v1/merge');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'],
CURLOPT_POSTFIELDS => [
'files[0]' => new CURLFile('a.pdf', 'application/pdf'),
'files[1]' => new CURLFile('b.pdf', 'application/pdf'),
'files[2]' => new CURLFile('c.pdf', 'application/pdf'),
],
]);
echo curl_exec($ch);
curl_close($ch);POST /split
पृष्ठ श्रेणियों के अनुसार एक PDF को एक या अधिक भागों में विभाजित करें। प्रत्येक भाग अपने स्वयं के हस्ताक्षरित डाउनलोड URL के साथ लौटाया जाता है।
पैरामीटर
| नाम | प्रकार | विवरण |
|---|---|---|
| file * | file | स्रोत PDF। |
| ranges * | string | अल्पविराम से अलग पृष्ठ श्रेणियाँ। एक श्रेणी = एक आउटपुट भाग। e.g. 1-3,5,7-9 |
कोड उदाहरण
curl -X POST https://whatapdf.com/api/v1/split \
-H "Authorization: Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-F "[email protected]" \
-F "ranges=1-3,5,7-9"const form = new FormData();
form.append('file', fileInput.files[0]);
form.append('ranges', '1-3,5,7-9');
const res = await fetch('https://whatapdf.com/api/v1/split', {
method: 'POST',
headers: { 'Authorization': 'Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' },
body: form,
});
console.log(await res.json());import requests
with open('input.pdf', 'rb') as f:
r = requests.post(
'https://whatapdf.com/api/v1/split',
headers={'Authorization': 'Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'},
files={'file': f},
data={'ranges': '1-3,5,7-9'},
)
for part in r.json()['data']['parts']:
print(part['pages'], part['download']['url'])<?php
$ch = curl_init('https://whatapdf.com/api/v1/split');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'],
CURLOPT_POSTFIELDS => [
'file' => new CURLFile('input.pdf', 'application/pdf'),
'ranges' => '1-3,5,7-9',
],
]);
print_r(json_decode(curl_exec($ch), true));
curl_close($ch);POST /ocr
Tesseract OCR का उपयोग करके एक छवि से टेक्स्ट निकालें। 20+ भाषाओं का समर्थन करता है।
पैरामीटर
| नाम | प्रकार | विवरण |
|---|---|---|
| image * | file | OCR करने के लिए छवि (PNG, JPEG, TIFF, WebP, या BMP)। |
| language | string | Tesseract भाषा कोड। डिफ़ॉल्ट eng |
कोड उदाहरण
curl -X POST https://whatapdf.com/api/v1/ocr \
-H "Authorization: Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-F "[email protected]" \
-F "language=eng"const form = new FormData();
form.append('image', imageInput.files[0]);
form.append('language', 'eng');
const res = await fetch('https://whatapdf.com/api/v1/ocr', {
method: 'POST',
headers: { 'Authorization': 'Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' },
body: form,
});
const { data } = await res.json();
console.log(data.text);import requests
with open('scan.png', 'rb') as f:
r = requests.post(
'https://whatapdf.com/api/v1/ocr',
headers={'Authorization': 'Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'},
files={'image': f},
data={'language': 'eng'},
)
print(r.json()['data']['text'])<?php
$ch = curl_init('https://whatapdf.com/api/v1/ocr');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'],
CURLOPT_POSTFIELDS => [
'image' => new CURLFile('scan.png', 'image/png'),
'language' => 'eng',
],
]);
$res = json_decode(curl_exec($ch), true);
echo $res['data']['text'];
curl_close($ch);