API REFERENCE · PRISM PRO

स्थानीय API संदर्भ: अपनी स्क्रिप्ट से ब्राउज़र प्रोफ़ाइलें प्रबंधित करें।

Prism Pro का स्थानीय स्वचालन API केवल आपके कंप्यूटर के 127.0.0.1 पते पर सुनता है और हर बार शुरू होने पर बनने वाले एक्सेस टोकन का उपयोग करता है। HTTP अनुरोध भेज सकने वाली कोई भी प्रोग्रामिंग भाषा इसके ज़रिए प्रोफ़ाइलें एक-एक करके या बैच में बना सकती है, और फिर उनकी क्वेरी कर सकती है, उन्हें लॉन्च और बंद कर सकती है।

अंतिम अपडेट · Prism 0.3.22 ऐप के सोर्स कोड पर आधारित

अवलोकन

स्थानीय API, Prism Pro की एक सुविधा है, जिससे आप अपनी स्क्रिप्ट के ज़रिए प्रोफ़ाइलों को बैच में प्रबंधित कर सकते हैं: अपने डेटा के आधार पर प्रोफ़ाइलें बनाएँ, उन्हें क्रम से लॉन्च करें, उनकी स्थिति जाँचें और काम पूरा होने पर बंद करें। यह केवल प्रोफ़ाइलों का प्रबंधन करता है — कुकीज़, पासवर्ड, प्रॉक्सी क्रेडेंशियल या पेज की सामग्री नहीं पढ़ता, और कोई Puppeteer / Playwright डिबगिंग एंडपॉइंट भी नहीं देता। AI से पेज पढ़वाने, क्लिक करवाने और फ़ॉर्म भरवाने के लिए MCP का उपयोग करें।

स्थानीय API: एक नज़र में
विषयविवरण
पताhttp://127.0.0.1:<port>; हर बार API शुरू होने पर पोर्ट रैंडम रूप से तय होता है, और केवल इसी कंप्यूटर से आए अनुरोध स्वीकार किए जाते हैं
प्रमाणीकरणअनुरोध हेडर Authorization: Bearer <token>; टोकन API शुरू होने पर एक बार दिखाया जाता है और API रुकते ही अमान्य हो जाता है
डेटा प्रारूपJSON (UTF-8); सफल रिस्पॉन्स का परिणाम result फ़ील्ड में होता है
अनुरोध बॉडीकेवल प्रोफ़ाइल बनाने वाले एंडपॉइंट JSON बॉडी स्वीकार करते हैं, अधिकतम 96 KiB
दर सीमाहर 60 सेकंड में अधिकतम 120 अनुरोध, MCP के साथ साझा
टाइमआउटहर अनुरोध अधिकतम 60 सेकंड तक प्रतीक्षा करता है
उपलब्धताPrism Pro; macOS और Windows पर एक जैसा; प्रोफ़ाइल बनाने वाले एंडपॉइंट के लिए संस्करण 0.3.22 या उसके बाद का चाहिए

त्वरित शुरुआत

  1. स्थानीय API प्रारंभ करें

    Prism में बाईं ओर “स्वचालन API” खोलें और “स्थानीय API प्रारंभ करें” पर क्लिक करें। इस सुविधा के लिए Prism Pro चाहिए।

  2. पता और टोकन कॉपी करें

    विंडो में “API पता” और “सत्र एक्सेस टोकन” दिखते हैं। टोकन केवल एक बार, API सफलतापूर्वक शुरू होने पर दिखाया जाता है, इसलिए उसे तुरंत कॉपी करें; बाद में नया टोकन चाहिए, तो API को रोककर फिर से शुरू करें।

  3. पहला अनुरोध भेजें

    टर्मिनल में दो वेरिएबल सेट करें, फिर सेवा की स्थिति जाँचें और अपनी प्रोफ़ाइलों की सूची देखें। अगर रिस्पॉन्स में "state": "running" हो, तो पता और टोकन ठीक काम कर रहे हैं।

PRISM_API='http://127.0.0.1:43123'   # the API address shown in Prism
PRISM_TOKEN='<token>'                # the token shown in Prism

curl -H "Authorization: Bearer $PRISM_TOKEN" "$PRISM_API/v1/status"
curl -H "Authorization: Bearer $PRISM_TOKEN" "$PRISM_API/v1/profiles"

Windows PowerShell में curl किसी दूसरे कमांड का एलियास है: इसकी जगह curl.exe टाइप करें, या PowerShell का अंतर्निर्मित Invoke-RestMethod इस्तेमाल करें:

$api = 'http://127.0.0.1:43123'
$headers = @{ Authorization = 'Bearer <token>' }
(Invoke-RestMethod -Uri "$api/v1/profiles" -Headers $headers).result | Format-Table serialNumber, name, status

अनुरोध के नियम

API केवल इसी कंप्यूटर पर चल रही स्क्रिप्ट या प्रोग्राम से भेजे गए अनुरोध स्वीकार करता है। जो अनुरोध इनमें से कोई नियम तोड़ता है, वह निष्पादित नहीं होता और तालिका में दी गई त्रुटि लौटाता है:

