API स्कैन

API स्कैन एक REST कॉल से PDF को असली जैसा स्कैन किया गया दस्तावेज़ बना देता है, जो स्वचालित प्रक्रियाओं और ऐप एकीकरण के लिए उपयुक्त है। कार्य बनाइए, PDF अपलोड कीजिए, फिर स्थिति पूछते रहिए या webhook की प्रतीक्षा कीजिए — बस तीन चरण, किसी भी ऐसे परिवेश या भाषा से जो HTTP अनुरोध भेज सकती है। रंग स्थान, रिज़ॉल्यूशन, घुमाव, धुँधलापन, नॉइज़, चमक, कंट्रास्ट और बॉर्डर सब आपके तय किए हुए होते हैं।

एक कॉल कैसे चलती है

  1. कार्य बनाइए

    POST /v1/scan-jobs

    अपना config और चाहें तो webhookUrl भेजिए; बदले में jobID और पूर्व-हस्ताक्षरित uploadURL मिलता है।

  2. PDF अपलोड कीजिए

    PUT {uploadURL}

    फ़ाइल को सीधे पिछले चरण के पूर्व-हस्ताक्षरित S3 पते पर PUT कीजिए — टोकन की ज़रूरत नहीं।

  3. स्कैन किया गया दस्तावेज़ लीजिए

    GET /v1/scan-jobs/{jobID}

    स्थिति पूछते रहिए या webhook की प्रतीक्षा कीजिए; कार्य completed होते ही downloadURL से डाउनलोड कर लीजिए।

यह कहाँ काम आता है

बैकएंड से थोक उत्पादन

सर्वर पर बने अनुबंध, चालान और रिपोर्ट सीधे स्कैन प्रभाव से गुज़र जाते हैं, किसी को वेब पेज पर वही काम हाथ से दोहराना नहीं पड़ता।

मौजूदा सिस्टम के भीतर

CRM, ERP या टिकट सिस्टम में «स्कैन किया गया दस्तावेज़ निर्यात करें» जैसी क्रिया जोड़िए और उसे API बुलाने दीजिए।

स्वचालन शृंखलाएँ

CI या n8n, Zapier जैसे मंच किसी घटना पर कार्य शुरू करते हैं, और पूरा होने पर webhook अगला चरण संभाल लेता है।

फ़ाइलों की बड़ी कतारें

कार्य अतुल्यकालिक हैं: बनाने के बाद हर कार्य अपने आप संसाधित होता है, और प्रगति status तथा createdAfter से देखी जा सकती है।

भाषाएँ और परिवेश

TypeScriptfetch / axios
Node.jsfetch / undici
Pythonrequests / httpx
Gonet/http
PHPcURL / Guzzle
Rubynet/http
JavaHttpClient
cURLकमांड लाइन / CI
औरकोई भी HTTP क्लाइंट

API सामान्य HTTP और JSON है, इसलिए अनुरोध भेज सकने वाली कोई भी भाषा या स्वचालन मंच इसे बुला सकता है।

कोड उदाहरण

API Bearer Token

टोकन आपके खाते से जुड़ा है और कभी भी दोबारा बनाया जा सकता है। API स्कैन के लिए Pro खाता चाहिए: वैध टोकन न हो तो API 401 देता है, और Pro भूमिका न हो तो 403।

आज़माइए

पैरामीटर बदलिए, अनुरोध की बॉडी साथ-साथ बदलती दिखेगी, फिर तीनों कॉल API पर चलाइए।

स्कैन पैरामीटर

आज़माइश आपके टोकन से API को बुलाती है और इसके लिए Pro खाता चाहिए; पैरामीटर और अनुरोध की बॉडी बेझिझक देखिए।

POST/v1/scan-jobs
{
  "config": {
    "rotate": 1,
    "rotate_var": 0.5,
    "colorspace": "gray",
    "blur": 0,
    "noise": 0,
    "border": false,
    "brightness": 1.3,
    "contrast": 1.3,
    "resolution": 150,
    "output_format": "image/jpeg"
  }
}

स्कैन कार्य जानकारी

उदाहरण
{
  "jobID": "3f9c1e64-0000-4000-8000-00000000a71b",
  "userID": "8f21c4b0-0000-4000-8000-000000004a17",
  "createdAt": 1724409600,
  "status": "completed",
  "inputUploadedAt": 1724409601,
  "completedAt": 1724409602,
  "numPages": 6,
  "downloadURL": "https://…/output/3f9c.pdf?X-Amz-…"
}

API संदर्भ

विधिपथविवरण
POST/v1/scan-jobsस्कैन कार्य बनाता है। config और ज़रूरत हो तो webhookUrl भेजिए; बदले में created स्थिति वाला कार्य ऑब्जेक्ट और पूर्व-हस्ताक्षरित uploadURL मिलता है।
PUT{uploadURL}पिछले चरण से मिला पूर्व-हस्ताक्षरित S3 पता, जो api.lookscanned.io पर नहीं हैस्रोत PDF को Content-Type: application/pdf और Content-Length के साथ अपलोड करता है। पते में हस्ताक्षर पहले से है, इसलिए Authorization हेडर मत जोड़िए।
GET/v1/scan-jobs/{jobID}एक कार्य पढ़ता है, स्थिति पूछने के लिए। created में uploadURL रहता है और completed में downloadURL।
GET/v1/scan-jobsआपके अपने कार्यों की सूची देता है, जिसे jobID, status या createdAfter से छाना जा सकता है।
स्थितिcreatedprocessingcompletedfailed
  • 401 वैध टोकन नहीं है
  • 403 खाता Pro नहीं है
  • 404 ऐसा कोई कार्य नहीं

