> ## 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.

# v1 से v2

<div id="standard-v11-compared-to-x-api-v2">
  ## Standard v1.1 की X API v2 से तुलना
</div>

यदि आप Standard v1.1 के GET statuses/show और GET statuses/lookup के साथ काम कर रहे हैं, तो यह गाइड आपको Standard और X API v2 पोस्ट्स लुकअप एंडपॉइंट्स के बीच की समानताओं और अंतरों को समझने में मदद करेगी।

आपको हमारा [विज़ुअल डेटा फ़ॉर्मैट माइग्रेशन टूल](/hi/x-api/migrate/data-format-migration) भी उपयोगी लग सकता है, जिससे आप [X API v1.1 डेटा फ़ॉर्मैट](/hi/x-api/fundamentals/data-dictionary) और [X API v2 फ़ॉर्मैट](/hi/x-api/fundamentals/data-dictionary) के बीच के अंतर तेज़ी से देख सकते हैं।

* **समानताएँ**
  * OAuth 1.0a उपयोगकर्ता संदर्भ
  * प्रति अनुरोध पोस्ट्स की सीमाएँ
  * पोस्ट एडिट हिस्ट्री और मेटाडेटा के लिए समर्थन

* **अंतर**
  * एंडपॉइंट URL
  * ऐप और प्रोजेक्ट की आवश्यकताएँ
  * रिस्पॉन्स डेटा फ़ॉर्मैट
  * रिक्वेस्ट पैरामीटर्स

<div id="similarities">
  ### समानताएं
</div>

<div id="oauth-10a-user-context-authentication-method">
  #### OAuth 1.0a उपयोगकर्ता संदर्भ प्रमाणीकरण विधि
</div>

मानक एंडपॉइंट [OAuth 1.0a User Context](/hi/resources/fundamentals/authentication) का समर्थन करता है, जबकि नया X API v2 पोस्ट लुकअप एंडपॉइंट [OAuth 1.0a User Context](/hi/resources/fundamentals/authentication) और [OAuth 2.0 App-Only](/hi/resources/fundamentals/authentication), दोनों का समर्थन करता है। इसलिए, यदि आप पहले मानक v1.1 पोस्ट लुकअप एंडपॉइंट्स में से किसी एक का उपयोग कर रहे थे, तो X API v2 संस्करण पर माइग्रेट करने के बाद भी आप वही प्रमाणीकरण विधि इस्तेमाल करते रह सकते हैं।

शुरुआत करने के लिए App-Only प्रमाणीकरण संभवतः सबसे आसान तरीका है। ऐप Access Token जनरेट करने का तरीका जानने के लिए, [इस OAuth 2.0 App-only guide](/hi/resources/fundamentals/authentication) देखें।

<div id="posts-per-request-limits">
  #### प्रति अनुरोध पोस्ट्स की सीमाएँ
</div>

