> ## 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 vers v2

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="standard-v11-compared-to-x-api-v2">
  ### Standard v1.1 comparé à X API v2
</div>

Si vous avez déjà travaillé avec les endpoints standard v1.1 GET users/show et GET users/lookup, l’objectif de ce guide est de vous aider à comprendre les points communs et les différences entre les endpoints standard v1.1 et les endpoints de recherche d’utilisateurs de X API v2.

* **Similarités**
  * Contexte utilisateur OAuth 1.0a
  * Limites d’utilisateurs par requête
* **Différences**
  * URL des endpoints
  * Exigences relatives aux App et aux projets
  * Format des données de réponse
  * Paramètres de requête

<div id="similarities">
  #### Similarités
</div>

**Méthode d’authentification OAuth 1.0a en contexte utilisateur**

L’endpoint standard prend en charge [OAuth 1.0a User Context](/fr/resources/fundamentals/authentication#oauth-1-0a-2), tandis que les nouveaux endpoints de recherche d’utilisateurs de la X API v2 prennent en charge à la fois OAuth 1.0a User Context et [App only](/fr/resources/fundamentals/authentication#oauth-2-0). Par conséquent, si vous utilisiez auparavant l’un des endpoints standard v1.1 de recherche d’utilisateurs, vous pouvez continuer à utiliser la même méthode d’authentification en migrant vers la version X API v2.

Selon la bibliothèque ou le package d’authentification que vous utilisez, l’authentification App only est probablement le moyen le plus simple pour commencer et peut être configurée au moyen d’un simple en-tête de requête. Pour savoir comment générer un jeton d’accès App only, consultez [ce guide App only](/fr/resources/fundamentals/authentication#bearer-token-also-known-as-app-only).

**Limites d’utilisateurs par requête**

L’endpoint standard v1.1 GET users/lookup vous permet de spécifier 100 utilisateurs par requête. Il en va de même pour les endpoints GET /users et GET /users/by. Pour spécifier 100 utilisateurs, vous devez transmettre le paramètre ids (GET /users) ou le paramètre username (GET /users/by) en tant que paramètre de requête, et inclure la liste des id/noms d’utilisateur dans une liste séparée par des virgules.

<div id="differences">
  #### Différences
</div>

**URLs des endpoints**

* Endpoints standard v1.1 :
  * [https://api.x.com/1.1/users/show](https://api.x.com/1.1/users/show) (recherche par id unique ou par nom d’utilisateur)
  * [https://api.x.com/1.1/users/lookup](https://api.x.com/1.1/users/lookup) (recherche par plusieurs id ou noms d’utilisateur)
* Endpoint X API v2 :
  * [https://api.x.com/2/users](https://api.x.com/2/users) (recherche par plusieurs id)
  * [https://api.x.com/2/users/:id](https://api.x.com/2/users/:id) (recherche par id unique)
  * [https://api.x.com/2/users/by](https://api.x.com/2/users/by) (recherche par plusieurs noms d’utilisateur)
  * [https://api.x.com/2/users/by/username/:username](https://api.x.com/2/users/by/username/:username) (recherche par nom d’utilisateur unique)

**Exigences relatives aux Apps et aux Projects**

Les endpoints X API v2 nécessitent l’utilisation d’identifiants provenant d’une [developer App](/fr/resources/fundamentals/developer-apps) associée à un [Project](/fr/resources/fundamentals/developer-apps) lors de l’authentification de vos requêtes. Tous les endpoints X API v1.1 peuvent utiliser des identifiants provenant d’Apps ou d’Apps associées à un Project.

**Format des données de réponse**

L’une des plus grandes différences entre les versions d’endpoint standard v1.1 et X API v2 concerne la façon dont vous sélectionnez les champs renvoyés dans votre payload.

Pour les endpoints standard, vous recevez de nombreux champs de réponse par défaut, puis vous avez la possibilité d’utiliser des paramètres pour identifier quels champs ou ensembles de champs doivent être renvoyés dans le payload.

La version X API v2 ne fournit que les champs user id, name et username par défaut. Pour demander des champs ou des objets supplémentaires, vous devrez utiliser les paramètres [fields](/fr/x-api/fundamentals/fields) et [expansions](/fr/x-api/fundamentals/expansions). Tous les champs user que vous demandez à partir de cet endpoint seront renvoyés dans l’objet user principal. Tout objet Publication étendu et ses champs seront renvoyés dans un objet includes au sein de votre réponse. Vous pouvez ensuite faire correspondre les objets étendus à l’objet user en faisant correspondre les id présents à la fois dans l’objet user et dans l’objet Publication étendu.

Nous vous encourageons à en savoir plus sur ces nouveaux paramètres dans leurs guides respectifs, ou en lisant notre guide sur [comment utiliser les fields et expansions](/fr/x-api/fundamentals/data-dictionary#how-to-use-fields-and-expansions).

Nous avons également préparé un [guide de migration du format de données](/fr/x-api/migrate/data-format-migration#migrating-from-standard-v1-1s-data-format-to-v2) qui peut vous aider à faire correspondre les champs standard v1.1 aux nouveaux champs v2. Ce guide vous fournira également le paramètre d’expansion et de champ spécifique que vous devrez transmettre avec votre requête v2 pour renvoyer des champs spécifiques.

En plus des changements concernant la façon dont vous demandez certains champs, X API v2 introduit également de nouveaux modèles JSON pour les objets renvoyés par les API, y compris les objets [Post](/fr/x-api/fundamentals/data-dictionary#tweet) et [user](/fr/x-api/fundamentals/data-dictionary#user).

* Au niveau racine JSON, les endpoints standard renvoient des objets Publication dans un tableau statuses, tandis que X API v2 renvoie un tableau data.
* Au lieu de faire référence aux « statuses » Retweeted et Quoted, le JSON de X API v2 fait référence aux Tweets Retweeted et Quoted. De nombreux champs hérités et obsolètes, tels que contributors et user.translator\_type, sont supprimés.
* Au lieu d’utiliser à la fois favorites (dans l’objet Publication) et favourites (dans l’objet user), X API v2 utilise le terme like.
* X adopte la convention selon laquelle les valeurs JSON sans valeur (par exemple, null) ne sont pas écrites dans le payload. Les attributs de Publication et de user ne sont inclus que s’ils ont une valeur non nulle.

Nous avons également introduit un nouvel ensemble de champs dans l’[objet Post](/fr/x-api/fundamentals/data-dictionary#tweet), notamment :

* Un champ [conversation\_id](/fr/x-api/fundamentals/conversation-id)
* Deux nouveaux champs [annotations](/fr/x-api/fundamentals/post-annotations), dont context et entities
* Plusieurs nouveaux champs [metrics](/fr/x-api/fundamentals/metrics)
* Un nouveau champ reply\_setting, qui indique qui peut répondre à une Publication donnée

**Paramètres de requête**

Les paramètres de requête standard v1.1 suivants ont des équivalents dans X API v2 :

|              |              |
| :----------- | :----------- |
| **Standard** | **X API v2** |
| user\_id     | ids          |
| screen\_name | username     |

Il existe également un ensemble de paramètres de requête standard pour la recherche d’utilisateurs **non** pris en charge dans X API v2 :

| Standard          | Commentaire                                                                                                                                                             |
| :---------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| include\_entities | Ce paramètre est utilisé pour supprimer le nœud entities du payload de la Publication. Il a été remplacé par la fonctionnalité additive basée sur fields et expansions. |

***

<div id="code-examples">
  ### Exemples de code
</div>

Les exemples suivants montrent les endpoints standard de la v1.1 et leurs équivalents en v2.

**Recherche d’un seul utilisateur : v1.1 `GET users/show` → v2 `GET /users/by/username/:username`**

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

  ```bash cURL (v2) theme={null}
  curl --request GET \
    --url 'https://api.x.com/2/users/by/username/XDevelopers?user.fields=created_at,description,public_metrics' \
    --header 'Authorization: Bearer $ACCESS_TOKEN'
  ```

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

  bearer_token = "YOUR_BEARER_TOKEN"
  url = "https://api.x.com/2/users/by/username/XDevelopers"

  params = {
      "user.fields": "created_at,description,public_metrics"
  }

  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")

  # Récupérer un utilisateur par nom d’utilisateur avec des champs supplémentaires
  response = client.users.get_by_username(
      "XDevelopers",
      user_fields=["created_at", "description", "public_metrics"]
  )

  print(f"Name: {response.data.name}")
  print(f"Followers: {response.data.public_metrics.followers_count}")
  ```

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

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

  const response = await client.users.getByUsername("XDevelopers", {
    userFields: ["created_at", "description", "public_metrics"],
  });

  console.log(`Name: ${response.data?.name}`);
  console.log(`Followers: ${response.data?.public_metrics?.followers_count}`);
  ```
</CodeGroup>

**Recherche de plusieurs utilisateurs : v1.1 `GET users/lookup` → v2 `GET /users/by`**

<CodeGroup dropdown>
  ```bash cURL (v1.1) theme={null}
  curl --request GET \
    --url 'https://api.x.com/1.1/users/lookup.json?screen_name=XDevelopers,X,XAPI' \
    --header 'Authorization: Bearer $ACCESS_TOKEN'
  ```

  ```bash cURL (v2) theme={null}
  curl --request GET \
    --url 'https://api.x.com/2/users/by?usernames=XDevelopers,X,XAPI&user.fields=created_at,public_metrics' \
    --header 'Authorization: Bearer $ACCESS_TOKEN'
  ```

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

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

  params = {
      "usernames": "XDevelopers,X,XAPI",
      "user.fields": "created_at,public_metrics"
  }

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

  for user in response.json()["data"]:
      print(f"{user['username']}: {user['public_metrics']['followers_count']} followers")
  ```

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

  client = Client(bearer_token="YOUR_BEARER_TOKEN")

  # Récupérer plusieurs utilisateurs par noms d’utilisateur
  response = client.users.get_users_by_usernames(
      usernames=["XDevelopers", "X", "XAPI"],
      user_fields=["created_at", "public_metrics"]
  )

  for user in response.data:
      print(f"{user.username}: {user.public_metrics.followers_count} followers")
  ```

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

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

  const response = await client.users.getUsersByUsernames({
    usernames: ["XDevelopers", "X", "XAPI"],
    userFields: ["created_at", "public_metrics"],
  });

  response.data?.forEach((user) => {
    console.log(`${user.username}: ${user.public_metrics?.followers_count} followers`);
  });
  ```
</CodeGroup>
