API दस्तावेज़ीकरण
Vectorgram को अपनी ऐप्लिकेशन में इंटीग्रेट करें. सबमिट करने के लिए एक एंडपॉइंट, पोल करने के लिए एक, डाउनलोड के लिए एक — जॉब डिज़ाइन के हिसाब से एसिंक्रोनस होते हैं. बेस URL https://api.vectorgram.ai है, प्रमाणीकरण Authorization: Bearer <api_key> है. कुंजियाँ ऐसी दिखती हैं vectorgram_sk_live_… — प्रीफ़िक्स जान-बूझकर पूरा लिखा होता है, ताकि किसी पुरानी .env में मिली कुंजी को आज़माए बिना पहचाना जा सके.
नया खाता 30 दिनों तक 25 मुफ़्त API कन्वर्ज़न पाता है — पूरी क्वालिटी, कोई वॉटरमार्क नहीं. उसके बाद API को ऐसा प्लान चाहिए जिसमें यह शामिल हो (Pro और उससे बड़े), और कॉल उस प्लान के महीने के कोटा में से चलती हैं. ओवरेज नहीं है: कोटा पार होने पर कॉल का जवाब आता है 402 रिसेट की तारीख़ के साथ. GET /v1/account दोनों कोटा और हर एक में से बचा हुआ बताता है.
क्विक स्टार्ट
1 — अपनी API कुंजी प्राप्त करें
लोड हो रहा है…
2 — एक इमेज सबमिट करें
curl -X POST https://api.vectorgram.ai/v1/vectorize \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Idempotency-Key: 8f1b0c2e-0a1d-4f77-9c3a-2b6e5d4c1a90" \
-F "file=@image.png" \
-F "image_type=clipart" \
-F "detail=high" \
-F "gradients=smooth" \
-F "smoothing=strong" \
-F "retention=24h"रिस्पॉन्स 202 Accepted है, साथ में क्यू में पड़ा जॉब — कन्वर्ज़न अभी हुआ नहीं है. वही रिक्वेस्ट एक ही Idempotency-Key के साथ दो बार भेजने पर दूसरा जॉब बनाने के बजाय पहला जॉब ही वापस मिलता है; पहले से इस्तेमाल हो चुकी कुंजी के साथ फ़ाइल या सेटिंग्स बदलने पर मिलता है 409.
3 — पोल करें, या वेबहूक लें
GET /v1/jobs/job_abc123
{
"id": "job_abc123",
"status": "queued",
"progress": 0,
"queue_position": 3,
"mode": "logo",
"retention": "24h",
"megapixels": 2.1,
"created_at": "2026-08-03T10:30:00Z"
}status से गुज़रता हैqueued → processing → completed | failed | canceled | expired. क्यू में रहते हुए आपको असली queue_position मिलता है, कोई गढ़ा-पिरोया काउंटडाउन नहीं; progress प्रोसेसिंग के दौरान साइज़ के अनुमान से निकाला जाता है और फ़ाइल बनने तक 95% पर रुका रहता है. बड़ी इमेज में मिनट लग सकते हैं — समझदारी भरे अंतराल पर पोल करें या, इससे बेहतर, एक वेबहूक रजिस्टर करें.
4 — डाउनलोड करें
{
"id": "job_abc123",
"status": "completed",
"progress": 100,
"download_url": "https://api.vectorgram.ai/v1/jobs/job_abc123/download",
"completed_at": "2026-08-03T10:30:04Z",
"expires_at": "2026-08-04T10:30:04Z"
}download_url तभी दिखता है जब रिज़ल्ट मौजूद हो, उसी बेयर टोकन की माँग करता है और फ़ाइल को अटैचमेंट की तरह स्ट्रीम करता है. retention=none के साथ फ़ाइल सर्व होते ही डिलीट हो जाती है — उसे एक ही बार डाउनलोड करें.
कन्वर्ज़न पैरामीटर
सभी फ़ील्ड POST /v1/vectorize पर multipart form data हैं. चारों चिह्नित मैनुअल ट्रेस कंट्रोल हैं: Pro, Studio, Agency और Enterprise पर उपलब्ध. Free और Lite पर इन्हें रिफ़्यूज़ करने के बजाय स्वीकार करके डिफ़ॉल्ट पर बदल दिया जाता है, ताकि जो क्लाइंट हमेशा इन्हें भेजता है वह भी कन्वर्ट होता रहे — उसे बस ऑटोमैटिक रिज़ल्ट मिलता है.
ज़रूरी. कन्वर्ट करने के लिए इमेज. फ़ाइल के नाम से नहीं, उसके बाइट्स से पहचानी जाती है.
यह इमेज किस तरह की है. डिफ़ॉल्ट auto, जिसमें वेक्टराइज़ेशन इंजन ख़ुद इसे पहचान लेता है.
वैकल्पिक, और svg ही एकमात्र वैल्यू है. इंजन SVG ही लिखता है और कुछ भी उसे किसी और चीज़ में कन्वर्ट नहीं करता — EPS, PNG, PDF, DXF और AI को 400 unsupported_output_format के साथ रिफ़्यूज़ कर दिया जाता है, क्यू में डालकर फेल होने के लिए नहीं भेजा जाता.
रिज़ल्ट कितने समय तक रखा जाता है. डिफ़ॉल्ट 24h; none पहले डाउनलोड के बाद उसे डिलीट कर देता है. रिफ़्यूज़ करने के बजाय आपके प्लान की अधिकतम सीमा तक टिका दिया जाता है — Free माँगने पर भी रिज़ल्ट को 10 दिन नहीं रख सकता.
आपकी अपनी ग्रुपिंग कुंजी — जॉब पर वापस लौटाई जाती है और फ़िल्टर की तरह इस्तेमाल हो सकती है. हर इमेज के लिए एक रिक्वेस्ट भेजें. बैच कन्वर्ज़न Pro से शुरू होता है (30 फ़ाइलें, Studio पर 50, Agency पर 100); उससे नीचे ग्रुप में एक ही फ़ाइल रहती है और दूसरी पर 400 batch_limit_exceeded आता है.
डैशबोर्ड पर वह फ़ोल्डर जिसमें बैच की फ़ाइलें रहेंगी, उसका नाम. वैकल्पिक है और batch_id ज़रूरी है (वरना 400 invalid_folder_name); batch_id जैसी सीमाएँ — 128 अक्षर, कोई कंट्रोल कैरेक्टर नहीं. फ़ोल्डर का नाम पहली स्वीकार हुई फ़ाइल रखती है; बैच की बाद की फ़ाइलें उसका नाम नहीं बदलतीं. न देने पर फ़ोल्डर पर उसकी बनने की तारीख़ लग जाती है.
रीजन मर्जिंग के बाद इमेज का कितना हिस्सा बचता है. डिफ़ॉल्ट high — 1.3.0 के बाद से इंजन का सबसे ढीला स्टेप. 1–100 की स्लाइडर वैल्यू स्वीकार होती है और बकेट कर दी जाती है.
ग्रेडिएंट हैंडलिंग. डिफ़ॉल्ट smooth; stepped और auto इंजन के फ़्लैट फ़िल वैसे ही छोड़ देते हैं.
कोनों का राउंडिंग. डिफ़ॉल्ट strong — असली कोने तीखे रहते हैं; वापस सिर्फ़ वही आता है जो वेक्टराइज़ेशन इंजन ने ग़लती से राउंड कर दिया हो. 0–100 की स्लाइडर वैल्यू स्वीकार होती है और बकेट कर दी जाती है.
इंजन क्या ड्रॉ करता है. डिफ़ॉल्ट fill — हर शेप एक भरा हुआ आउटलाइन. centerline हर लाइन के बीचोंबीच एक खुला स्ट्रोक खींचता है (fill="none", स्ट्रोक के रंग और चौड़ाई के साथ), जिसे प्लॉटर, लेज़र इनग्रेवर, CNC राउटर और विनाइल कटर फ़ॉलो करते हैं: लाइन के दो ओर आउटलाइन बनाने की जगह हर लाइन पर एक पास. लाइन होने से बहुत मोटे हिस्से भरे हुए शेप ही रहते हैं. detail, gradients और smoothing लागू नहीं होते, इग्नोर कर दिए जाते हैं. अनजान वैल्यू पर 400 आता है.
सीम क्लोज़िंग, हर प्लान पर. डिफ़ॉल्ट true — हर फ़िल अपने पड़ोस के नीचे 0.75 px तक फैल जाता है, ताकि दो रंगों के बीच कोई पतली हल्की लाइन न दिखे. false सटीक विभाजन देता है, जहाँ शेप बिना ओवरलैप किनारे से किनारे मिलते हैं (ज्योमेट्री एडिट करने के लिए). दोनों हालत में कोई शेप नहीं हिलता. centerline के साथ इग्नोर होता है.
एंडपॉइंट
जनरेट हुआ रेफ़रेंस — हर फ़ील्ड, हर रिस्पॉन्स शेप — वही Swagger UI है जिसे सर्विस इस पते पर सर्व करती है /docs/swagger, और OpenAPI डॉक्युमेंट इस पते पर है /v3/api-docs.
वेबहूक
चूँकि जॉब एसिंक्रोनस चलते हैं — बड़ी फ़ाइलों पर मिनट लगते हैं — पोलिंग की जगह वेबहूक सब्सक्राइब करें. एंडपॉइंट रजिस्टर करें POST /v1/webhooks; साइनिंग सीक्रेट सिर्फ़ एक बार, बनाते वक़्त लौटाया जाता है, दोबारा कभी नहीं.
POST https://your-app.example/hooks/vectorgram
X-Vectorgram-Event: processing.completed
X-Vectorgram-Signature: sha256=<hmac of the raw body, hex>
{
"id": "evt_9f2c…",
"event": "processing.completed",
"created_at": "2026-08-03T10:30:04Z",
"data": { "job_id": "job_abc123", "status": "completed" }
}सिग्नेचर वेरिफ़ाई करें: रॉ रिक्वेस्ट बॉडी का HMAC-SHA256 अपने एंडपॉइंट सीक्रेट के साथ निकालें और तुलना कॉन्स्टेंट टाइम में करें — मिसमैच को बिना प्रमाणीकरण वाली रिक्वेस्ट मानें. डिलीवरी कम से कम एक बार होती है: नॉन-2xx रिस्पॉन्स पर एक्सपोनेंशियल बैकऑफ़ के साथ तीन बार फिर कोशिश होती है, इसलिए अपने हैंडलर को id पर इडेंपोटेंट बनाएँ. एंडपॉइंट का पता पब्लिक होना चाहिए; इसे डिलीवरी के वक़्त दोबारा जाँचा जाता है, सिर्फ़ रजिस्ट्रेशन पर नहीं.
एरर
फेलियर JSON में होते हैं: { "error": { "code": "…", "message": "…", "details": { … } } }. देखें code, मैसेज को नहीं — मैसेज बदले जाते रहते हैं.