अनुरोध के नियम और उनसे जुड़ी त्रुटियाँ
नियमHTTPत्रुटि
127.0.0.1 का उपयोग करें, localhost का नहीं: Host अनुरोध हेडर का API पते से बिल्कुल मेल खाना ज़रूरी है403invalid_host
हर अनुरोध के साथ Authorization: Bearer <token> भेजें401unauthorized
अनुरोध में ब्राउज़र का Origin हेडर न हो; इसलिए वेब पेजों और ब्राउज़र एक्सटेंशन में चलने वाला JavaScript API को कॉल नहीं कर सकता403browser_origin_not_allowed
URL में कोई क्वेरी पैरामीटर (?…) न हो400query_not_allowed
केवल नीचे दिए गए पथ और मेथड इस्तेमाल करें404not_found
केवल प्रोफ़ाइल बनाने वाले एंडपॉइंट अनुरोध बॉडी स्वीकार करते हैं; लॉन्च, बंद करने जैसे बाकी अनुरोध {} तक नहीं भेज सकते400body_not_allowed
प्रोफ़ाइल बनाने वाले एंडपॉइंट Content-Type: application/json का उपयोग करते हैं, और बॉडी एक JSON ऑब्जेक्ट होती है400json_body_required / invalid_json_body
अनुरोध बॉडी 96 KiB से बड़ी न हो413request_too_large
हर 60 सेकंड में अधिकतम 120 अनुरोध; विफल अनुरोध और MCP अनुरोध भी गिने जाते हैं429rate_limited

Prism स्थानीय API और MCP अनुरोधों को मिलने के क्रम में, एक-एक करके संभालता है। प्रोफ़ाइल लॉन्च करने में प्रॉक्सी जाँच और ब्राउज़र खोलना शामिल है, जिसमें आमतौर पर कुछ सेकंड लगते हैं; इस दौरान बाद के अनुरोध कतार में इंतज़ार करते हैं। अगला अनुरोध भेजने से पहले पिछले अनुरोध का जवाब आने दें।

एंडपॉइंट सूची

स्थानीय API एंडपॉइंट
मेथडपाथक्या करता है
GET/v1/statusजाँचता है कि सेवा उपलब्ध है
GET/v1/profilesसभी प्रोफ़ाइलों की सूची देता है (ट्रैश को छोड़कर)
GET/v1/profiles/{id}/statusएक प्रोफ़ाइल की जानकारी देता है
POST/v1/profiles/{id}/startप्रोफ़ाइल लॉन्च करता है
POST/v1/profiles/{id}/closeप्रोफ़ाइल बंद करता है; उसका डेटा बना रहता है
POST/v1/profilesएक प्रोफ़ाइल बनाता है (संस्करण 0.3.22 से)
POST/v1/profiles/batchएक बार में 1–50 प्रोफ़ाइलें बनाता है (संस्करण 0.3.22 से)

{id} प्रोफ़ाइल आईडी है, जो GET /v1/profiles के परिणाम से मिलती है। सभी सफल रिस्पॉन्स का HTTP स्टेटस 200 होता है; GET /v1/status को छोड़कर, परिणाम result फ़ील्ड में होता है। API में प्रोफ़ाइल संपादित करने या हटाने के लिए कोई एंडपॉइंट नहीं है।

प्रोफ़ाइल ऑब्जेक्ट

प्रोफ़ाइल सूची, प्रोफ़ाइल स्थिति, लॉन्च और बंद करने वाले एंडपॉइंट — सभी एक ही प्रोफ़ाइल ऑब्जेक्ट लौटाते हैं:

प्रोफ़ाइल ऑब्जेक्ट के फ़ील्ड
फ़ील्डप्रकारविवरण
idस्ट्रिंगप्रोफ़ाइल आईडी, जिसका उपयोग बाकी एंडपॉइंट में होता है
serialNumberपूर्णांकऐप में दिखने वाला प्रोफ़ाइल नंबर; प्रोफ़ाइल हटाने के बाद यह दोबारा इस्तेमाल नहीं होता
nameस्ट्रिंगप्रोफ़ाइल का नाम
groupस्ट्रिंगसमूह; प्रोफ़ाइल किसी समूह में न हो, तो खाली स्ट्रिंग
tagsस्ट्रिंग ऐरेटैग
statusस्ट्रिंगclosed बंद, starting शुरू हो रहा है, running चल रहा है, stopping बंद हो रहा है, orphaned बची हुई प्रक्रिया, error त्रुटि
lastOpenedAtस्ट्रिंगप्रोफ़ाइल पिछली बार कब खोली गई (ISO 8601, UTC); जो प्रोफ़ाइल कभी नहीं खोली गई, उसमें यह फ़ील्ड नहीं होता
{
  "result": {
    "id": "8f0c2b9e-4d6a-4f51-9a7e-2f1c3d5b6a70",
    "serialNumber": 12,
    "name": "Shop A",
    "group": "Project A",
    "tags": ["automation"],
    "status": "running",
    "lastOpenedAt": "2026-10-02T08:30:00.000Z"
  }
}

रिस्पॉन्स में प्रॉक्सी पते व क्रेडेंशियल, फ़िंगरप्रिंट सेटिंग्स, कुकीज़, पासवर्ड, साइट डेटा या एक्सटेंशन डेटा कभी शामिल नहीं होते।

