Vfinity2.0 α
डेवलपर्स

स्थानीय API

HTTP या WebSocket पर, अपनी स्वयं की स्क्रिप्ट से कमांड चलाएँ, इवेंट ट्रिगर करें और अपनी स्ट्रीम का अनुसरण करें।

आपकी स्क्रिप्ट

POST /api/trigger
Host: 127.0.0.1:21424
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json

{
  "name": "hype",
  "data": {
    "name": "mochi"
  }
}
भेज रहे हैं…

इवेंट

API ट्रिगर

hype

VTS हॉटकी · Star eyes

POST /api/trigger उस प्रत्येक मैपिंग को चलाता है जिसका API ट्रिगर वह नाम रखता है।

उसी कंप्यूटर पर किसी स्क्रिप्ट, स्ट्रीम डेक प्लगइन या अपने स्वयं के ऐप से Vfinity को चलाएँ। किसी भी ऐप कमांड को चलाने या अपने किसी इवेंट को ट्रिगर करने के लिए एक JSON संदेश भेजें, और उपहार, चैट और परिणामों के घटित होने पर उन्हें सुनने के लिए एक WebSocket पर सुनें।

स्थानीय API आपके OBS ओवरले के साथ ओवरले पोर्ट पर एक ही सर्वर साझा करता है। यह केवल इसी कंप्यूटर पर चलने वाले प्रोग्रामों को उत्तर देता है, और केवल तब जब वे आपका एक्सेस टोकन ले जाते हैं।

21424
साझा ओवरले और API पोर्ट
Bearer
प्रत्येक अनुरोध पर टोकन
127.0.0.1
केवल यह कंप्यूटर

अल्फ़ा

Vfinity 2.0 एक अल्फ़ा वर्ज़न है, और बिल्ड के बीच सुविधाएँ बदल सकती हैं। लाइव जाने से पहले, प्रत्येक अपडेट के बाद अपने इंटीग्रेशन का फिर से परीक्षण करें।

स्थानीय API चालू करें

स्थानीय सर्वर कार्ड खोलें

सेटिंग्सकनेक्शन पर जाएँ और उन्नत तक स्क्रॉल करें। स्थानीय सर्वर कार्ड खोलें। जब सर्वर चालू होता है तो इसकी स्थिति पंक्ति Listening on http://127.0.0.1:21424 पढ़ती है।

इसे चालू करें

स्थानीय API सक्षम करें चालू करें। पहली बार Vfinity आपके लिए एक API एक्सेस टोकन बनाता है।

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

टोकन के नीचे कॉपी करें पर क्लिक करें और इसे अपनी स्क्रिप्ट में पेस्ट करें। कार्ड उपयोग करने के लिए दो पते भी सूचीबद्ध करता है, स्थिति URL और WebSocket URL; कॉपी करने के लिए किसी एक पर क्लिक करें।

टोकन जनरेट करें टोकन को बदल देता है। पुराने टोकन का उपयोग करने वाली प्रत्येक स्क्रिप्ट तुरंत डिस्कनेक्ट हो जाती है, जबकि ओवरले और आपके लाइव कनेक्शन चलते रहते हैं। आप अपना स्वयं का टोकन भी टाइप कर सकते हैं: 32 से 256 अक्षर, अंक, डैश या अंडरस्कोर।

पोर्ट उसी कार्ड में साझा सर्वर पोर्ट के रूप में रहता है। आपके द्वारा Vfinity को पुनरारंभ करने के बाद एक नया पोर्ट प्रभावी होता है। यदि लॉन्च के समय पोर्ट व्यस्त है, तो Vfinity दूसरा चुनता है और कार्ड वह पता दिखाता है जिसका वह वास्तव में उपयोग करता है।

यह PC

VfinityVTube Studio8001

Vfinity हॉटकी दबाने और आपके मॉडल को हिलाने के लिए पोर्ट 8001 पर VTube Studio API से कनेक्ट होता है।

VfinityOBS · WebSocket सर्वर4455

Vfinity सीन बदलने और स्रोत दिखाने के लिए OBS में बने WebSocket सर्वर, पोर्ट 4455 से कनेक्ट होता है।

OBS · ब्राउज़र स्रोतVfinity · ओवरले + स्थानीय API21424

OBS ब्राउज़र स्रोत थ्रो, अलर्ट और विजेट बनाने के लिए Vfinity के अपने सर्वर, पोर्ट 21424 को खोलता है।