v1.1 [GET statuses/lookup](https://developer.x.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/get-statuses-lookup) एंडपॉइंट आपको प्रति अनुरोध अधिकतम 100 पोस्ट्स निर्दिष्ट करने की अनुमति देता है। यह GET /tweets एंडपॉइंट पर भी लागू होता है। पूरे 100 पोस्ट्स निर्दिष्ट करने के लिए, `ids` पैरामीटर को क्वेरी पैरामीटर के रूप में [Post IDs](/hi/resources/fundamentals/x-ids) की कॉमा से अलग की गई सूची के साथ उपयोग करें।

**पोस्ट संपादन इतिहास और मेटाडेटा के लिए समर्थन**

दोनों संस्करण ऐसा मेटाडेटा प्रदान करते हैं, जो किसी भी संपादन इतिहास का विवरण देता है। अधिक जानकारी के लिए Post लुकअप API संदर्भ और [Edit Posts fundamentals page](/hi/x-api/fundamentals/edit-posts) देखें।

<div id="differences">
  ### अंतर
</div>

<div id="endpoint-urls">
  #### एंडपॉइंट URL
</div>

* **Standard v1.1 एंडपॉइंट:**
  * `https://api.x.com/1.1/statuses/show`
  * `https://api.x.com/1.1/statuses/lookup`

* **X API v2 एंडपॉइंट:**
  * `https://api.x.com/2/tweets`
  * `https://api.x.com/2/tweets/:id`

<div id="app-and-project-requirements">
  #### ऐप और प्रोजेक्ट आवश्यकताएँ
</div>

प्रमाणीकरण के लिए X API v2 एंडपॉइंट्स को किसी [डेवलपर ऐप](/hi/resources/fundamentals/developer-apps) से जुड़े [प्रोजेक्ट](/hi/resources/fundamentals/developer-apps) के क्रेडेंशियल्स की आवश्यकता होती है। X API v1.1 एंडपॉइंट्स ऐप्स के क्रेडेंशियल्स या किसी ऐप से जुड़े ऐप्स के क्रेडेंशियल्स का उपयोग कर सकते हैं।

<div id="response-data-format">
  #### प्रतिक्रिया डेटा प्रारूप
</div>

मानक v1.1 और X API v2 endpoint संस्करणों के बीच एक महत्वपूर्ण अंतर यह है कि payload में फ़ील्ड्स कैसे चुने जाते हैं।

मानक endpoints में, कई response फ़ील्ड्स डिफ़ॉल्ट रूप से शामिल होते हैं, और अतिरिक्त फ़ील्ड्स निर्दिष्ट करने के लिए parameters का उपयोग किया जा सकता है।

हालाँकि, X API v2 डिफ़ॉल्ट रूप से केवल पोस्ट `id` और `text` फ़ील्ड्स देता है। अतिरिक्त फ़ील्ड्स और objects के लिए [fields](/hi/x-api/fundamentals/fields) और [expansions](/hi/x-api/fundamentals/expansions) parameters का उपयोग करना आवश्यक है। विस्तारित फ़ील्ड्स response के भीतर `includes` object में लौटते हैं, जिन्हें IDs का मिलान करके मुख्य पोस्ट object से जोड़ा जा सकता है।

फ़ील्ड्स और expansions के उपयोग के बारे में अधिक जानकारी के लिए, [फ़ील्ड्स और expansions का उपयोग कैसे करें](/hi/x-api/fundamentals/data-dictionary) गाइड देखें। एक [डेटा प्रारूप माइग्रेशन गाइड](/hi/x-api/fundamentals/fields) भी मानक v1.1 फ़ील्ड्स को नए v2 फ़ील्ड्स से मैप करती है।

इसके अलावा, X API v2 objects के लिए नए JSON डिज़ाइन पेश करता है, जिनमें पोस्ट और [user](/hi/x-api/fundamentals/data-dictionary#user) objects शामिल हैं:

* मानक endpoints पोस्ट objects को `statuses` array में लौटाते हैं, जबकि X API v2 `data` array का उपयोग करता है।
* X API v2 में Retweeted और Quoted Tweets, "statuses" शब्दावली की जगह लेते हैं।
* `like` जैसी नई शब्दावली, `favorites` और `favourites` जैसे शब्दों की जगह लेती है।
* जिन attributes के कोई मान नहीं होते (उदा., `null`), उन्हें X API v2 payloads में शामिल नहीं किया जाता।

X API v2 में पोस्ट object में निम्न जैसे नए फ़ील्ड्स शामिल हैं:

* `conversation_id`
* दो नए [annotations](/hi/x-api/fundamentals/post-annotations) फ़ील्ड्स (`context` और `entities`)
* नए [metrics](/hi/x-api/fundamentals/metrics) फ़ील्ड्स
* `reply_setting` फ़ील्ड, जो दिखाती है कि किसी दिए गए पोस्ट का जवाब कौन दे सकता है

<div id="request-parameters">
  #### अनुरोध पैरामीटर
</div>

निम्नलिखित मानक v1.1 अनुरोध पैरामीटरों के समकक्ष X API v2 में उपलब्ध हैं:

| Standard | X API v2 |
| :------- | :------- |
| `id`     | `ids`    |

कुछ मानक v1.1 पैरामीटर X API v2 में **समर्थित नहीं** हैं:

| Standard               | Comment                                                                                                                                |
| :--------------------- | :------------------------------------------------------------------------------------------------------------------------------------- |
| `tweet_mode`           | इसे `fields` और `expansions` की कार्यक्षमता से प्रतिस्थापित किया गया है।                                                               |
| `trim_user`            | इसे `fields` और `expansions` से प्रतिस्थापित किया गया है। उपयोगकर्ता डेटा के लिए `author_id` expansion और `user.fields` का उपयोग करें। |
| `include_my_retweet`   | प्रमाणित उपयोगकर्ता द्वारा रीट्वीट की गई पोस्ट्स के लिए स्रोत पोस्ट की ID प्रदान करता है।                                              |
| `include_entities`     | payload में entities को नियंत्रित करने के लिए `fields` और `expansions` का उपयोग करें।                                                  |
| `include_ext_alt_text` | अगर alt text मौजूद है, तो media entity में `ext_alt_text` फ़ील्ड जोड़ता है।                                                            |
| `include_card_uri`     | कोई ads card अटैच होने पर `card_uri` जोड़ता है।                                                                                        |
| `map`                  | v1.1 में null किए गए फ़ील्ड्स के बजाय, X API v2 में अनुपलब्ध पोस्ट्स के लिए पोस्ट ID और त्रुटि संदेश लौटाता है।                        |

<div id="code-examples">
  ### कोड उदाहरण
</div>

निम्न उदाहरण मानक v1.1 endpoints और उनके v2 समकक्ष दिखाते हैं। क्रेडेंशियल्स को अपने वास्तविक टोकन से बदलें। v2 endpoints के लिए, टोकन किसी [डेवलपर ऐप](/hi/resources/fundamentals/developer-apps/overview) का होना चाहिए, जो किसी [Project](/hi/resources/fundamentals/developer-apps/overview) के भीतर हो।

v1.1 के response payloads, v2 से अलग होंगे। v2 में, आप [फ़ील्ड्स](/hi/x-api/fundamentals/fields) और [expansions](/hi/x-api/fundamentals/expansions) parameters का उपयोग करके अलग-अलग फ़ील्ड्स का अनुरोध कर सकते हैं।

**एकाधिक पोस्ट्स लुकअप: v1.1 `GET statuses/lookup` → v2 `GET /tweets`**

<CodeGroup dropdown>
  ```bash cURL (v1.1) theme={null}
  curl --request GET \
    --url 'https://api.x.com/1.1/statuses/lookup.json?id=1460323737035677698%2C1460323743339741184' \
    --header 'Authorization: Bearer $ACCESS_TOKEN'
  ```

  ```bash cURL (v2) theme={null}
  curl --request GET \
    --url 'https://api.x.com/2/tweets?ids=1460323737035677698%2C1460323743339741184&tweet.fields=created_at&expansions=author_id&user.fields=created_at' \
    --header 'Authorization: Bearer $ACCESS_TOKEN'
  ```

  ```python Python (v2) theme={null}
  import requests

  bearer_token = "YOUR_BEARER_TOKEN"
  url = "https://api.x.com/2/tweets"

  params = {
      "ids": "1460323737035677698,1460323743339741184",
      "tweet.fields": "created_at",
      "expansions": "author_id",
      "user.fields": "created_at"
  }

  headers = {"Authorization": f"Bearer {bearer_token}"}
  response = requests.get(url, headers=headers, params=params)

  print(response.json())
  ```

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

  client = Client(bearer_token="YOUR_BEARER_TOKEN")

  # IDs, फ़ील्ड्स और expansions के साथ एकाधिक पोस्ट्स प्राप्त करें
  response = client.posts.get_posts(
      ids=["1460323737035677698", "1460323743339741184"],
      tweet_fields=["created_at"],
      expansions=["author_id"],
      user_fields=["created_at"]
  )

  for post in response.data:
      print(f"Post: {post.text}")
      print(f"Created at: {post.created_at}")
  ```

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

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

  // IDs, फ़ील्ड्स और expansions के साथ एकाधिक पोस्ट्स प्राप्त करें
  const response = await client.posts.getPosts({
    ids: ["1460323737035677698", "1460323743339741184"],
    tweetFields: ["created_at"],
    expansions: ["author_id"],
    userFields: ["created_at"],
  });

  response.data?.forEach((post) => {
    console.log(`Post: ${post.text}`);
    console.log(`Created at: ${post.created_at}`);
  });
  ```
</CodeGroup>

**एकल पोस्ट लुकअप: v1.1 `GET statuses/show/:id` → v2 `GET /tweets/:id`**

<CodeGroup dropdown>
  ```bash cURL (v1.1) theme={null}
  curl --request GET \
    --url 'https://api.x.com/1.1/statuses/show.json?id=1460323737035677698' \
    --header 'Authorization: Bearer $ACCESS_TOKEN'
  ```

  ```bash cURL (v2) theme={null}
  curl --request GET \
    --url 'https://api.x.com/2/tweets/1460323737035677698?tweet.fields=created_at&expansions=author_id&user.fields=created_at' \
    --header 'Authorization: Bearer $ACCESS_TOKEN'
  ```

  ```python Python (v2) theme={null}
  import requests

  bearer_token = "YOUR_BEARER_TOKEN"
  url = "https://api.x.com/2/tweets/1460323737035677698"

  params = {
      "tweet.fields": "created_at",
      "expansions": "author_id",
      "user.fields": "created_at"
  }

  headers = {"Authorization": f"Bearer {bearer_token}"}
  response = requests.get(url, headers=headers, params=params)

  print(response.json())
  ```

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

  client = Client(bearer_token="YOUR_BEARER_TOKEN")

  # ID से एक पोस्ट प्राप्त करें
  response = client.posts.get(
      "1460323737035677698",
      tweet_fields=["created_at"],
      expansions=["author_id"],
      user_fields=["created_at"]
  )

  print(f"पोस्ट: {response.data.text}")
  print(f"बनाने का समय: {response.data.created_at}")
  ```

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

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

  // ID से एक पोस्ट प्राप्त करें
  const response = await client.posts.get("1460323737035677698", {
    tweetFields: ["created_at"],
    expansions: ["author_id"],
    userFields: ["created_at"],
  });

  console.log(`पोस्ट: ${response.data?.text}`);
  console.log(`बनाने का समय: ${response.data?.created_at}`);
  ```
</CodeGroup>