क्वेरी, लॉन्च और बंद करना

GET /v1/status

सेवा की स्थिति लौटाता है, ताकि आप पुष्टि कर सकें कि पता और टोकन काम कर रहे हैं। केवल यही रिस्पॉन्स result के अंदर नहीं होता:

{
  "state": "running",
  "transport": "loopback",
  "protocolVersion": 1
}

GET /v1/profiles

प्रोफ़ाइल ऑब्जेक्ट का ऐरे लौटाता है, जिसमें सबसे हाल में बदली गई प्रोफ़ाइलें सबसे पहले आती हैं। ट्रैश में मौजूद प्रोफ़ाइलें इसमें शामिल नहीं होतीं।

GET /v1/profiles/{id}/status

एक प्रोफ़ाइल की वर्तमान स्थिति लौटाता है। प्रोफ़ाइल मौजूद न हो या ट्रैश में हो, तो 404 PROFILE_NOT_FOUND लौटता है।

POST /v1/profiles/{id}/start

  • यह ऐप में “खोलें” पर क्लिक करने जैसा है: Prism कर्नेल और Pro कर्नेल लाइसेंस जाँचता है, प्रॉक्सी की जाँच करके एग्ज़िट IP में बदलाव देखता है, फिर ब्राउज़र विंडो खोलता है। सफल होने पर running स्थिति वाला प्रोफ़ाइल ऑब्जेक्ट लौटाता है।
  • अगर प्रोफ़ाइल पहले से चल रही है, तो उसकी मौजूदा स्थिति लौटा दी जाती है; उसे दोबारा नहीं खोला जाता।
  • लॉन्च अनुरोध का जवाब आने के बाद ही Prism अगला अनुरोध संभालता है। कई प्रोफ़ाइलें लॉन्च करनी हों, तो हर प्रोफ़ाइल के लिए बारी-बारी से एंडपॉइंट कॉल करें; एक साथ कितनी प्रोफ़ाइलें चल सकती हैं, यह आपके कंप्यूटर की मेमोरी और CPU पर निर्भर करता है।
  • अगर ज़रूरी कर्नेल न हो, प्रॉक्सी जाँच विफल हो, प्रॉक्सी का एग्ज़िट IP बदल गया हो (नीति block होने पर) या कोई बची हुई प्रक्रिया मौजूद हो, तो लॉन्च विफल होता है और 502 लौटता है; कारण error.message में बताया जाता है।
  • ऐप में जिन स्थितियों में आगे बढ़ने के लिए आपकी पुष्टि चाहिए होती है, वे API के ज़रिए सीधे विफल हो जाती हैं — जैसे, जब प्रॉक्सी एग्ज़िट के स्थान को लेकर भौगोलिक डेटा स्रोत आपस में असहमत हों। ऐसी त्रुटियों में प्रोफ़ाइल को Prism ऐप में खोलें, या उसकी नेटवर्क पहचान को manual पर बदल दें।
  • जिन प्रोफ़ाइलों के लिए लॉन्च एंडपॉइंट कॉल किया गया हो (कॉल के समय पहले से चल रही प्रोफ़ाइलें भी), वे दर्ज की जाती हैं, और “स्वचालन API” विंडो में “तुरंत रोकें” पर क्लिक करने पर वे भी बंद हो जाती हैं। “API रोकें” और MCP विंडो के रोकने व तुरंत रोकने वाले बटन केवल API को रोकते हैं; ये प्रोफ़ाइलें खुली रहती हैं।

POST /v1/profiles/{id}/close

ब्राउज़र विंडो बंद करता है, प्रोफ़ाइल का डेटा बनाए रखता है और closed स्थिति वाला प्रोफ़ाइल ऑब्जेक्ट लौटाता है; अगर प्रोफ़ाइल चल ही न रही हो, तो भी तुरंत closed लौटाया जाता है। अगर ब्राउज़र 8 सेकंड के भीतर बंद न हो और डेटा फ़ोल्डर अब भी उसी के उपयोग में हो, तो लौटाई गई स्थिति orphaned होती है; बंद करने का एंडपॉइंट दोबारा कॉल करने पर बची हुई प्रक्रिया समाप्त हो जाती है।

PROFILE_ID='8f0c2b9e-4d6a-4f51-9a7e-2f1c3d5b6a70'   # an id from GET /v1/profiles
curl -X POST -H "Authorization: Bearer $PRISM_TOKEN" "$PRISM_API/v1/profiles/$PROFILE_ID/start"
curl -X POST -H "Authorization: Bearer $PRISM_TOKEN" "$PRISM_API/v1/profiles/$PROFILE_ID/close"

प्रोफ़ाइलें बनाना

प्रोफ़ाइल बनाने वाले एंडपॉइंट नई प्रोफ़ाइलों को बंद स्थिति में सहेजते हैं; कोई ब्राउज़र नहीं खुलता। सभी फ़ील्ड वैकल्पिक हैं: छोड़े गए फ़ील्ड को वही डिफ़ॉल्ट मान मिलते हैं जो ऐप में “नई प्रोफ़ाइल” से मिलते हैं, और हर प्रोफ़ाइल को नया फ़िंगरप्रिंट सीड मिलता है। अज्ञात फ़ील्ड अस्वीकार कर दिए जाते हैं।

