> ## Documentation Index
> Fetch the complete documentation index at: https://generaltranslation.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# एकीकरण मार्गदर्शिका

> पोस्ट लुकअप के एकीकरण के लिए मुख्य अवधारणाएँ और सर्वोत्तम प्रक्रियाएँ

export const Button = ({href, children}) => {
  return <div className="not-prose group">
    <a href={href}>
      <button className="flex items-center space-x-2.5 py-1 px-4 bg-primary-dark dark:bg-white text-white dark:text-gray-950 rounded-full group-hover:opacity-[0.9] font-medium">
        <span>
          {children}
        </span>
        <svg width="3" height="24" viewBox="0 -9 3 24" class="h-6 rotate-0 overflow-visible"><path d="M0 0L3 3L0 6" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path></svg>
      </button>
    </a>
  </div>;
};

यह मार्गदर्शिका उन प्रमुख अवधारणाओं को समझाती है जिनकी आपको पोस्ट लुकअप एंडपॉइंट्स को अपने एप्लिकेशन में एकीकृत करने के लिए आवश्यकता है।

***

<div id="authentication">
  ## प्रमाणीकरण
</div>

सभी X API v2 एंडपॉइंट के लिए प्रमाणीकरण आवश्यक है। अपनी ज़रूरत के अनुसार उपयुक्त विधि चुनें:

