सामग्री पर जाएँ

डेवलपर्स के लिए Mosaqo API

उसी workspace पर एक REST API जिसे आप ऐप में इस्तेमाल करते हैं। नीचे दिया सब कुछ एक API key और किसी भी HTTP क्लाइंट से चलता है।

आप क्या कर सकते हैं

  • अपने रिकॉर्ड से QR कोड बनाएँ — एक-एक करके, या एक CSV से दस हज़ार।
  • छपे हुए कोड का गंतव्य बदलें, एक ही कॉल में, बिना कुछ दोबारा छापे।
  • तैयार कार्ड को PNG, SVG या PDF में डाउनलोड करें और किसी CRM रिकॉर्ड से जोड़ें।
  • स्कैन और एग्रीगेट एनालिटिक्स पढ़ें, आपके workspace के गोपनीयता नियमों के अनुसार फ़िल्टर किए हुए।
  • कोड बनने, प्रकाशित होने, बदलने या आर्काइव होने पर हस्ताक्षरित webhook पाएँ।

क्विकस्टार्ट

अपने workspace में Bulk & API में जाकर एक key बनाएँ, qr:write और qr:read स्कोप चुनें, और secret कॉपी कर लें — यह केवल एक बार दिखता है।

key जाँचें और देखें कि वह कौन-सा workspace खोलती है:

curl https://api.mosaqo.app/v1/public-api/me \
  -H "Authorization: Bearer $MOSAQO_KEY"

एक डायनामिक QR कोड बनाएँ:

curl -X POST https://api.mosaqo.app/v1/public-api/qr \
  -H "Authorization: Bearer $MOSAQO_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Autumn campaign",
    "mode": "dynamic",
    "contentType": "url",
    "content": { "targetUrl": "https://example.com/autumn" }
  }'

इसे प्रकाशित करें — इसी से रीडायरेक्ट काम करना शुरू करता है — और फिर छापने लायक इमेज लें:

curl -X POST https://api.mosaqo.app/v1/public-api/qr/$QR_ID/publish \
  -H "Authorization: Bearer $MOSAQO_KEY"

curl https://api.mosaqo.app/v1/public-api/qr/$QR_ID/image?format=png&size=2048 \
  -H "Authorization: Bearer $MOSAQO_KEY" -o campaign.png

महीनों बाद, जब कैंपेन बदले, उसी छपे हुए कोड को बिना दोबारा छापे नए गंतव्य पर भेजें:

curl -X POST https://api.mosaqo.app/v1/public-api/qr/$QR_ID/destination \
  -H "Authorization: Bearer $MOSAQO_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "url": "https://example.com/winter" }'

प्रमाणीकरण

अपना secret किसी भी तरीके से भेजें। पूरे v1 में दोनों समर्थित हैं।

Authorization: Bearer mosaqo_xxx
X-Mosaqo-API-Key: mosaqo_xxx

एक key ठीक एक ही workspace की होती है, इसलिए पाथ में workspace id की ज़रूरत नहीं: /v1/public-api/qr काफ़ी है। पुराना रूप /v1/public-api/workspaces/{workspaceId}/qr अब भी काम करता है।

स्कोपक्या अनुमति देता है
qr:readQR कोड, फ़ोल्डर और टेम्पलेट सूचीबद्ध करना और पढ़ना
qr:writeबनाना, अपडेट करना, दोबारा लक्षित करना, प्रकाशित करना, आर्काइव और डिलीट करना
exports:readरेंडर किए गए कार्ड डाउनलोड करना
analytics:readएग्रीगेट एनालिटिक्स और अलग-अलग स्कैन
bulk:writeबल्क जॉब बनाना और पढ़ना
webhooks:writewebhook सब्सक्रिप्शन प्रबंधित करना

Key को रद्द किया जा सकता है, समाप्ति तिथि दी जा सकती है, और IP allow-list तक सीमित किया जा सकता है। allow-list से अस्वीकृत key के बारे में साफ़ बता दिया जाता है, वह अमान्य दिखने के बजाय।

पेजिनेशन

सूचियाँ keyset पेजिनेशन इस्तेमाल करती हैं। pagination.nextCursor को बिना बदले वापस भेजें; सिंक के बीच में कुछ संपादित होने पर भी पंक्तियाँ न दोहराती हैं न गायब होती हैं — रातभर चलने वाले सिंक के लिए यही निर्णायक है।

curl "https://api.mosaqo.app/v1/public-api/qr?limit=50&cursor=$CURSOR" \
  -H "Authorization: Bearer $MOSAQO_KEY"

सब कुछ पढ़ने के बजाय सिर्फ़ बदलावों के लिए पोल करना हो, तो updatedSince=2026-08-05T00:00:00Z जोड़ें।

एरर

हर विफलता के साथ शाखा बनाने लायक स्थिर code, पढ़ने योग्य message, और सपोर्ट को बताने लायक requestId आता है।

{
  "error": "This API key does not have the qr:write scope.",
  "message": "This API key does not have the qr:write scope.",
  "code": "insufficient_scope",
  "details": { "required": "qr:write", "granted": ["qr:read"] },
  "requestId": "req-42"
}
स्टेटसकोडक्या करें
401invalid_api_keyKey गायब है, रद्द है या समाप्त हो चुकी है। उपयोगकर्ता से दोबारा कनेक्ट करने को कहें।
403insufficient_scope, ip_not_allowed, workspace_mismatch, quota_exceededKey मान्य है पर इसकी अनुमति नहीं है। दोबारा कनेक्ट करने से कुछ नहीं होगा।
404not_foundइस workspace में ऐसा कोई रिकॉर्ड नहीं है।
409idempotency_conflict, idempotency_in_progressएक ही key अलग इनपुट के साथ दोबारा इस्तेमाल हुई, या पहला प्रयास अब भी चल रहा है।
422validation_failed, invalid_cursor, approval_required, contrast_check_failedइनपुट ठीक करें। बिना बदले कभी दोबारा न भेजें।
429rate_limitedRetry-After में बताए सेकंड तक रुकें।

रेट लिमिट

हर रिस्पॉन्स आपका मौजूदा बजट बताता है, सिर्फ़ अस्वीकृत वाले नहीं:

X-RateLimit-Limit: 600
X-RateLimit-Remaining: 574
X-RateLimit-Reset: 1785942718

यह लिमिट दुरुपयोग रोकने का उपाय है, कोई प्लान नहीं: इससे न कोई कोटा जुड़ा है, न बिलिंग, न अपग्रेड का रास्ता।

इडेम्पोटेंसी

Idempotency-Key वैकल्पिक है। एक भेजें — कोई भी अद्वितीय स्ट्रिंग — और 24 घंटे के भीतर वही अनुरोध दोहराने पर दो बार काम होने के बजाय मूल रिस्पॉन्स दोबारा मिलता है। वही key अलग इनपुट के साथ इस्तेमाल करने पर 409 मिलता है। key के बिना अनुरोध सीधे चल जाता है, बिना किसी रीप्ले सुरक्षा के।

आगे

  • Webhooks — इवेंट सूची और डिलीवरी कैसे सत्यापित करें।
  • रेसिपी — Make, Zapier, n8n और CRM पैटर्न।
  • API रेफ़रेंस — हर endpoint, लाइव कंसोल के साथ।