एक प्रोफ़ाइल बनाना

curl -X POST "$PRISM_API/v1/profiles" \
  -H "Authorization: Bearer $PRISM_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: shop-b-001" \
  -d '{
    "name": "Shop B",
    "group": "Project A",
    "tags": ["automation"],
    "startUrls": ["https://example.com/"],
    "proxy": { "protocol": "socks5", "host": "203.0.113.10", "port": 1080, "username": "user", "password": "pass" }
  }'

सफल होने पर नई प्रोफ़ाइल लौटाई जाती है:

{
  "result": {
    "id": "3b1f7a52-9c4e-4d2b-8f60-1a2b3c4d5e6f",
    "serialNumber": 13,
    "name": "Shop B",
    "group": "Project A",
    "tags": ["automation"],
    "status": "closed"
  }
}

बैच में बनाना

POST /v1/profiles/batch की बॉडी में profiles ऐरे होता है, हर अनुरोध में 1–50 आइटम; हर आइटम एक प्रोफ़ाइल बनाने के अनुरोध की तरह लिखा जाता है, बस requestKey को बॉडी के शीर्ष स्तर पर या हेडर में देना होता है। Prism पहले हर प्रोफ़ाइल का कॉन्फ़िगरेशन सत्यापित करता है: अगर एक भी अमान्य हो, तो कुछ नहीं बनता, और त्रुटि संदेश बताता है कि कौन-सी प्रोफ़ाइल और उसका कौन-सा फ़ील्ड गलत है (profiles[1] यानी दूसरी प्रोफ़ाइल; गिनती 0 से शुरू होती है)। परिणाम इनपुट के क्रम में लौटाए जाते हैं:

{
  "requestKey": "shops-batch-001",
  "profiles": [
    { "name": "Shop C", "group": "Project A" },
    { "name": "Shop D", "group": "Project A", "fingerprint": { "platform": "windows" } }
  ]
}
{
  "result": {
    "profiles": [
      { "id": "…", "serialNumber": 14, "name": "Shop C", "group": "Project A", "tags": [], "status": "closed" },
      { "id": "…", "serialNumber": 15, "name": "Shop D", "group": "Project A", "tags": [], "status": "closed" }
    ],
    "count": 2
  }
}

प्रोफ़ाइल फ़ील्ड

प्रोफ़ाइल बनाने के फ़ील्ड
फ़ील्डविवरणछोड़ने पर
nameनाम, 1–60 वर्ण“API” और एक संख्या, जैसे API 8: यह संख्या मौजूदा प्रोफ़ाइलों की संख्या से 1 ज़्यादा होती है और बैच में क्रम से बढ़ती है; नाम किसी मौजूदा प्रोफ़ाइल के नाम जैसा भी हो सकता है
groupसमूह, अधिकतम 40 वर्णकोई समूह नहीं
tagsटैग का ऐरे: अधिकतम 20 टैग, हर एक अधिकतम 30 वर्णकोई नहीं
noteनोट्स, अधिकतम 500 वर्णकोई नहीं
colorचिह्न का रंग, #RRGGBBपैलेट के रंग बारी-बारी से
startUrlsस्टार्टअप पेजों का ऐरे, अधिकतम 50; केवल http / https, उपयोगकर्ता नाम या पासवर्ड के बिना; प्रोटोकॉल न लिखा हो, तो https माना जाता हैPrism की आधिकारिक वेबसाइट
proxyप्रॉक्सी; नीचे की तालिका देखेंसीधा कनेक्शन
fingerprintफ़िंगरप्रिंट विकल्प; नीचे की तालिका देखेंऐप में नई प्रोफ़ाइल जैसा ही
extensionIdsइंस्टॉल किए गए एक्सटेंशन की आंतरिक Prism आईडी, अधिकतम 50। “एक्सटेंशन” विंडो में एक्सटेंशन पथ …/<ID>/extension में जो फ़ोल्डर नाम है, वही यह आईडी है; यह Chrome वेब स्टोर की एक्सटेंशन आईडी नहीं हैकोई एक्सटेंशन नहीं
kernelVersionकिसी एक कर्नेल संस्करण को पिन करता है: चार संख्याएँ, जैसे 144.0.7559.132; प्रोफ़ाइल लॉन्च होते समय वह संस्करण इंस्टॉल होना चाहिएडिफ़ॉल्ट कर्नेल के अनुसार
requestKeyअनुरोध कुंजी, सुरक्षित पुनः प्रयास के लिए; देखें “सुरक्षित पुनः प्रयास”कोई नहीं

प्रॉक्सी फ़ील्ड

प्रॉक्सी फ़ील्ड (proxy)
फ़ील्डविवरण
protocolआवश्यक: direct, http, https या socks5
hostहोस्ट नाम या IP, प्रोटोकॉल, पोर्ट या क्रेडेंशियल के बिना; direct न होने पर आवश्यक
port1 से 65535 तक का पूर्णांक; direct न होने पर आवश्यक
username、passwordवैकल्पिक। पासवर्ड इसी कंप्यूटर पर एन्क्रिप्ट करके सहेजा जाता है और कोई भी एंडपॉइंट उसे कभी नहीं लौटाता