| विधि                                                                                                                                | किसके लिए सबसे उपयुक्त         | क्या प्राइवेट मेट्रिक्स तक पहुंच मिलती है? |
| :---------------------------------------------------------------------------------------------------------------------------------- | :----------------------------- | :----------------------------------------- |
| [OAuth 2.0 App-Only](/hi/resources/fundamentals/authentication#oauth-2-0)                                                           | सर्वर-टू-सर्वर, सार्वजनिक डेटा | नहीं                                       |
| [PKCE के साथ OAuth 2.0 Authorization Code](/hi/resources/fundamentals/authentication#oauth-2-0-authorization-code-flow-with-pkce-2) | उपयोगकर्ता-मुखी ऐप्स           | हाँ (अधिकृत उपयोगकर्ता के पोस्ट्स के लिए)  |
| [OAuth 1.0a User Context](/hi/resources/fundamentals/authentication)                                                                | लीगेसी इंटीग्रेशन              | हाँ (अधिकृत उपयोगकर्ता के पोस्ट्स के लिए)  |

<div id="app-only-authentication">
  ### केवल ऐप प्रमाणीकरण
</div>

सार्वजनिक पोस्ट डेटा के लिए, बेयरर टोकन का उपयोग करें:

<CodeGroup dropdown>
  ```bash cURL theme={null}
  curl "https://api.x.com/2/tweets/1234567890" \
    -H "Authorization: Bearer $BEARER_TOKEN"
  ```

  ```python Python SDK theme={null}
  from xdk import Client

  client = Client(bearer_token="YOUR_BEARER_TOKEN")

  # id के आधार पर एक पोस्ट प्राप्त करें
  response = client.posts.get("1234567890")
  print(response.data)
  ```

  ```javascript JavaScript SDK theme={null}
  import { Client } from "@xdevplatform/xdk";

  const client = new Client({ bearerToken: "YOUR_BEARER_TOKEN" });

  const response = await client.posts.get("1234567890");
  console.log(response.data);
  ```
</CodeGroup>

<div id="user-context-authentication">
  ### User Context प्रमाणीकरण
</div>

निजी मेट्रिक्स तक पहुँचने के लिए, पोस्ट के लेखक की ओर से प्रमाणीकरण करें:

<Warning>
  निम्नलिखित फ़ील्ड्स के लिए User Context प्रमाणीकरण आवश्यक है:

  * `tweet.fields.non_public_metrics`
  * `tweet.fields.promoted_metrics`
  * `tweet.fields.organic_metrics`
  * `media.fields.non_public_metrics`
  * `media.fields.promoted_metrics`
  * `media.fields.organic_metrics`
</Warning>

***

<div id="fields-and-expansions">
  ## फ़ील्ड्स और expansions
</div>

X API v2 डिफ़ॉल्ट रूप से न्यूनतम डेटा रिटर्न करता है। आपको जो चाहिए, ठीक वही अनुरोध करने के लिए `fields` और `expansions` का उपयोग करें।

<div id="default-response">
  ### डिफ़ॉल्ट रिस्पॉन्स
</div>

```json theme={null}
{
  "data": {
    "id": "1234567890",
    "text": "Hello world!",
    "edit_history_tweet_ids": ["1234567890"]
  }
}
```

<div id="available-fields">
  ### उपलब्ध फ़ील्ड्स
</div>

<Accordion title="tweet.fields">
  | फ़ील्ड                | विवरण                                  |
  | :-------------------- | :------------------------------------- |
  | `created_at`          | पोस्ट बनाने का टाइमस्टैम्प             |
  | `author_id`           | लेखक की उपयोगकर्ता ID                  |
  | `public_metrics`      | लाइक, रीट्वीट, जवाब और कोट की संख्या   |
  | `entities`            | हैशटैग, मेंशन, URL, कैशटैग             |
  | `attachments`         | मीडिया कुंजियाँ, पोल ID                |
  | `conversation_id`     | थ्रेड पहचानकर्ता                       |
  | `context_annotations` | विषय/इकाई वर्गीकरण                     |
  | `in_reply_to_user_id` | वह उपयोगकर्ता जिसे जवाब दिया जा रहा है |
  | `lang`                | पता लगाई गई भाषा                       |
  | `source`              | पोस्टिंग क्लाइंट                       |
  | `possibly_sensitive`  | संवेदनशील सामग्री का फ़्लैग            |
  | `reply_settings`      | कौन जवाब दे सकता है                    |
</Accordion>

<Accordion title="user.fields (author_id expansion आवश्यक)">
  | फ़ील्ड              | विवरण                      |
  | :------------------ | :------------------------- |
  | `username`          | @handle                    |
  | `name`              | डिस्प्ले नाम               |
  | `profile_image_url` | अवतार URL                  |
  | `verified`          | सत्यापन स्थिति             |
  | `description`       | परिचय                      |
  | `public_metrics`    | फ़ॉलोअर/फ़ॉलोइंग की संख्या |
  | `created_at`        | खाता बनाने की तारीख        |
</Accordion>

<Accordion title="media.fields (attachments.media_keys expansion आवश्यक)">
  | फ़ील्ड              | विवरण                       |
  | :------------------ | :-------------------------- |
  | `url`               | मीडिया URL                  |
  | `preview_image_url` | थंबनेल URL                  |
  | `type`              | photo, video, animated\_gif |
  | `duration_ms`       | वीडियो की अवधि              |
  | `height`, `width`   | आयाम                        |
  | `alt_text`          | एक्सेसिबिलिटी टेक्स्ट       |
</Accordion>

<div id="example-with-fields">
  ### फ़ील्ड्स के साथ उदाहरण
</div>

<CodeGroup dropdown>
  ```bash cURL theme={null}
  curl "https://api.x.com/2/tweets/1234567890?\
  tweet.fields=created_at,public_metrics,entities&\
  expansions=author_id,attachments.media_keys&\
  user.fields=username,verified&\
  media.fields=url,type" \
    -H "Authorization: Bearer $BEARER_TOKEN"
  ```

  ```python Python SDK theme={null}
  from xdk import Client

  client = Client(bearer_token="YOUR_BEARER_TOKEN")

  # अतिरिक्त फ़ील्ड्स और expansions के साथ पोस्ट प्राप्त करें
  response = client.posts.get(
      "1234567890",
      tweet_fields=["created_at", "public_metrics", "entities"],
      expansions=["author_id", "attachments.media_keys"],
      user_fields=["username", "verified"],
      media_fields=["url", "type"]
  )

  print(response.data)
  print(response.includes)  # इसमें विस्तारित user और media ऑब्जेक्ट शामिल हैं
  ```

  ```javascript JavaScript SDK theme={null}
  import { Client } from "@xdevplatform/xdk";

  const client = new Client({ bearerToken: "YOUR_BEARER_TOKEN" });

  const response = await client.posts.get("1234567890", {
    tweetFields: ["created_at", "public_metrics", "entities"],
    expansions: ["author_id", "attachments.media_keys"],
    userFields: ["username", "verified"],
    mediaFields: ["url", "type"],
  });

  console.log(response.data);
  console.log(response.includes); // इसमें विस्तारित user और media ऑब्जेक्ट शामिल हैं
  ```
</CodeGroup>

***

<div id="post-edits">
  ## पोस्ट संपादन
</div>

पोस्ट्स को बनाए जाने के 30 मिनट के भीतर अधिकतम 5 बार संपादित किया जा सकता है।

<div id="how-it-works">
  ### यह कैसे काम करता है
</div>

* हर संपादन एक नई पोस्ट ID बनाता है
* `edit_history_tweet_ids` में सभी संस्करण शामिल होते हैं (सबसे पुराना पहले)
* एंडपॉइंट हमेशा सबसे नया संस्करण लौटाता है

<div id="example-response">
  ### उदाहरण रिस्पॉन्स
</div>

```json theme={null}
{
  "data": {
    "id": "1234567893",
    "text": "Hello world! (edited twice)",
    "edit_history_tweet_ids": [
      "1234567890",
      "1234567891",
      "1234567893"
    ]
  }
}
```

<Tip>
  30 मिनट की संपादन विंडो के बाद प्राप्त की गई पोस्ट्स उनके अंतिम संस्करण को दर्शाती हैं। रीयल-टाइम उपयोग के मामलों में, ध्यान रखें कि हाल ही में प्रकाशित पोस्ट्स में अभी भी संपादन किया जा सकता है।
</Tip>

***

<div id="error-handling">
  ## त्रुटि प्रबंधन
</div>

<div id="common-errors">
  ### सामान्य त्रुटियाँ
</div>

| Status | Error            | Solution                                                         |
| :----- | :--------------- | :--------------------------------------------------------------- |
| 400    | अमान्य अनुरोध    | पैरामीटर का फ़ॉर्मैट जाँचें                                      |
| 401    | अनधिकृत          | प्रमाणीकरण क्रेडेंशियल्स की पुष्टि करें                          |
| 403    | निषिद्ध          | ऐप की अनुमतियाँ जाँचें                                           |
| 404    | नहीं मिला        | पोस्ट हटा दी गई है या मौजूद नहीं है                              |
| 429    | बहुत अधिक अनुरोध | कुछ देर प्रतीक्षा करें और फिर से प्रयास करें (रेट लिमिट्स देखें) |

<div id="deleted-or-protected-posts">
  ### हटाई गई या संरक्षित पोस्ट्स
</div>

यदि कोई पोस्ट हटा दी गई है या किसी ऐसे संरक्षित खाते से है जिसे आप फ़ॉलो नहीं करते हैं:

* एकल पोस्ट लुकअप `404` लौटाता है
* मल्टी-पोस्ट लुकअप परिणामों में उस पोस्ट को शामिल नहीं करता और `errors` array देता है

```json theme={null}
{
  "data": [
    { "id": "1234567890", "text": "Available post" }
  ],
  "errors": [
    {
      "resource_id": "1234567891",
      "resource_type": "tweet",
      "title": "Not Found Error",
      "detail": "Could not find tweet with id: [1234567891]."
    }
  ]
}
```

***

<div id="best-practices">
  ## सर्वोत्तम प्रथाएँ
</div>

<CardGroup cols={2}>
  <Card title="बैच अनुरोध" icon="layer-group">
    API कॉल कम करने के लिए एक साथ अधिकतम 100 पोस्ट्स प्राप्त करने हेतु multi-Post एंडपॉइंट का उपयोग करें।
  </Card>

  <Card title="केवल आवश्यक फ़ील्ड्स का अनुरोध करें" icon="filter">
    रिस्पॉन्स का आकार और प्रोसेसिंग समय कम करने के लिए केवल वही फ़ील्ड्स निर्दिष्ट करें जिनकी आपको आवश्यकता है।
  </Card>

  <Card title="रिस्पॉन्स कैश करें" icon="database">
    एक ही सामग्री के लिए बार-बार किए जाने वाले अनुरोधों को कम करने हेतु पोस्ट डेटा को स्थानीय रूप से कैश करें।
  </Card>

  <Card title="संपादनों का ध्यान रखें" icon="clock-rotate-left">
    रीयल-टाइम ऐप्स के लिए, 30 मिनट की एडिट विंडो के बाद पोस्ट्स को फिर से फ़ेच करने पर विचार करें।
  </Card>
</CardGroup>

***

<div id="next-steps">
  ## अगले चरण
</div>

<CardGroup cols={2}>
  <Card title="API संदर्भ" icon="code" href="/hi/x-api/posts/post-lookup-by-post-id">
    एंडपॉइंट का संपूर्ण दस्तावेज़
  </Card>

  <Card title="डेटा शब्दकोश" icon="book" href="/hi/x-api/fundamentals/data-dictionary">
    सभी उपलब्ध ऑब्जेक्ट और फ़ील्ड्स
  </Card>

  <Card title="नमूना कोड" icon="github" href="https://github.com/xdevplatform/Twitter-API-v2-sample-code">
    काम करने वाले कोड उदाहरण
  </Card>

  <Card title="त्रुटि प्रबंधन" icon="triangle-exclamation" href="/hi/x-api/fundamentals/response-codes-and-errors">
    त्रुटियों को प्रभावी ढंग से संभालें
  </Card>
</CardGroup>