आपकी स्क्रिप्ट्सVfinity · ओवरले + स्थानीय API21424

आपकी स्क्रिप्ट एक टोकन के साथ उसी पोर्ट 21424 पर स्थानीय API तक पहुँचती हैं।

VfinityTikTok LIVE · Twitch · Kick · YouTubeइंटरनेट

TikTok LIVE, Twitch, Kick और YouTube इंटरनेट पर पहुँचे जाते हैं। Vfinity उन प्रत्येक कनेक्शन को स्वयं खोलता है।

तीर: कनेक्शन कौन खोलता है
पोर्ट: इसके लिए कौन सुनता है

स्थानीय API और आपके ओवरले 21424 पर एक सर्वर साझा करते हैं। यह केवल इसी कंप्यूटर पर सुनता है।

अनुरोधों की जाँच कैसे की जाती है

प्रत्येक HTTP अनुरोध और प्रत्येक WebSocket कनेक्शन को इस हेडर की आवश्यकता होती है:

Authorization: Bearer YOUR_TOKEN

जब कोई अनुरोध किसी अन्य कंप्यूटर से आता है, जब टोकन गायब या गलत होता है, या जब वह ब्राउज़र Origin हेडर ले जाता है, तो अनुरोध अस्वीकार कर दिया जाता है। उस अंतिम नियम का अर्थ है कि कोई वेब पेज API को कॉल नहीं कर सकता है, भले ही वह इस कंप्यूटर पर खुला हो। एक डेस्कटॉप स्क्रिप्ट या टूल का उपयोग करें जो हेडर सेट कर सकता है।

किसी अन्य PC पर OBS के लिए ओवरले एक्सेस चालू करने से नेटवर्क पर API नहीं खुलता है, और ओवरले एक्सेस कुंजी API टोकन नहीं है।

API के उत्तर देने के लिए Vfinity का चलना आवश्यक है। ट्रे में छिपा हुआ भी गिना जाता है; आपके छोड़ने के बाद, कुछ भी नहीं सुन रहा होता है।

HTTP पर अनुरोध भेजें

अनुरोधबॉडीउत्तर
GET /api/stateकोई नहींवे कमांड जिन्हें आप चला सकते हैं, आपके इवेंट्स, स्ट्रीम आँकड़े और TikTok कनेक्शन
POST /api/trigger{"name":"…","data":{…}}ट्रिगर स्वीकार होने पर {"ok":true}
POST /api/command{"name":"…","args":…}{"ok":true,"result":…}, या {"ok":false,"error":"…"}

प्रत्येक POST के साथ Content-Type: application/json भेजें। बॉडी 64 KiB तक हो सकती है।

# मैं क्या चला सकता हूँ?
curl -H "Authorization: Bearer YOUR_TOKEN" http://127.0.0.1:21424/api/state

# सबथॉन टाइमर में 30 सेकंड जोड़ें
curl -X POST http://127.0.0.1:21424/api/command \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"timer.add","args":30}'
$headers = @{ Authorization = "Bearer YOUR_TOKEN" }

# मैं क्या चला सकता हूँ?
Invoke-RestMethod -Uri http://127.0.0.1:21424/api/state -Headers $headers