फ़िंगरप्रिंट फ़ील्ड

फ़िंगरप्रिंट फ़ील्ड (fingerprint)
फ़ील्डविवरणछोड़ने पर
platformmacos या windowsहार्डवेयर टेम्पलेट के अनुसार; टेम्पलेट न दिया हो, तो इस कंप्यूटर का ऑपरेटिंग सिस्टम
hardwareProfileIdहार्डवेयर टेम्पलेट; नीचे की तालिका देखें। OS संस्करण, CPU कोर की संख्या और स्क्रीन का आकार टेम्पलेट से तय होते हैंउस सिस्टम का “सीड के अनुसार अलग” टेम्पलेट
seedफ़िंगरप्रिंट सीड, 0 से 4294967295 तक का पूर्णांक; सीड और बाकी फ़िंगरप्रिंट सेटिंग्स समान हों, तो एक ही फ़िंगरप्रिंट मिलता हैरैंडम
brandChrome या EdgeChrome
brandVersionब्राउज़र संस्करण। आमतौर पर खाली छोड़ें, ताकि कर्नेल का संस्करण इस्तेमाल हो; भरने पर उसका मुख्य संस्करण उस कर्नेल से मेल खाना चाहिए जिससे प्रोफ़ाइल लॉन्च होती है, नहीं तो प्रोफ़ाइल लॉन्च नहीं होगीकर्नेल के अनुसार
languageइंटरफ़ेस भाषा, जैसे en-USइस कंप्यूटर की सिस्टम भाषा
acceptLanguagesAccept-Language हेडरभाषा से अपने-आप बनता है
timezoneIANA समय क्षेत्र, जैसे America/New_Yorkइस कंप्यूटर का समय क्षेत्र
networkIdentityModeproxy: लॉन्च से पहले प्रॉक्सी एग्ज़िट जाँचा जाता है, समय क्षेत्र व भौगोलिक स्थान उसी के अनुसार तय होते हैं, और एग्ज़िट का देश पहचाना जा सके, तो भाषा भी; manual: हमेशा आपके दिए मान इस्तेमाल होते हैंproxy
proxyExitPolicyप्रॉक्सी का एग्ज़िट IP पिछली जाँच से अलग होने पर: block इस लॉन्च को विफल कर देता है, और दोबारा लॉन्च करना पुष्टि माना जाता है, इसलिए स्क्रिप्ट को इस त्रुटि पर अपने-आप दोबारा कोशिश नहीं करनी चाहिए; warn केवल चेतावनी देता हैblock
webrtcPolicyproxy_only लीक सुरक्षा; public_only केवल सार्वजनिक इंटरफ़ेस; default सिस्टम डिफ़ॉल्टproxy_only

हार्डवेयर टेम्पलेट

हार्डवेयर टेम्पलेट आईडी
IDसिस्टमविवरण
macos-seeded-applemacOSसीड के अनुसार अलग Apple GPU, कई प्रोफ़ाइलों के लिए उपयुक्त; macOS पर डिफ़ॉल्ट
macos-hostmacOSइसी कंप्यूटर का मूल हार्डवेयर; केवल Mac पर
macos-m1macOSApple M1 · 8GB
macos-m3-promacOSApple M3 Pro · 18GB
macos-m4-promacOSApple M4 Pro · 24GB
windows-seeded-nvidiaWindowsसीड के अनुसार अलग NVIDIA GPU, कई प्रोफ़ाइलों के लिए उपयुक्त; Windows पर डिफ़ॉल्ट
windows-hostWindowsइसी कंप्यूटर का मूल हार्डवेयर; केवल Windows कंप्यूटर पर
windows-10-rtx3060WindowsWindows 10 · RTX 3060 · 16GB
windows-11-rtx4060WindowsWindows 11 · RTX 4060 · 16GB
windows-11-rtx4070WindowsWindows 11 · RTX 4070 · 32GB

टेम्पलेट platform से मेल न खाए, तो अनुरोध अस्वीकार कर दिया जाता है। विंडो की स्थिति और आकार, कुकीज़, एक्सटेंशन डेटा जैसी सेटिंग्स API से सेट नहीं की जा सकतीं; प्रोफ़ाइल बनने के बाद उन्हें Prism ऐप में बदलें।

सुरक्षित पुनः प्रयास