अनुरोध की बॉडी

फ़ील्डप्रकारडिफ़ॉल्टविवरण
webhookUrlstring · —कार्य पूरा होने पर एक बार कॉल होता है, इसलिए स्थिति खुद पूछते रहने की ज़रूरत नहीं।
config.colorspace'gray' | 'sRGB' · graygrayआउटपुट छवि का रंग स्थान; gray यानी ब्लैक एंड व्हाइट स्कैन।
config.resolutionnumber · 7272आउटपुट छवि का रिज़ॉल्यूशन, DPI में।
config.rotatenumber · —पूरे दस्तावेज़ का घुमाव, डिग्री में।
config.rotate_varnumber · —हर पृष्ठ के यादृच्छिक घुमाव की सीमा, डिग्री में — टेढ़े रखे काग़ज़ जैसा प्रभाव।
config.blurnumber · 00धुँधलेपन की मात्रा।
config.noisenumber · 00नॉइज़ की मात्रा।
config.brightnessnumber · 11चमक; 1 पर कोई बदलाव नहीं।
config.contrastnumber · 11कंट्रास्ट; 1 पर कोई बदलाव नहीं।
config.borderboolean · falsefalseपृष्ठ पर स्कैन का बॉर्डर जोड़ना है या नहीं।
config.output_format'image/png' | 'image/jpeg' · image/jpegimage/jpegपृष्ठों को छवि में रेंडर करते समय इस्तेमाल होने वाला प्रारूप।

हर फ़ील्ड छोड़ी जा सकती है। «आज़माइए» के शुरुआती मान — रिज़ॉल्यूशन 150, घुमाव 1, चमक और कंट्रास्ट 1.3 — वेब ऐप का सुझाया हुआ संयोजन हैं, API के डिफ़ॉल्ट नहीं।

कार्य ऑब्जेक्ट में ध्यान देने योग्य फ़ील्ड

status
created / processing / completed / failed — यही तय करता है कि नीचे के दो पते आते हैं या नहीं।
uploadURL
सिर्फ़ created रहने तक। सीमित अवधि वाला पूर्व-हस्ताक्षरित अपलोड पता।
downloadURL
सिर्फ़ completed होने पर। सीमित अवधि वाला पूर्व-हस्ताक्षरित डाउनलोड पता।
inputUploadedAt / completedAt
स्रोत का अपलोड कब पूरा हुआ और कार्य कब पूरा हुआ; इनका अंतर प्रोसेसिंग का समय है।

अक्सर पूछे जाने वाले सवाल

क्या API स्कैन के लिए Pro चाहिए?

हाँ। वैध टोकन न होने पर API 401 देता है, और Pro भूमिका के बिना खाते को 403 मिलता है। अपग्रेड करके लॉग इन करते ही टोकन इसी पेज पर मिल जाता है।

कार्य पूरा होने का पता कैसे चलेगा?

दो तरीके हैं: GET /v1/scan-jobs/{jobID} से स्थिति पूछते रहिए, या कार्य बनाते समय webhookUrl दीजिए और सेवा को पूरा होने पर एक बार सूचित करने दीजिए।

क्या नतीजा वेब पेज पर किए स्कैन जैसा ही होता है?

हाँ। दोनों एक ही स्कैन प्रभाव के कार्यान्वयन का उपयोग करते हैं, और config में रंग स्थान, रिज़ॉल्यूशन, घुमाव, धुँधलापन, नॉइज़, चमक, कंट्रास्ट और बॉर्डर वेब पेज के इन्हीं नामों वाले विकल्प हैं: समान पैरामीटर पर समान नतीजा। फ़र्क़ सिर्फ़ प्रोसेसिंग की जगह का है — पेज पर स्थानीय, API में दूरस्थ सेवा।

क्या अपलोड और डाउनलोड पते सहेजकर दोबारा इस्तेमाल कर सकते हैं?

बेहतर होगा कि न करें। uploadURL और downloadURL दोनों सीमित अवधि वाले पूर्व-हस्ताक्षरित पते हैं; अवधि बीतने पर नए पते के लिए कार्य फिर से पढ़ना पड़ता है।

एक कार्य में कितना समय लगता है?

यह पृष्ठों की संख्या और रिज़ॉल्यूशन पर निर्भर करता है। कुछ पृष्ठों के दस्तावेज़ आम तौर पर कुछ ही सेकंड में पूरे हो जाते हैं; रिज़ॉल्यूशन जितना ऊँचा और पृष्ठ जितने ज़्यादा, उतना समय लगता है। inputUploadedAt और completedAt का अंतर वास्तविक समय बताता है।

कार्य विफल हो जाए तो क्या करें?

स्थिति failed हो जाती है। आम कारण हैं: फ़ाइल का वैध PDF न होना, एन्क्रिप्शन की पाबंदी, या अपलोड बीच में टूट जाना। फ़ाइल खुल रही है यह जाँचकर नया कार्य बना लीजिए।

क्या पुराने कार्य देखे जा सकते हैं?

जी हाँ। GET /v1/scan-jobs आपके अपने कार्यों की सूची देता है और jobID, status तथा createdAfter से छाना जा सकता है, जो मिलान या दोबारा डाउनलोड के लिए काफ़ी है।