---
sidebar:
  order: 1
title: HTTP API
description: मौजूदा HTTP API से प्रमाणीकरण करें, टूल खोजें और बदलावों की पुष्टि करें.
---

प्रोडक्ट API के अनुरोध अपने भरोसेमंद Influence ओरिजिन पर भेजें, जैसे `https://influence.so`. दस्तावेज़ों का डोमेन प्रोडक्ट API के अनुरोध स्वीकार नहीं करता. नीचे दिए गए पथ ज्यों के त्यों, बिना क्वेरी पैरामीटर इस्तेमाल करें.

## सीमित अनुमतियों वाली API कुंजी बनाएँ [#create-a-scoped-api-key]

[Influence की सेटिंग](https://influence.so/sign-in?next=%2Fapp%2Fsettings%2Faccount%23settings-developer) में ऐप्स और ऑटोमेशन → API कुंजियाँ खोलें. ज़रूरी अनुमतियाँ और समय सीमा चुनें. सिर्फ़ एक बार दिखाई जाने वाली कुंजी को अपने सीक्रेट स्टोर में `PUBLISH_API_TOKEN` के नाम से रखें. उसे `Authorization: Bearer …` में भेजें; URL, अनुरोध की बॉडी या चैट में कभी न डालें. ज़रूरत खत्म होने पर उसे रद्द करें.

## टूल खोजें और खाते पढ़ें [#discover-tools-and-make-a-read]

`PUBLISH_API_URL` में भरोसेमंद ओरिजिन सेट करें. इन उदाहरणों में माना गया है कि आपके प्रोसेस में `PUBLISH_API_TOKEN` पहले से है. `accountList` के लिए `integrations:read` ज़रूरी है; आगे के पेज पाने के लिए उसके पेजिनेशन फ़ील्ड अपनाएँ.

```sh
export PUBLISH_API_URL="https://influence.so"
curl "$PUBLISH_API_URL/api/v1/tools" \
  -H "Authorization: Bearer $PUBLISH_API_TOKEN"

curl "$PUBLISH_API_URL/api/v1/tools/accountList/call" \
  -H "Authorization: Bearer $PUBLISH_API_TOKEN" \
  -H 'Content-Type: application/json' \
  --data '{"input":{}}'
```

## अनुरोध के पथ [#request-paths]

| मेथड | पथ | उद्देश्य |
| --- | --- | --- |
| `GET` | `/api/v1/tools` | इस क्रेडेंशियल के लिए उपलब्ध टूल की सूची लें. |
| `POST` | `/api/v1/tools/{tool}/call` | ऐसा टूल कॉल करें जिसे पुष्टि नहीं चाहिए; इनमें पहले से अनुमति मिले अपलोड को आगे बढ़ाने वाली कार्रवाइयाँ भी शामिल हैं. |
| `POST` | `/api/v1/tools/{tool}/prepare` | लिखने की कार्रवाई चलाए बिना उसका सटीक अनुरोध तैयार करें. |
| `POST` | `/api/v1/tools/{tool}/confirm` | लिखने के तैयार अनुरोध की पुष्टि करें. |
| `POST` | `/api/v1/media/import` | छोटे बाइनरी इमेज अपलोड के तैयार अनुरोध की पुष्टि करें. |

JSON टूल अनुरोधों में `Content-Type: application/json` और सिर्फ़ `input` वाली बॉडी होती है: `{"input":{…}}`. हर टूल का इनपुट स्कीमा मौजूदा टूल कैटलॉग से लें.

## कार्रवाइयाँ तैयार करें और पुष्टि करें [#prepare-and-confirm-actions]

कैटलॉग का `confirmation` फ़ील्ड इस्तेमाल करें: पढ़ने की कार्रवाइयों को आम तौर पर पुष्टि नहीं चाहिए, लेकिन इनसाइट्स रीफ़्रेश करने के लिए पढ़ने की कार्रवाई होने पर भी पुष्टि चाहिए. अपलोड पार्ट खोजना, अपलोड पूरा करना और रद्द करना पहले से अनुमति मिले अपलोड को `/call` से आगे बढ़ाते हैं.

1. सटीक बिज़नेस इनपुट `/prepare` पर भेजें. सफल जवाब में `status: "confirmation_required"`, `confirmationCapability`, `expiresAt`, `inputDigest` और वैकल्पिक `summary` होते हैं.
2. समय सीमा खत्म होने से पहले वही इनपुट `/confirm` पर भेजें. लौटाई गई कैपेबिलिटी `X-Publish-Confirmation` में और कॉलर की बनाई नई कुंजी `Idempotency-Key` में दें.
3. इनपुट, कैपेबिलिटी और कुंजी साथ रखें. पुष्टि बीच में रुक जाए या अनिश्चित हो, तो उसी अनुरोध के लिए तीनों दोबारा इस्तेमाल करें. अनिश्चित नतीजे से उबरने के लिए उसकी जगह नया अनुरोध तैयार न करें.

इडेम्पोटेंसी कुंजी में `A–Z`, `a–z`, `0–9`, `.`, `_`, `:` और `-` के 16–200 कैरेक्टर होते हैं. पुष्टि की कैपेबिलिटी ऐसे सीक्रेट मान हैं जिनकी आंतरिक बनावट पर निर्भर नहीं करना चाहिए. `/call` या `/prepare` को भेजी गई कुंजी पुष्टि किए गए लिखने के अनुरोध को आरक्षित नहीं करती.

ट्रांसपोर्ट की पुष्टि, पब्लिशिंग की मंज़ूरी से अलग है. पब्लिश करने या शेड्यूल बदलने के लिए पूरी मौजूदा समीक्षा दिखाएँ: खाते, टेक्स्ट, सेटिंग्स, मीडिया के असली प्रीव्यू या लिंक, शेड्यूल किया गया समय और टाइम ज़ोन. योग्य सोशल टेक्स्ट, इमेज और वीडियो समीक्षा के लिए क्लाइंट `approval: "approved"` के साथ इंसान की ताज़ा, स्पष्ट मंज़ूरी बता सकता है; वह सहमति न गढ़े और तैयारी को मंज़ूरी न माने. Influence इसे क्लाइंट की बताई मंज़ूरी के रूप में दर्ज करता है. समर्थित एम्बेडेड कार्ड या साइन इन करके की गई समीक्षा में इंसान की कार्रवाई उसी माध्यम से दर्ज होती है.

TikTok Direct में [समीक्षा के क्रम](/hi/developers/mcp#prepare-finished-content) के ज़रिए चैट में स्पष्ट चुनाव और सहमति दी जा सकती है. पूरे चुनाव `campaignReview` से सहेजें, फिर कार्रवाई करने से पहले अपडेट की गई समीक्षा की नई मंज़ूरी लें. समीक्षा कार्ड वैकल्पिक है. सामान्य API/CLI शेड्यूलिंग AI शेड्यूलिंग सीमा का इस्तेमाल नहीं करती; अलग [MCP और Influence IQ सीमा](/hi/help/ai-assistants#scheduling-allowance) उन प्रक्रियाओं पर लागू रहती है, भले सहेजी गई AI समीक्षा को बाद में Influence में मंज़ूरी दी जाए. प्लान और सेवा प्रदाता की दूसरी ज़रूरतें भी लागू रहती हैं. आगे की कार्रवाई से पहले सहेजी गई रसीद पढ़ें; `needs_review` का मतलब स्थिति का मिलान करके उसे सुलझाना है, फिर भेजना नहीं.

## त्रुटियाँ और अनिश्चित नतीजे सँभालें [#handle-errors-and-uncertain-results]

HTTP स्टेटस और जवाब की बॉडी दोनों जाँचें. सफल टूल `{"ok":true,"toolName":"…","output":{…}}` लौटाते हैं. टूल की विफलताएँ `{"ok":false,"toolName":"…","error":{"code":"…","message":"…","retryable":false}}` लौटाती हैं और HTTP 200 के साथ भी आ सकती हैं. ट्रांसपोर्ट की विफलताएँ `ok` या `toolName` के बिना `{"error":{"code":"…","message":"…","retryable":false}}` इस्तेमाल करती हैं.

401 का मतलब प्रमाणीकरण ज़रूरी है; समय सीमा या रद्द किए जाने की स्थिति जाँचें. अनुमति न हो तो सही ऐक्सेस देना होगा, बार-बार अनुरोध भेजना हल नहीं है. 503 का मतलब सेवा उपलब्ध न होना या किसी दूसरे शेड्यूलिंग अनुरोध से वर्कस्पेस अपडेट होना हो सकता है. लौटाया गया त्रुटि कोड और दोबारा कोशिश के निर्देश अपनाएँ; पब्लिशिंग की कार्रवाई अपने आप फिर न चलाएँ. टाइमआउट यह साबित नहीं करता कि लिखने की कार्रवाई विफल रही: पुष्टि का डेटा रखें और फिर भेजने से पहले मौजूदा स्थिति पढ़ें. स्वीकार किया जाना, शेड्यूल होना और पब्लिश होना अलग नतीजे हैं.

## मीडिया अपलोड करें [#upload-media]

लोकल फ़ाइल के लिए SDK के `uploadMedia` या CLI के `media:upload` को प्राथमिकता दें. वे वही मल्टीपार्ट अपलोड टूल इस्तेमाल करते हैं और दोबारा कोशिश के लिए स्थिर `clientKey` रखते हैं. सिर्फ़ तैयार नतीजे को, जिसमें `assetId` हो, जोड़ा जा सकता है. अनुमति मिले HTTPS लिंक के लिए `url` और वैकल्पिक `name` के साथ `mediaImport` इस्तेमाल करें. असली होस्ट फ़ाइल रेफ़रेंस अलग `file` ऑब्जेक्ट इस्तेमाल करते हैं; सार्वजनिक URL के लिए गढ़ी हुई होस्ट फ़ाइल ID की ज़रूरत नहीं. लोकल फ़ाइल पथ डाउनलोड URL नहीं है. [मीडिया की सीमाएँ](/hi/help/media) देखें: HTTPS वीडियो इंपोर्ट की सीमा 250 MiB है, भले सीधे अपलोड से उससे बड़ा तैयार MP4 स्वीकार किया जा सकता हो.

`POST /api/v1/media/import` मौजूदा छोटे इमेज ट्रांसपोर्ट का समर्थन करता है: सटीक अपलोड डिस्क्रिप्टर के साथ `mediaImport` तैयार करें, फिर वही बाइट `application/octet-stream` के रूप में भेजें. `X-Publish-Confirmation`, `Idempotency-Key` और URI-एन्कोड किए गए JSON डिस्क्रिप्टर वाला `X-Publish-Upload` शामिल करें. बाइट का आकार और SHA-256 डिस्क्रिप्टर से मेल खाने चाहिए. इस ट्रांसपोर्ट की सीमा 3 MiB है; बड़ी समर्थित फ़ाइल के लिए अपलोड हेल्पर इस्तेमाल करें. अपलोड करने से पब्लिशिंग की मंज़ूरी कभी नहीं मिलती.

[API रेफ़रेंस देखें](/hi/api-reference) या [OpenAPI स्पेसिफ़िकेशन डाउनलोड करें](/specs/influence.openapi.json).