नेटवर्क टूटने या अनुरोध का टाइमआउट होने पर हो सकता है आपको पता न चले कि प्रोफ़ाइल बनी या नहीं। हर बार प्रोफ़ाइल बनाते समय एक अनुरोध कुंजी दें; तब दोबारा कोशिश करने पर कुछ भी दो बार नहीं बनेगा:

  • कुंजी Idempotency-Key हेडर में या बॉडी के requestKey फ़ील्ड में भेजें: 8–128 वर्ण, जिनमें अंग्रेज़ी अक्षर (A–Z, a–z), अंक (0–9) और . _ : - हो सकते हैं। दोनों जगह भेजें, तो दोनों एक जैसी होनी चाहिए।
  • 24 घंटे के भीतर उसी कुंजी और उसी सामग्री के साथ दोबारा कोशिश करने पर पहली बार बनी प्रोफ़ाइलें लौटाई जाती हैं (HTTP 200), Prism को फिर से शुरू करने के बाद भी।
  • कुंजी वही हो लेकिन सामग्री अलग, तो 409 IDEMPOTENCY_CONFLICT लौटता है। अगर पहले अनुरोध से बनी कोई प्रोफ़ाइल हटा दी गई हो (ट्रैश में ले जाना भी शामिल है), तो API उसे चुपचाप फिर से बनाने के बजाय 409 IDEMPOTENCY_RESULT_GONE लौटाता है; उसे फिर से बनाना हो, तो नई कुंजी इस्तेमाल करें।
  • 24 घंटे बीतने के बाद वही कुंजी नया अनुरोध मानी जाती है।
  • कुंजी वाले अधिकतम 1,000 अनुरोध 24 घंटे तक याद रखे जाते हैं; यह सीमा MCP के ज़रिए प्रोफ़ाइल बनाने के साथ साझा है (MCP से हर निर्माण एक रिकॉर्ड लेता है)। सीमा पूरी होने पर 429 IDEMPOTENCY_CAPACITY लौटता है, जब तक पुराने रिकॉर्ड की अवधि समाप्त न हो जाए।
  • कुंजियाँ और अनुरोध की सामग्री इस कंप्यूटर पर केवल क्रिप्टोग्राफ़िक हैश के रूप में सहेजी जाती हैं, सादे टेक्स्ट में कभी नहीं; इसलिए प्रॉक्सी पासवर्ड भी इनके साथ मूल रूप में सहेजा नहीं जाता।

कुंजियाँ अपने डेटा से बनाएँ, जैसे स्प्रेडशीट की पंक्ति संख्या या ऑर्डर नंबर: shop-b-001।

त्रुटि प्रबंधन

जब अनुरोध शुरुआती जाँच में ही अस्वीकार हो जाता है (देखें “अनुरोध के नियम”), तो error का मान एक स्ट्रिंग होता है, जैसे {"error":"unauthorized"}। जब Prism अनुरोध संभालते समय विफल होता है, तो error का मान एक ऑब्जेक्ट होता है:

{
  "error": {
    "code": "INVALID_PROFILE_INPUT",
    "message": "Invalid profile creation request; see details",
    "retryable": false,
    "details": [
      { "path": "profiles[1].proxy.port", "message": "Too big: expected number to be <=65535" }
    ]
  }
}

प्रोग्राम को HTTP स्टेटस और code के आधार पर निर्णय लेना चाहिए; message इंसानों के पढ़ने के लिए लिखा गया विवरण है, आंशिक रूप से चीनी में, और इसके शब्द संस्करणों के साथ बदल सकते हैं। retryable का मान true हो, तो वही अनुरोध बाद में बिना बदलाव के दोबारा भेजा जा सकता है। details केवल प्रोफ़ाइल बनाने के अमान्य फ़ील्ड पर आता है, उसमें अधिकतम 20 प्रविष्टियाँ होती हैं, और वह भेजे गए मान कभी नहीं दोहराता।

HTTP स्टेटस और त्रुटि कोड
HTTPत्रुटिअर्थक्या करें
400INVALID_PROFILE_INPUTप्रोफ़ाइल बनाने के फ़ील्ड अमान्य हैं; details में हर फ़ील्ड और उसका कारण दिया होता हैdetails में बताए फ़ील्ड ठीक करके फिर से भेजें
400query_not_allowed、body_not_allowed、json_body_required、invalid_json_bodyअनुरोध किसी नियम का पालन नहीं करता“अनुरोध के नियम” देखकर ठीक करें
401unauthorizedटोकन गलत है या अमान्य हो चुका हैPrism में API फिर से शुरू करें और नया टोकन इस्तेमाल करें
403invalid_host、browser_origin_not_allowedपता या अनुरोध का स्रोत स्वीकार नहीं किया गया127.0.0.1 का उपयोग करें और वेब पेज से नहीं, स्क्रिप्ट से कॉल करें
403PRO_REQUIREDPro लाइसेंस अमान्य हो गया है, या पिन किए गए कर्नेल के लिए Pro चाहिएPro का नवीनीकरण करें या उसे फिर से सक्रिय करें
404not_foundऐसा कोई पथ या मेथड नहीं है“एंडपॉइंट सूची” देखें
404PROFILE_NOT_FOUNDप्रोफ़ाइल मौजूद नहीं है या ट्रैश में हैप्रोफ़ाइल सूची फिर से प्राप्त करें
409IDEMPOTENCY_CONFLICT、IDEMPOTENCY_RESULT_GONEअनुरोध कुंजी में टकराव, या उससे बनी कोई प्रोफ़ाइल हटा दी गई हैनई अनुरोध कुंजी इस्तेमाल करें
413request_too_largeअनुरोध बॉडी 96 KiB से बड़ी हैइसे कई बैच में बाँटें
429rate_limited、IDEMPOTENCY_CAPACITYबहुत ज़्यादा अनुरोध, या 24 घंटे में 1,000 अनुरोध कुंजियों की सीमा पूरीकुछ देर बाद फिर कोशिश करें
502MCP_REQUEST_FAILED आदिअन्य विफलताएँ — जैसे कर्नेल गायब होना, प्रॉक्सी जाँच विफल होना या कोई बची हुई प्रक्रियाmessage के अनुसार कार्रवाई करें
504BROKER_TIMEOUTPrism ने 60 सेकंड में जवाब नहीं दिया; कार्रवाई शायद अब भी चल रही हैपहले स्थिति जाँचें; प्रोफ़ाइल बनाने वाले अनुरोध उसी कुंजी के साथ दोबारा भेजें

