WisyLink का API आपको कोड से होस्टेड वेबसाइटें बनाने और बदलने देता है। रेफ़रेंस फ़ाइलें अपलोड करें, POST /chat पर आम भाषा में मैसेज भेजें, और एजेंट साइट बनाकर उसे wisylink.com पर उसके अपने पते पर होस्ट कर देता है। बदलाव के लिए उसी लिंक id के साथ अगला मैसेज भेजें। API का इस्तेमाल आपके प्लान की 5-घंटे और साप्ताहिक सीमा में ही गिना जाता है।
- कुछ REST एंडपॉइंट पूरा सफ़र संभालते हैं: फ़ाइल अपलोड,
POST /chatसे साइट बनाना या आगे बढ़ाना, स्टेटस पोल करना, साइटों की सूची देखना और उन्हें हटाना। POST /chatउसी Wisy से बात करता है जो ऐप में है, इसलिए जवाब में बिल्ड की जगह एक सवाल भी आ सकता है। पोलिंग शुरू करने से पहलेstatusदेखें।- API कुंजियाँ सिर्फ़ वेब पर बनती हैं, और हर कुंजी पर प्रतिदिन, प्रति हफ़्ते या प्रति महीने $10 तक की अपनी खर्च सीमा लग सकती है, जो प्लान की सीमाओं के ऊपर एक अतिरिक्त रोक है।
- npm पैकेज
@wisylink/cliइन्हीं एंडपॉइंट को कमांड-लाइन टूल और Node क्लाइंट में लपेटता है। - कस्टम डोमेन और सेवाओं की कुंजियाँ (Stripe, ईमेल) वेब या मोबाइल ऐप में सेट होती हैं; पब्लिक API इन्हें नहीं संभालता।
क्या-क्या ऑटोमेट कर सकते हैं
API असल में चैट ही है, बस चैट विंडो के बिना। हर POST /chat Wisy के लिए एक मैसेज है; जब अनुरोध साफ़ होता है, तो एक AI बिल्ड एजेंट सर्वर-रेंडर्ड वेब ऐप लिखता है और उसे https://<id>.wisylink.com पर डिप्लॉय करता है, ब्रीफ़ में मांगा गया हो तो सेव होने वाले डेटा, अकाउंट या फ़ाइल अपलोड के साथ। टेम्पलेट, थीम या पेज टाइप जैसे कोई पैरामीटर नहीं हैं। साइट के बारे में सब कुछ, सेक्शन और टेक्स्ट से लेकर फ़ीचर और स्टाइल तक, मैसेज में ही जाता है, ठीक वैसे जैसे कोई इंसान उसे बताता। (इसके पीछे की बुनियादी बातें AI ऐप बिल्डर क्या है में हैं।)
बेस URL https://api.wisylink.com है। ऑथेंटिकेशन के लिए x-api-key: <key> हेडर या Authorization: Bearer <key> भेजें। JSON एंडपॉइंट Content-Type: application/json लेते हैं, और टाइमस्टैम्प epoch मिलीसेकंड में होते हैं।
| एंडपॉइंट | मेथड | काम | मुख्य फ़ील्ड |
|---|---|---|---|
/files | POST | फ़ाइल अपलोड शुरू करना | भेजें name, मिलेगा id |
/files/chunks | POST | फ़ाइल के बाइट भेजना, हर रिक्वेस्ट में ज़्यादा से ज़्यादा 4 MB | id, और आखिरी हिस्से पर last=true; बॉडी में सीधा बाइनरी डेटा |
/files/:id | GET | फ़ाइल की जानकारी पढ़ना | content_type, name, size |
/files/:id | DELETE | फ़ाइल हटाना | हर लिंक के file_ids से भी हट जाती है |
/chat | POST | नई साइट बनाना (id के बिना) या मौजूदा साइट आगे बढ़ाना (id के साथ) | message, 10 तक file_ids; लौटाता है id, url, status, answer |
/links | GET | अपनी साइटों की सूची, सबसे नई पहले | page, limit (1 से 100); items, total_pages, has_next |
/links/:id | GET | एक साइट की जानकारी | status, url, file_ids |
/links/:id | DELETE | साइट और उसकी रेफ़रेंस फ़ाइलें हटाना | लौटाता है {"ok": true} |
पब्लिक API क्या नहीं करता: पेमेंट या ईमेल के लिए साइट को चाहिए कुंजियाँ सेट करना (ये मालिक इंटीग्रेशन में खुद पेस्ट करता है), कस्टम डोमेन जोड़ना, साइट का सेव किया डेटा पढ़ना या लिखना, या सोर्स कोड एक्सपोर्ट करना।
API कुंजी बनाएं और हर कुंजी की खर्च सीमा सेट करें
- wisylink.com पर साइन इन करें। कुंजियाँ सिर्फ़ वेब पर बनती हैं, मोबाइल ऐप में नहीं।
- अकाउंट सेटिंग्स में एपीआई कुंजियाँ खोलें और API कुंजी बनाएं चुनें।
- कुंजी का नाम उस जगह पर रखें जहां वह इस्तेमाल होगी, जैसे “acme-landing-pages-ci”, ताकि रद्द करते समय पता रहे कि क्या रुकेगा।
- विंडो और सीमा तय करें। दैनिक, साप्ताहिक या मासिक चुनें और USD में खर्च सीमा डालें, हर विंडो में ज़्यादा से ज़्यादा $10। विंडो UTC दिन, सोमवार से शुरू होने वाले हफ़्ते या महीने के हिसाब से चलती हैं।
- कुंजी तुरंत कॉपी करें। वह सिर्फ़ एक बार दिखती है। उसे अपने सीक्रेट मैनेजर या CI सीक्रेट में रखें, जैसे
WISYLINK_API_KEYनाम से।
यह सीमा एक सुरक्षा रोक है, आपका प्लान नहीं। हर रिक्वेस्ट आपके अकाउंट की चलती 5-घंटे और साप्ताहिक विंडो में से भी घटती है, वही विंडो जो वेब और मोबाइल चैट इस्तेमाल करते हैं। माप इस बात से होता है कि रिक्वेस्ट से AI को कितना काम करना पड़ा, आपकी रेफ़रेंस फ़ाइलें पढ़ना भी उसमें शामिल है। सीमा हर रिक्वेस्ट से पहले जांची जाती है और खर्च उसके बाद दर्ज होता है, इसलिए किसी विंडो की आखिरी रिक्वेस्ट सीमा से थोड़ा ऊपर जा सकती है। कुंजी रद्द करते ही वह हट जाती है, और उसे अब भी इस्तेमाल करने वाली हर चीज़ को 401 मिलता है।
क्या फ़्री प्लान पर API चलता है? हां। Community पर ऐप वाले ही नियम लागू होते हैं: हर 5 घंटे की विंडो में एक बिल्ड, और साइटें 30 दिन लाइव रहती हैं, फिर एक हफ़्ता हटाए जाने के लिए चिह्नित रहती हैं। इंटीग्रेशन का प्रोटोटाइप बनाने के लिए इतना काफ़ी है; क्लाइंट के काम या बैच के लिए पेड प्लान ज़्यादा सीमा, एक साथ कई बिल्ड और सब्सक्रिप्शन रहने तक लाइव रहने वाले लिंक देता है।
रेफ़रेंस फ़ाइलें अपलोड करें (चंक में अपलोड)
रेफ़रेंस फ़ाइल वह सब है जिसे एजेंट को पढ़ना है या साइट पर लगाना है: ब्रांड गाइड, लोगो, प्रोडक्ट फ़ोटो, रेट लिस्ट। JPEG, PNG, WebP, GIF, HEIC, SVG, MP3, MP4, PDF, XLSX, DOCX, CSV, TXT, JSON और HTML फ़ॉर्मेट चलते हैं, हर फ़ाइल 25 MB तक। असली टाइप फ़ाइल के बाइट से पहचाना जाता है, और खाली फ़ाइलें रिजेक्ट होती हैं।
अपलोड में दो कॉल लगती हैं। पहले फ़ाइल बनाएं और लौटी हुई id संभाल लें:
curl -s -X POST https://api.wisylink.com/files -H "x-api-key: $WISYLINK_API_KEY" -H "Content-Type: application/json" -d '{"name":"brand-guide.pdf"}'
फिर बाइट भेजें। 4 MB या उससे छोटी फ़ाइल एक ही रिक्वेस्ट में last=true के साथ जाती है:
curl -s -X POST "https://api.wisylink.com/files/chunks?id=$FILE_ID&last=true" -H "x-api-key: $WISYLINK_API_KEY" -H "Content-Type: application/octet-stream" --data-binary @brand-guide.pdf
बड़ी फ़ाइलों को टुकड़ों में बांटें (split -b 4m brand-guide.pdf part_), टुकड़े क्रम से उसी id पर भेजें, और last=true सिर्फ़ आखिरी टुकड़े पर लगाएं; वही कॉल फ़ाइल को पूरा करके प्रोसेस करती है। अपलोड 15 मिनट के अंदर पूरा होना चाहिए, वरना सेशन खत्म हो जाता है। Node में, नीचे बताया गया क्लाइंट टुकड़े करने का काम खुद कर देता है।
POST /chat से साइट बनाएं और लाइव URL का इंतज़ार करें
ब्रीफ़ भेजें
नई साइट के लिए id न भेजें। मैसेज 5,000 अक्षरों तक हो सकता है, जिसमें ढंग का ब्रीफ़ आ जाता है: मकसद, ऑडियंस, सेक्शन, असली टेक्स्ट, फ़ीचर, स्टाइल और भाषा। आखिर में “जो मैंने नहीं बताया, उसके लिए समझदारी भरे डिफ़ॉल्ट चुनें” लिखने से पहली ही कॉल पर बिल्ड शुरू होने की संभावना बढ़ती है। ब्रीफ़ हिंदी में भी लिखा जा सकता है, क्योंकि Wisy आपके मैसेज की भाषा में जवाब देता है। FILE_ID की जगह अपने अपलोड की id डालें।
curl -s -X POST https://api.wisylink.com/chat -H "x-api-key: $WISYLINK_API_KEY" -H "Content-Type: application/json" -d '{"message":"बेंगलुरु के स्पेशलिटी कॉफ़ी रोस्टर Ember के लिए एक पेज की लैंडिंग साइट बनाएं। सेक्शन: हीरो, कीमतों के साथ तीन सिंगल-ओरिजिन कॉफ़ी, होलसेल पूछताछ फ़ॉर्म जो एडमिन एरिया में सेव हो, खुलने का समय, मैप लिंक। रंग और फ़ॉन्ट के लिए अटैच की गई ब्रांड गाइड इस्तेमाल करें। जो मैंने नहीं बताया, उसके लिए समझदारी भरे डिफ़ॉल्ट चुनें।","file_ids":["FILE_ID"]}'
यही कॉल Node में fetch से:
const res = await fetch("https://api.wisylink.com/chat", { method: "POST", headers: { "x-api-key": process.env.WISYLINK_API_KEY, "Content-Type": "application/json" }, body: JSON.stringify({ message: brief, file_ids: [fileId] }) }); let link = await res.json();
नई साइट पर जवाब 201 होता है, जिसमें id, url, status, answer, created_at और updated_at आते हैं। id सेव कर लें: बाद में साइट बदलने, पढ़ने या हटाने का यही तरीका है। इसे एक अपारदर्शी स्ट्रिंग की तरह रखें, इसके फ़ॉर्मेट की जांच न करें।
पोल करने से पहले स्टेटस पढ़ें
POST /chat के जवाब का status बताता है कि बिल्ड सच में शुरू हुआ या नहीं:
buildingयाqueued- बिल्ड चल रहा है या खाली स्लॉट का इंतज़ार कर रहा है (
queuedअभी रेफ़रेंस की सूची में नहीं है, पर जवाब में दिख सकता है)। पोलिंग शुरू करें। नई साइट पर पहला बिल्ड पूरा होने तकurlपर “बन रहा है” वाला पेज दिखता है। - नई साइट पर
idle - कोई बिल्ड शुरू नहीं हुआ। Wisy ने जवाब दिया है, और
answerमें आमतौर पर एक छोटा सवाल होता है, जैसे कौन-सा पेमेंट प्रोवाइडर इस्तेमाल करना है। उसीidके साथ एक औरPOST /chatभेजकर जवाब दें। - फ़ॉलो-अप के तुरंत बाद
completedयाaborted - मौजूदा साइट पर स्टेटस पिछले बिल्ड का नतीजा दिखाता है। अगर वह
buildingमें नहीं बदला, तो आपके मैसेज का जवाब आया है, बिल्ड नहीं;answerपढ़ें।
बिल्ड पूरा होने तक पोल करें
वेबहुक नहीं हैं, इसलिए GET /links/:id को पोल करें। बिल्ड सेकंडों में नहीं, मिनटों में चलते हैं, इसलिए हर 15 से 30 सेकंड काफ़ी है। completed, aborted या idle के अलावा हर स्टेटस को “अभी चल रहा है” मानें; इससे कोई नया इन-प्रोग्रेस स्टेटस आने पर भी आपका लूप सुरक्षित रहता है:
const sleep = (ms) => new Promise((r) => setTimeout(r, ms)); while (!["completed", "aborted", "idle"].includes(link.status)) { await sleep(20000); link = await (await fetch(`https://api.wisylink.com/links/${link.id}`, { headers: { "x-api-key": process.env.WISYLINK_API_KEY } })).json(); }
जब status completed हो जाए, तो url आपकी लाइव साइट है। aborted का मतलब है कि बिल्ड पूरा होने से पहले रुक गया; जो साइट पहले से लाइव थी, उसका पिछला वर्ज़न बना रहता है, और नया मैसेज दोबारा कोशिश करता है। अगर बाद में साइट पर कस्टम डोमेन लगे, तो url वही डोमेन लौटाता है। बिल्ड की पूरी रिपोर्ट, जिसमें यह नोट भी होता है कि साइट Stripe या ईमेल कुंजियों का इंतज़ार कर रही है, वेब ऐप में उस लिंक की चैट में मिलती है।
लिंक आगे बढ़ाएं, सूची देखें और हटाएं
साइट बदलने के लिए सिर्फ़ नया निर्देश भेजें और LINK_ID की जगह उसकी id डालें; बातचीत का इतिहास सर्वर रखता है, और आगे बढ़ाई गई साइट 200 लौटाती है:
curl -s -X POST https://api.wisylink.com/chat -H "x-api-key: $WISYLINK_API_KEY" -H "Content-Type: application/json" -d '{"id":"LINK_ID","message":"दूसरी ब्रांच जोड़ें: 100 फ़ीट रोड, इंदिरानगर, रोज़ सुबह 7 से दोपहर 3 बजे तक खुली।"}'
फिर उसी तरह पोल करें। हर बदलाव एक नया बिल्ड है; फ़ेल हुआ बिल्ड आखिरी सही वर्ज़न को लाइव रहने देता है, जबकि सफल बिल्ड पूरा होते ही लाइव हो जाता है, इसलिए हर बदलाव के बाद अपनी जांच चलाएं। अगला बदलाव भेजने से पहले चल रहे बिल्ड के पूरा होने का इंतज़ार करें, जब तक कि नया मैसेज उसी चल रहे बिल्ड को सुधारने के लिए न हो।
साइटों की सूची के लिए GET /links?page=1&limit=100 से पेज-दर-पेज तब तक आगे बढ़ें, जब तक has_next false न हो जाए। किसी साइट को हटाने के लिए DELETE /links/:id साइट और उससे जुड़ी रेफ़रेंस फ़ाइलें मिटा देता है। उस पर लगा कस्टम डोमेन आपके अकाउंट में बना रहता है, किसी दूसरी साइट के लिए तैयार।
CLI और Node क्लाइंट
@wisylink/cli पैकेज (MIT लाइसेंस, Node 18.17 या नया) ऊपर के एंडपॉइंट को एक-एक कमांड से जोड़ता है, इसलिए शेल या CI जॉब से WisyLink को स्क्रिप्ट करने का यह सबसे तेज़ तरीका है:
npm i -g @wisylink/cli, फिरexport WISYLINK_API_KEY=..., या हर कमांड के साथ--api-keyदें।wisylink files upload ./brand-guide.pdfअपने-आप 4 MB के टुकड़ों में अपलोड करता है।wisylink chat --message "Ember Coffee के लिए लैंडिंग पेज बनाएं।" --file-id FILE_IDएक साइट बनाता है।wisylink links list --page 1 --limit 50आपकी साइटों की सूची दिखाता है।
कमांड JSON प्रिंट करती हैं, इसलिए jq से id या url निकाला जा सकता है। --timeout 1,000 से 120,000 मिलीसेकंड तक लेता है; chat के लिए इसे बढ़ाएं, क्योंकि वह Wisy के जवाब का इंतज़ार करता है।
यही पैकेज एक Node क्लाइंट भी देता है: import { CreateWisyLinkClient } from "@wisylink/cli"; const client = CreateWisyLinkClient({ apiKey: process.env.WISYLINK_API_KEY }); const file = await client.uploadFile("./brand-guide.pdf"); const link = await client.chat({ message: brief, fileIds: [file.id] });
npm रिलीज़ 0.2.1 के हिसाब से वर्ज़न से जुड़ी दो बातें। पहली, लिंक id लेने वाली कमांड और क्लाइंट मेथड (chat --link-id, links get, links delete, और Node में linkId, getLink, deleteLink) लिंक id को पुराने फ़ॉर्मेट से जांचते हैं और मौजूदा id रिजेक्ट कर देते हैं, इसलिए साइट आगे बढ़ाने, पढ़ने और हटाने के लिए ऊपर दिखाए HTTP कॉल इस्तेमाल करें। दूसरी, CLI डॉक्यूमेंटेशन (अंग्रेज़ी में) पहले से एक नई रिलीज़ बताता है, जिसमें ब्राउज़र से लॉगिन (wisylink login), बिल्ड की लाइव प्रोग्रेस वाली इंटरैक्टिव चैट और --json फ़्लैग है; आपके पास कौन-सा वर्ज़न है, यह wisylink --version से देखें।
सीमाएं, एरर और अच्छी आदतें
एरर JSON में error कोड के साथ आते हैं। इन्हें अलग से संभालना चाहिए:
429 limit_reached- आपके प्लान की 5-घंटे या साप्ताहिक विंडो खत्म हो गई है (
reasonहोगा5h_limitयाweekly_limit)। लूप में बार-बार कोशिश करने की जगह अगली कोशिशreset_at(epoch मिलीसेकंड) के लिए शेड्यूल करें। 429 credit_limit_exceeded- इस कुंजी की अपनी खर्च सीमा पूरी हो गई। यह किसी भी एंडपॉइंट पर आ सकता है;
resets_atतक रुकें या वेब पर सीमा बढ़ाएं ($10 तक)। 429 build_concurrency_limit- आपके प्लान के हिसाब से बहुत सारे बिल्ड एक साथ चल रहे हैं। किसी एक के पूरा होने का इंतज़ार करें, फिर अगला भेजें।
429 rate_limited- कम समय में बहुत ज़्यादा रिक्वेस्ट। थोड़ा रुककर दोबारा कोशिश करें।
400 bad_request- गलत JSON, खाली मैसेज या 5,000 अक्षरों से लंबा मैसेज, या ऐसी फ़ाइल id जो मौजूद नहीं (ये
missing_file_idsमें दिखती हैं)। ध्यान दें कि सिर्फ़ पहली 10file_idsइस्तेमाल होती हैं; बाकी बिना किसी एरर के छोड़ दी जाती हैं। 401,404,500 chat_unavailable- कुंजी नहीं भेजी गई या रद्द हो चुकी है; लिंक या फ़ाइल आपकी नहीं है; Wisy थोड़ी देर के लिए उपलब्ध नहीं है, जिस पर कुछ देर रुककर एक बार दोबारा कोशिश करना ठीक है।
ये आदतें पैसा और उलझन दोनों बचाती हैं:
- कुंजियाँ सर्वर पर रखें। कुंजी कभी ब्राउज़र या ऐप के कोड में न डालें। हर क्लाइंट या पाइपलाइन के लिए अलग कुंजी रखें, ताकि हर एक की अपनी सीमा हो और उसे अकेले रद्द किया जा सके।
POST /chatको आंख मूंदकर दोबारा न भेजें। यह idempotent नहीं है, यानी इसे दोहराना सुरक्षित नहीं: जो रिक्वेस्ट आपकी तरफ़ टाइमआउट हुई, उसने शायद फिर भी साइट बना दी हो या बिल्ड शुरू कर दिया हो। दोबारा भेजने से पहलेGET /links(सबसे नई पहले) देखें, और कॉल को एक मिनट या उससे ज़्यादा का क्लाइंट टाइमआउट दें।- बैच जॉब को कतार में चलाएं। जितने बिल्ड आपका प्लान एक साथ चलाने देता है, उतने चलाएं, और
build_concurrency_limitको इंतज़ार का संकेत मानें। - भेजने से पहले जांचें। AI आउटपुट में गलतियां हो सकती हैं। किसी क्लाइंट या आम लोगों के देखने से पहले हर साइट खोलें, उसके फ़ॉर्म टेस्ट करें और टेक्स्ट पढ़ें; WisyLink की शर्तों के मुताबिक जांचना और टेस्ट करना आपकी ज़िम्मेदारी है।
इस्तेमाल: एजेंसी पेज, इवेंट माइक्रोसाइट, इंटरनल टूल
एजेंसी के लैंडिंग पेज। एक ब्रीफ़ टेम्पलेट रखें जिसमें क्लाइंट का नाम, ऑफ़र, सेक्शन और टोन की खाली जगहें हों, उसे अपने CRM से भरें, और क्लाइंट का लोगो और ब्रांड गाइड फ़ाइल के रूप में अटैच करें। हर कैंपेन अपनी अलग साइट बनता है, क्लाइंट का फ़ीडबैक फ़ॉलो-अप मैसेज बनता है, और हर क्लाइंट की अलग कुंजी से खर्च अलग रहता है। पेज मंज़ूर होने के बाद डोमेन सेक्शन में क्लाइंट का डोमेन जोड़ें (हर प्लान पर संभव)। पेज का एक पूरा उदाहरण AI से वेटलिस्ट लैंडिंग पेज बनाने की गाइड में है।
हर इवेंट की अलग माइक्रोसाइट। स्प्रेडशीट में हर इवेंट की एक पंक्ति (नाम, तारीख, जगह, क्षमता) से हर इवेंट की एक RSVP साइट बनती है, जिसे एक स्क्रिप्ट बनाती है और हर लौटी id उसकी पंक्ति के आगे सेव करती है। हर ब्रीफ़ में क्या लिखें, यह AI से इवेंट RSVP पेज बनाने की गाइड बताती है। इवेंट के बाद साइट हटा दें, या पेड प्लान पर उसे आर्काइव के रूप में रखें।
इंटरनल ऑटोमेशन। कोई स्क्रिप्ट इंटरनल टूल का पहला वर्ज़न बना सकती है, जैसे इन्वेंटरी ट्रैकर या मंज़ूरी बोर्ड। पर डेटा अपडेट करने के लिए दोबारा बिल्ड न करें: Wisy से एक ऐसा एंडपॉइंट मांगें जिस पर आपके सिस्टम रिकॉर्ड भेज सकें, और जो इंटीग्रेशन में आपके सेट किए सीक्रेट से सुरक्षित हो। इस तरह लिखे रिकॉर्ड लगभग एक मिनट में विज़िटर तक पहुंच जाते हैं, बिना कोई बिल्ड खर्च किए। इस तरीके पर और जानकारी AI से इंटरनल टूल बनाने वाले लेख में है।
कुंजी लें और कोड से अपनी पहली साइट बनाएं
मुफ़्त अकाउंट बनाएं, छोटी सीमा वाली API कुंजी बनाएं, और ऊपर की curl कॉल से अपना पहला ब्रीफ़ भेजें। फ़ील्ड-स्तर की जानकारी के लिए API रेफ़रेंस (अंग्रेज़ी में) खुला रखें, और जब इंटीग्रेशन प्रोटोटाइप से प्रोडक्शन की ओर बढ़े, तो प्लान और कीमतों में से वह प्लान चुनें जिसकी बिल्ड सीमा और एक साथ चलने वाले बिल्ड आपकी मात्रा के लिए काफ़ी हों।
F.A.Q.