# सबथॉन टाइमर में 30 सेकंड जोड़ें
Invoke-RestMethod -Method Post -Uri http://127.0.0.1:21424/api/command `
  -Headers $headers -ContentType "application/json" `
  -Body '{"name":"timer.add","args":30}'

अपने किसी इवेंट को ट्रिगर करें

किसी इवेंट को API ट्रिगर और एक ट्रिगर का नाम दें, फिर उस नाम को /api/trigger पर पोस्ट करें। नाम केस की परवाह किए बिना मेल खाता है।

curl -X POST http://127.0.0.1:21424/api/trigger \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"raid_alarm","data":{"message":"Raid incoming","level":3}}'

data में प्रत्येक फ़ील्ड एक टेम्प्लेट वेरिएबल बन जाता है जिसे इवेंट के स्टेप्स उपयोग कर सकते हैं, इसलिए {message} वाला एक स्पीच स्टेप "Raid incoming" पढ़ता है। टेक्स्ट, नंबर और true या false मान गुजरते हैं; नेस्टेड ऑब्जेक्ट और सूचियाँ नहीं। फ़ील्ड नाम एक अक्षर से शुरू होना चाहिए, और पहले 50 फ़ील्ड गिने जाते हैं।

उत्तर {"ok":true} का अर्थ है कि Vfinity ने ट्रिगर स्वीकार कर लिया। जो इवेंट बंद है, रुका हुआ है, या अपने कूलडाउन द्वारा रोका गया है, वह अभी भी कुछ नहीं करता है, इसलिए यदि आपको यह जानने की आवश्यकता है कि क्या चला तो WebSocket पर actionResult को सुनें।

एक कमांड चलाएँ

कमांड वही नामित एक्शन हैं जिनका उपयोग हॉटकी, क्विक डेक पैड्स और कमांड स्टेप्स करते हैं। GET /api/state उन कमांड्स को सूचीबद्ध करता है जो यह बिल्ड अभी पेश करता है, क्योंकि कुछ केवल तभी मौजूद होते हैं जब ऐप का उनका भाग चल रहा हो।

{ "name": "control.panic" }
{ "name": "deck.press", "args": "Applause" }
{ "name": "giveaway.draw" }
{ "name": "sceneCard.showBrb" }
{ "name": "mapping.trigger", "args": "YOUR_EVENT_ID" }

mapping.trigger आपके किसी एक इवेंट को ऐसे चलाता है जैसे कि उसका ट्रिगर चालू हो गया हो, और उत्तर देता है कि उसने कितने रन शुरू किए। यह किसी इवेंट की ID या API ट्रिगर का नाम लेता है। ID प्राप्त करने के लिए, Events टैब पर इवेंट पर राइट-क्लिक करें और इवेंट ID कॉपी करें चुनें।

आज़माएँ
इवेंट पंक्ति पर राइट-क्लिक करें
Rose
Lion
चैट कमांड
हर 30 मिनट
फ़ॉलो

mapping.trigger के साथ उपयोग करने के लिए किसी इवेंट पर राइट-क्लिक करें और इवेंट ID कॉपी करें चुनें। पंक्ति पर राइट-क्लिक करने का प्रयास करें।

प्रत्येक कमांड को उसके तर्क के साथ कमांड में सूचीबद्ध किया गया है।

किसी स्क्रिप्ट से TikTok LIVE कनेक्ट करें

कमांडतर्कयह क्या करता है
tiktok.connectवैकल्पिक {"username","autoRejoin","waitForLive"}आपकी सहेजी गई सेटिंग्स के साथ कनेक्ट करता है, केवल इस सत्र के लिए ओवरराइड किया गया
tiktok.disconnectकोई नहींLIVE छोड़ता है और पुनः कनेक्ट करना बंद करता है
tiktok.cancelRejoinकोई नहींइंतज़ार करना या पुनः शामिल होना रोकता है, और जुड़े हुए LIVE को कनेक्ट रखता है
{
  "name": "tiktok.connect",
  "args": { "username": "yourname", "autoRejoin": true, "waitForLive": true }
}

उत्तर {"ok":true,"result":{"accepted":true}} का अर्थ है कि अनुरोध कतारबद्ध किया गया था, न कि LIVE से जुड़ा गया था। /api/state के tiktok भाग, या WebSocket पर tiktokStatus को देखें: Vfinity के LIVE में होने पर room.state "connected" पढ़ता है।

WebSocket पर सुनें

समान Authorization हेडर के साथ ws://127.0.0.1:21424/api/ws से कनेक्ट करें। आप HTTP की तरह ही समान अनुरोध भेज सकते हैं, प्रत्येक आपके द्वारा चुने गए requestId के साथ, और Vfinity आपकी स्ट्रीम पर होने वाली गतिविधियों को आपके पास वापस स्ट्रीम करता है।

// npm install ws
const WebSocket = require('ws');

const socket = new WebSocket('ws://127.0.0.1:21424/api/ws', {
  headers: { Authorization: 'Bearer YOUR_TOKEN' },
});

socket.on('open', () => {
  socket.send(JSON.stringify({ type: 'command', name: 'timer.add', args: 30, requestId: '1' }));
});

socket.on('message', (raw) => {
  const message = JSON.parse(raw);
  if (message.type === 'event' && message.event === 'gift') {
    console.log(`${message.data.nickname} sent ${message.data.giftName}`);
  }
  if (message.type === 'response') console.log(message.requestId, message.data);
});

आप क्या भेजते हैं

{ "type": "state", "requestId": "1" }
{ "type": "command", "name": "timer.add", "args": 30, "requestId": "2" }
{ "type": "trigger", "name": "raid_alarm", "data": {}, "requestId": "3" }

प्रत्येक को एक उत्तर मिलता है: {"type":"response","requestId":"2","data":{"ok":true}}।

Vfinity क्या भेजता है

प्रॉप

प्रकार

एक उपहार जो कॉम्बो का हिस्सा है (giftType 1) कॉम्बो चलने के दौरान अपडेट भेजता है। इस पर केवल तभी कार्रवाई करें जब repeatEnd false न हो, जैसा Vfinity करता है। टाइमस्टैम्प यूनिक्स मिलीसेकंड हैं।

स्ट्रीम केवल लाइव है: कुछ भी दोहराया नहीं जाता है, और जो क्लाइंट बहुत धीमी गति से पढ़ता है वह संदेशों से चूक सकता है।

सीमाएँ और त्रुटियाँ

आपको मिलता हैकारण
HTTP 401टोकन गायब या गलत है, या अनुरोध में Origin हेडर था
HTTP 403अनुरोध किसी अन्य कंप्यूटर से आया
HTTP 503स्थानीय API सक्षम करें बंद है
HTTP 413बॉडी 64 KiB से अधिक है
HTTP 42916 WebSocket क्लाइंट पहले से कनेक्ट हैं
"busy"32 अनुरोध पहले से ही उत्तर की प्रतीक्षा कर रहे हैं
"timeout"10 सेकंड के भीतर कोई उत्तर नहीं। जो कमांड पहले ही शुरू हो चुका है वह चलता रहता है
"unknownCommand"उस नाम से कोई कमांड अभी उपलब्ध नहीं है
"failed"कमांड चला और विफल रहा; message बताता है कि क्यों
"invalidName"name गायब है, खाली है या 200 अक्षरों से अधिक लंबा है

साधारण बैकअप टोकन को छोड़ देते हैं और API बंद होने के साथ रिस्टोर होते हैं। इसे बनाए रखने के लिए बैकअप लेते समय पासवर्ड और टोकन शामिल करें पर टिक करें।

इसके बजाय Vfinity को आपसे कनेक्ट होने दें

ट्रिगर API कार्ड, जो उन्नत के अंतर्गत भी है, कनेक्शन को उलट देता है: Vfinity आपके द्वारा चलाए जाने वाले WebSocket सर्वर से एक क्लाइंट के रूप में कनेक्ट होता है। यह पहले से मौजूद सर्वर (जैसे कोई गेम या बॉट) के लिए उपयुक्त है।

स्थानीय API

आपकी स्क्रिप्ट एक टोकन के साथ पोर्ट 21424 पर Vfinity से कनेक्ट होती है। यह कमांड चला सकती है, इवेंट ट्रिगर कर सकती है, स्थिति पढ़ सकती है और प्रत्येक लाइव इवेंट प्राप्त कर सकती है।

ट्रिगर API

Vfinity आपके सर्वर से बिना किसी टोकन के, डिफ़ॉल्ट रूप से पोर्ट 8080 पर localhost पर कनेक्ट होता है। आपका सर्वर ट्रिगर और कमांड भेजता है और आपके API इवेंट्स माँग सकता है।

ट्रिगर API चालू करें, WebSocket होस्ट और WebSocket पोर्ट दर्ज करें, फिर API कनेक्ट करें पर क्लिक करें। आपका सर्वर तब भेज सकता है:

{ "type": "trigger", "name": "raid_alarm", "data": { "message": "Raid incoming" } }
{ "type": "command", "name": "timer.add", "args": 30, "requestId": "abc-1" }
{ "type": "request", "requestType": "event_list", "requestId": "abc-2" }

requestId वाले कमांड को ऐसा उत्तर मिलता है जैसे कि {"type":"response","requestType":"command","requestId":"abc-1","data":{"name":"timer.add","ok":true}}। event_list प्रत्येक इवेंट के साथ उत्तर देता है जिसमें API ट्रिगर है, इसके स्टेप्स और क्या यह चालू है, और stats कनेक्शन स्थिति और इवेंट गणना के साथ उत्तर देता है।

जो कुछ भी आपके सर्वर तक पहुँच सकता है वह इन कमांड को चला सकता है, इसलिए सर्वर को इसी कंप्यूटर पर रखें या इसके सामने अपना स्वयं का प्रमाणीकरण रखें।

संबंधित