MCP_REQUEST_FAILED एक सामान्य त्रुटि नाम है, जिसे Prism अंदरूनी तौर पर इस्तेमाल करता है; स्थानीय API भी इसी का उपयोग करता है।

कोड उदाहरण

उदाहरणों में पते और टोकन की जगह वे मान डालें जो Prism विंडो में दिखाए गए हैं। उदाहरण प्रोफ़ाइलें बनाते हैं, फिर नई बनी प्रोफ़ाइल को लॉन्च करके बंद करते हैं।

Python

requests ज़रूरी है (pip install requests):

import requests

API = "http://127.0.0.1:43123"   # the API address shown in Prism
TOKEN = "<token>"                # the token shown in Prism

session = requests.Session()
session.headers["Authorization"] = f"Bearer {TOKEN}"

def call(method, path, **kwargs):
    response = session.request(method, API + path, timeout=70, **kwargs)
    body = response.json()
    if not response.ok:
        raise RuntimeError(f"{response.status_code}: {body['error']}")
    return body.get("result", body)

created = call("POST", "/v1/profiles/batch",
               headers={"Idempotency-Key": "shops-batch-002"},
               json={"profiles": [{"name": "Shop C"}, {"name": "Shop D"}]})
for profile in created["profiles"]:
    print("created", profile["serialNumber"], profile["id"])

profiles = call("GET", "/v1/profiles")
for profile in profiles:
    print(profile["serialNumber"], profile["name"], profile["status"])

first = created["profiles"][0]["id"]
print(call("POST", f"/v1/profiles/{first}/start")["status"])   # running
print(call("POST", f"/v1/profiles/{first}/close")["status"])   # closed

Node.js

Node.js 18 और बाद के संस्करणों में fetch पहले से शामिल है, इसलिए कुछ भी इंस्टॉल करने की ज़रूरत नहीं:

// prism.mjs — run with: node prism.mjs (Node.js 18 or later)
const API = 'http://127.0.0.1:43123' // the API address shown in Prism
const TOKEN = '<token>'              // the token shown in Prism

async function call(method, path, body, headers = {}) {
  const response = await fetch(API + path, {
    method,
    headers: { Authorization: `Bearer ${TOKEN}`, ...(body ? { 'Content-Type': 'application/json' } : {}), ...headers },
    body: body ? JSON.stringify(body) : undefined,
    signal: AbortSignal.timeout(70_000),
  })
  const data = await response.json()
  if (!response.ok) throw new Error(`${response.status}: ${JSON.stringify(data.error)}`)
  return data.result ?? data
}

const profile = await call('POST', '/v1/profiles', {
  name: 'Shop E',
  fingerprint: { language: 'en-US', timezone: 'America/New_York', networkIdentityMode: 'manual' },
}, { 'Idempotency-Key': 'shop-e-001' })
console.log('created', profile.serialNumber, profile.id)

console.log((await call('POST', `/v1/profiles/${profile.id}/start`)).status) // running
console.log((await call('POST', `/v1/profiles/${profile.id}/close`)).status) // closed

स्थानीय API और MCP

स्थानीय API आपकी अपनी स्क्रिप्ट के लिए है; AI क्लाइंट को MCP के ज़रिए Prism से जोड़ें। MCP का अपना अलग टोकन और अपनी अनुमतियाँ हैं: AI को केवल वही प्रोफ़ाइलें दिखती हैं जिनकी अनुमति “स्थानीय एआई · MCP” में दी गई है, और AI स्थानीय API को कॉल नहीं कर सकता। दोनों एक ही स्थानीय सेवा और हर 60 सेकंड में 120 अनुरोधों की सीमा साझा करते हैं; MCP रोकने या MCP को आपातकालीन रूप से रोकने पर स्थानीय API भी रुक जाता है।

AI भी MCP टूल prism_create_profile और prism_create_profiles से प्रोफ़ाइलें बना सकता है; ये वही फ़ील्ड लेते हैं जो इस पेज पर दिए गए हैं। इसके लिए आपको “स्थानीय एआई · MCP” में “AI को प्रोफ़ाइल बनाने दें” चालू करना होगा (डिफ़ॉल्ट रूप से बंद); नई प्रोफ़ाइलों को AI नियंत्रित कर सकता है या नहीं, यह आपके सेट किए प्रोफ़ाइल एक्सेस मोड पर निर्भर करता है। MCP और स्थानीय API की अनुरोध कुंजियाँ एक-दूसरे से अलग रहती हैं, लेकिन 24 घंटे में 1,000 रिकॉर्ड की सीमा दोनों के लिए साझा है।

