अवलोकन
स्थानीय API, Prism Pro की एक सुविधा है, जिससे आप अपनी स्क्रिप्ट के ज़रिए प्रोफ़ाइलों को बैच में प्रबंधित कर सकते हैं: अपने डेटा के आधार पर प्रोफ़ाइलें बनाएँ, उन्हें क्रम से लॉन्च करें, उनकी स्थिति जाँचें और काम पूरा होने पर बंद करें। यह केवल प्रोफ़ाइलों का प्रबंधन करता है — कुकीज़, पासवर्ड, प्रॉक्सी क्रेडेंशियल या पेज की सामग्री नहीं पढ़ता, और कोई Puppeteer / Playwright डिबगिंग एंडपॉइंट भी नहीं देता। AI से पेज पढ़वाने, क्लिक करवाने और फ़ॉर्म भरवाने के लिए MCP का उपयोग करें।
| विषय | विवरण |
|---|---|
| पता | 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 या उसके बाद का चाहिए |
त्वरित शुरुआत
स्थानीय API प्रारंभ करें
Prism में बाईं ओर “स्वचालन API” खोलें और “स्थानीय API प्रारंभ करें” पर क्लिक करें। इस सुविधा के लिए Prism Pro चाहिए।
पता और टोकन कॉपी करें
विंडो में “API पता” और “सत्र एक्सेस टोकन” दिखते हैं। टोकन केवल एक बार, API सफलतापूर्वक शुरू होने पर दिखाया जाता है, इसलिए उसे तुरंत कॉपी करें; बाद में नया टोकन चाहिए, तो API को रोककर फिर से शुरू करें।
पहला अनुरोध भेजें
टर्मिनल में दो वेरिएबल सेट करें, फिर सेवा की स्थिति जाँचें और अपनी प्रोफ़ाइलों की सूची देखें। अगर रिस्पॉन्स में
"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 पते से बिल्कुल मेल खाना ज़रूरी है | 403 | invalid_host |
हर अनुरोध के साथ Authorization: Bearer <token> भेजें | 401 | unauthorized |
| अनुरोध में ब्राउज़र का Origin हेडर न हो; इसलिए वेब पेजों और ब्राउज़र एक्सटेंशन में चलने वाला JavaScript API को कॉल नहीं कर सकता | 403 | browser_origin_not_allowed |
URL में कोई क्वेरी पैरामीटर (?…) न हो | 400 | query_not_allowed |
| केवल नीचे दिए गए पथ और मेथड इस्तेमाल करें | 404 | not_found |
केवल प्रोफ़ाइल बनाने वाले एंडपॉइंट अनुरोध बॉडी स्वीकार करते हैं; लॉन्च, बंद करने जैसे बाकी अनुरोध {} तक नहीं भेज सकते | 400 | body_not_allowed |
प्रोफ़ाइल बनाने वाले एंडपॉइंट Content-Type: application/json का उपयोग करते हैं, और बॉडी एक JSON ऑब्जेक्ट होती है | 400 | json_body_required / invalid_json_body |
| अनुरोध बॉडी 96 KiB से बड़ी न हो | 413 | request_too_large |
| हर 60 सेकंड में अधिकतम 120 अनुरोध; विफल अनुरोध और MCP अनुरोध भी गिने जाते हैं | 429 | rate_limited |
Prism स्थानीय API और MCP अनुरोधों को मिलने के क्रम में, एक-एक करके संभालता है। प्रोफ़ाइल लॉन्च करने में प्रॉक्सी जाँच और ब्राउज़र खोलना शामिल है, जिसमें आमतौर पर कुछ सेकंड लगते हैं; इस दौरान बाद के अनुरोध कतार में इंतज़ार करते हैं। अगला अनुरोध भेजने से पहले पिछले अनुरोध का जवाब आने दें।
एंडपॉइंट सूची
| मेथड | पाथ | क्या करता है |
|---|---|---|
| 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 | अनुरोध कुंजी, सुरक्षित पुनः प्रयास के लिए; देखें “सुरक्षित पुनः प्रयास” | कोई नहीं |
प्रॉक्सी फ़ील्ड
| फ़ील्ड | विवरण |
|---|---|
protocol | आवश्यक: direct, http, https या socks5 |
host | होस्ट नाम या IP, प्रोटोकॉल, पोर्ट या क्रेडेंशियल के बिना; direct न होने पर आवश्यक |
port | 1 से 65535 तक का पूर्णांक; direct न होने पर आवश्यक |
username、password | वैकल्पिक। पासवर्ड इसी कंप्यूटर पर एन्क्रिप्ट करके सहेजा जाता है और कोई भी एंडपॉइंट उसे कभी नहीं लौटाता |
फ़िंगरप्रिंट फ़ील्ड
| फ़ील्ड | विवरण | छोड़ने पर |
|---|---|---|
platform | macos या windows | हार्डवेयर टेम्पलेट के अनुसार; टेम्पलेट न दिया हो, तो इस कंप्यूटर का ऑपरेटिंग सिस्टम |
hardwareProfileId | हार्डवेयर टेम्पलेट; नीचे की तालिका देखें। OS संस्करण, CPU कोर की संख्या और स्क्रीन का आकार टेम्पलेट से तय होते हैं | उस सिस्टम का “सीड के अनुसार अलग” टेम्पलेट |
seed | फ़िंगरप्रिंट सीड, 0 से 4294967295 तक का पूर्णांक; सीड और बाकी फ़िंगरप्रिंट सेटिंग्स समान हों, तो एक ही फ़िंगरप्रिंट मिलता है | रैंडम |
brand | Chrome या Edge | Chrome |
brandVersion | ब्राउज़र संस्करण। आमतौर पर खाली छोड़ें, ताकि कर्नेल का संस्करण इस्तेमाल हो; भरने पर उसका मुख्य संस्करण उस कर्नेल से मेल खाना चाहिए जिससे प्रोफ़ाइल लॉन्च होती है, नहीं तो प्रोफ़ाइल लॉन्च नहीं होगी | कर्नेल के अनुसार |
language | इंटरफ़ेस भाषा, जैसे en-US | इस कंप्यूटर की सिस्टम भाषा |
acceptLanguages | Accept-Language हेडर | भाषा से अपने-आप बनता है |
timezone | IANA समय क्षेत्र, जैसे America/New_York | इस कंप्यूटर का समय क्षेत्र |
networkIdentityMode | proxy: लॉन्च से पहले प्रॉक्सी एग्ज़िट जाँचा जाता है, समय क्षेत्र व भौगोलिक स्थान उसी के अनुसार तय होते हैं, और एग्ज़िट का देश पहचाना जा सके, तो भाषा भी; manual: हमेशा आपके दिए मान इस्तेमाल होते हैं | proxy |
proxyExitPolicy | प्रॉक्सी का एग्ज़िट IP पिछली जाँच से अलग होने पर: block इस लॉन्च को विफल कर देता है, और दोबारा लॉन्च करना पुष्टि माना जाता है, इसलिए स्क्रिप्ट को इस त्रुटि पर अपने-आप दोबारा कोशिश नहीं करनी चाहिए; warn केवल चेतावनी देता है | block |
webrtcPolicy | proxy_only लीक सुरक्षा; public_only केवल सार्वजनिक इंटरफ़ेस; default सिस्टम डिफ़ॉल्ट | proxy_only |
हार्डवेयर टेम्पलेट
| ID | सिस्टम | विवरण |
|---|---|---|
macos-seeded-apple | macOS | सीड के अनुसार अलग Apple GPU, कई प्रोफ़ाइलों के लिए उपयुक्त; macOS पर डिफ़ॉल्ट |
macos-host | macOS | इसी कंप्यूटर का मूल हार्डवेयर; केवल Mac पर |
macos-m1 | macOS | Apple M1 · 8GB |
macos-m3-pro | macOS | Apple M3 Pro · 18GB |
macos-m4-pro | macOS | Apple M4 Pro · 24GB |
windows-seeded-nvidia | Windows | सीड के अनुसार अलग NVIDIA GPU, कई प्रोफ़ाइलों के लिए उपयुक्त; Windows पर डिफ़ॉल्ट |
windows-host | Windows | इसी कंप्यूटर का मूल हार्डवेयर; केवल Windows कंप्यूटर पर |
windows-10-rtx3060 | Windows | Windows 10 · RTX 3060 · 16GB |
windows-11-rtx4060 | Windows | Windows 11 · RTX 4060 · 16GB |
windows-11-rtx4070 | Windows | Windows 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 उसे चुपचाप फिर से बनाने के बजाय 409IDEMPOTENCY_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 | त्रुटि | अर्थ | क्या करें |
|---|---|---|---|
| 400 | INVALID_PROFILE_INPUT | प्रोफ़ाइल बनाने के फ़ील्ड अमान्य हैं; details में हर फ़ील्ड और उसका कारण दिया होता है | details में बताए फ़ील्ड ठीक करके फिर से भेजें |
| 400 | query_not_allowed、body_not_allowed、json_body_required、invalid_json_body | अनुरोध किसी नियम का पालन नहीं करता | “अनुरोध के नियम” देखकर ठीक करें |
| 401 | unauthorized | टोकन गलत है या अमान्य हो चुका है | Prism में API फिर से शुरू करें और नया टोकन इस्तेमाल करें |
| 403 | invalid_host、browser_origin_not_allowed | पता या अनुरोध का स्रोत स्वीकार नहीं किया गया | 127.0.0.1 का उपयोग करें और वेब पेज से नहीं, स्क्रिप्ट से कॉल करें |
| 403 | PRO_REQUIRED | Pro लाइसेंस अमान्य हो गया है, या पिन किए गए कर्नेल के लिए Pro चाहिए | Pro का नवीनीकरण करें या उसे फिर से सक्रिय करें |
| 404 | not_found | ऐसा कोई पथ या मेथड नहीं है | “एंडपॉइंट सूची” देखें |
| 404 | PROFILE_NOT_FOUND | प्रोफ़ाइल मौजूद नहीं है या ट्रैश में है | प्रोफ़ाइल सूची फिर से प्राप्त करें |
| 409 | IDEMPOTENCY_CONFLICT、IDEMPOTENCY_RESULT_GONE | अनुरोध कुंजी में टकराव, या उससे बनी कोई प्रोफ़ाइल हटा दी गई है | नई अनुरोध कुंजी इस्तेमाल करें |
| 413 | request_too_large | अनुरोध बॉडी 96 KiB से बड़ी है | इसे कई बैच में बाँटें |
| 429 | rate_limited、IDEMPOTENCY_CAPACITY | बहुत ज़्यादा अनुरोध, या 24 घंटे में 1,000 अनुरोध कुंजियों की सीमा पूरी | कुछ देर बाद फिर कोशिश करें |
| 502 | MCP_REQUEST_FAILED आदि | अन्य विफलताएँ — जैसे कर्नेल गायब होना, प्रॉक्सी जाँच विफल होना या कोई बची हुई प्रक्रिया | message के अनुसार कार्रवाई करें |
| 504 | BROKER_TIMEOUT | Prism ने 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"]) # closedNode.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 का उपयोग करें।