सुरक्षा सुझाव

  • टोकन इस कंप्यूटर पर प्रोफ़ाइलें प्रबंधित करने की चाबी है: इसे कोड रिपॉज़िटरी, लॉग या चैट में न डालें। अगर इसके लीक होने का संदेह हो, तो API को रोककर फिर से शुरू करें; पुराना टोकन तुरंत अमान्य हो जाता है।
  • API केवल 127.0.0.1 पर सुनता है, इसलिए आपके लोकल नेटवर्क या इंटरनेट के दूसरे डिवाइस इस तक सीधे नहीं पहुँच सकते। Host जाँच मुख्य रूप से ब्राउज़र से आने वाले अनुरोधों और अनजाने दुरुपयोग को रोकने के लिए है, यह एक्सेस नियंत्रण की जगह नहीं ले सकती; पोर्ट फ़ॉरवर्डिंग या रिवर्स प्रॉक्सी के ज़रिए API को बाहर उपलब्ध न कराएँ।
  • इस कंप्यूटर के दूसरे प्रोग्राम भी टोकन मिल जाने पर API को कॉल कर सकते हैं। API को केवल भरोसेमंद कंप्यूटर पर चालू करें, और काम पूरा होने पर “API रोकें” पर क्लिक करें।
  • “स्वचालन API” विंडो का “तुरंत रोकें” API को रोक देता है और इस सत्र में API से लॉन्च की गई उन प्रोफ़ाइलों को बंद कर देता है जो अब भी चल रही हैं।
  • Prism द्वारा निष्पादित हर अनुरोध इसी कंप्यूटर के ऑडिट लॉग vault/logs/automation-audit.jsonl (Prism डेटा फ़ोल्डर में) में लिखा जाता है; लॉग में समय, कार्रवाई, परिणाम, अनुरोध आईडी, प्रोफ़ाइल आईडी और विफलता का कारण दर्ज होते हैं — टोकन, अनुरोध की सामग्री या पेज की सामग्री कभी नहीं। अनुरोध के नियमों के कारण अस्वीकार हुए अनुरोध और GET /v1/status लॉग में दर्ज नहीं होते।

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

क्या API को वेब पेज या ब्राउज़र एक्सटेंशन से कॉल किया जा सकता है?
नहीं। ब्राउज़र से भेजे गए अनुरोधों में Origin हेडर होता है, जिसे API अस्वीकार कर देता है। इसे टर्मिनल, स्क्रिप्ट या किसी स्थानीय प्रोग्राम से कॉल करें।
localhost इस्तेमाल करने पर 403 क्यों मिलता है?
API के लिए Host हेडर का API पते के 127.0.0.1 और पोर्ट से बिल्कुल मेल खाना ज़रूरी है, इसलिए localhost अस्वीकार हो जाता है। पते में होस्ट नाम के रूप में 127.0.0.1 लिखें।
“स्वचालन API” विंडो में API चल रहा दिखता है, लेकिन टोकन नहीं दिखता। क्या करें?
MCP सक्षम होने पर Prism अपने-आप वह स्थानीय सेवा शुरू कर देता है जिसे API और MCP साझा करते हैं, इसलिए विंडो में केवल पता दिखता है। टोकन केवल एक बार दिखाया जाता है, जब “स्थानीय API प्रारंभ करें” पर क्लिक करने से API सफलतापूर्वक शुरू होता है: नया टोकन पाने के लिए पहले “API रोकें” पर क्लिक करें, फिर “स्थानीय API प्रारंभ करें” पर। सेवा रुकी रहने के दौरान MCP भी डिस्कनेक्ट रहता है।
Prism दोबारा शुरू करने के बाद क्या पुराना टोकन काम करेगा?
नहीं। हर बार API शुरू करने पर नया पोर्ट और नया टोकन बनता है; API रोकने या Prism बंद करने पर पुराना टोकन अमान्य हो जाता है।
क्या API से प्रोफ़ाइलें संपादित या हटाई जा सकती हैं?
नहीं। API प्रोफ़ाइलें बना सकता है, उनकी क्वेरी कर सकता है, उन्हें लॉन्च और बंद कर सकता है; प्रोफ़ाइलों का कॉन्फ़िगरेशन बदलने और उन्हें हटाने का काम Prism ऐप में करें।
क्या Puppeteer, Playwright या Selenium को कनेक्ट किया जा सकता है?
नहीं। API कोई डिबगिंग पोर्ट या WebDriver पता नहीं देता। पेज-स्तर की क्रियाओं के लिए MCP के ज़रिए AI क्लाइंट से काम करवाएँ।
क्या एक साथ कई प्रोफ़ाइलें लॉन्च की जा सकती हैं?
हाँ, लॉन्च एंडपॉइंट को हर प्रोफ़ाइल के लिए एक-एक करके कॉल करें। Prism अनुरोधों को क्रम से संभालता है और एक प्रोफ़ाइल लॉन्च हो जाने के बाद ही अगला अनुरोध लेता है; एक साथ कितनी प्रोफ़ाइलें चल सकती हैं, यह आपके कंप्यूटर की मेमोरी और CPU पर निर्भर करता है।
क्या यह Windows पर भी काम करता है?
हाँ। Prism Pro macOS और Windows, दोनों पर एक ही स्थानीय API देता है। Windows PowerShell में curl.exe या Invoke-RestMethod का उपयोग करें।