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

# Cohérence de l’API

> Schémas cohérents sur l’ensemble des endpoints de X API v2

X API v2 est conçue avec des schémas cohérents sur l’ensemble de ses endpoints. Une fois que vous avez compris le fonctionnement d’un endpoint, vous retrouverez les mêmes schémas partout.

***

<div id="consistent-patterns">
  ## Modèles cohérents
</div>

<div id="url-structure">
  ### Structure d’URL
</div>

Tous les endpoints de la v2 suivent un schéma prévisible :

```
/version/resource/{id}?parameters
/version/resource/verb?parameters
```

Exemples :

```
/2/tweets/1234567890                    # Get a specific post
/2/tweets/search/recent                 # Search recent posts
/2/users/by/username/xdevelopers        # Obtenir un utilisateur par nom d'utilisateur
/2/users/1234/followers                 # Get user's followers
```

<div id="response-structure">
  ### Structure de la réponse
</div>

Toutes les réponses ont la même structure de niveau supérieur :

```json theme={null}
{
  "data": { ... },       // Objet(s) principal(aux)
  "includes": { ... },   // Objets étendus
  "meta": { ... },       // Pagination, décomptes
  "errors": [ ... ]      // Erreurs partielles (le cas échéant)
}
```

<div id="id-format">
  ### Format des ID
</div>

Tous les identifiants sont renvoyés sous forme de chaînes de caractères afin de garantir la compatibilité entre les langages de programmation :

```json theme={null}
{
  "id": "1234567890123456789",
  "author_id": "2244994945"
}
```

***

<div id="fields-and-expansions">
  ## Champs et expansions
</div>

Les mêmes paramètres [fields](/fr/x-api/fundamentals/fields) et [expansions](/fr/x-api/fundamentals/expansions) fonctionnent de manière cohérente :

| Objet       | Paramètre fields | Fonctionne sur                                |
| :---------- | :--------------- | :-------------------------------------------- |
| Publication | `tweet.fields`   | Tous les endpoints renvoyant des publications |
| User        | `user.fields`    | Tous les endpoints renvoyant des utilisateurs |
| Media       | `media.fields`   | Tous les endpoints avec des expansions media  |
| Poll        | `poll.fields`    | Tous les endpoints avec des expansions poll   |
| Place       | `place.fields`   | Tous les endpoints avec des expansions place  |

***

<div id="object-schemas">
  ## Schémas d'objet
</div>

Le même type d'objet possède les mêmes champs, quel que soit l'endpoint qui le renvoie :

* Une Publication issue de l'endpoint search a les mêmes champs qu'une Publication issue de l'endpoint lookup
* Un Utilisateur issu de l'endpoint followers a les mêmes champs qu'un Utilisateur issu de l'endpoint search
* Les objets étendus correspondent à leurs équivalents indépendants

***

<div id="authentication">
  ## Authentification
</div>

Tous les endpoints utilisent les mêmes méthodes d'authentification :

| Méthode      | Format de l'en-tête                  |
| :----------- | :----------------------------------- |
| Jeton Bearer | `Authorization: Bearer {token}`      |
| OAuth 1.0a   | `Authorization: OAuth {parameters}`  |
| OAuth 2.0    | `Authorization: Bearer {user_token}` |

***

<div id="error-handling">
  ## Gestion des erreurs
</div>

Les erreurs utilisent un format cohérent :

```json theme={null}
{
  "title": "Invalid Request",
  "detail": "The query parameter is missing",
  "type": "https://api.x.com/2/problems/invalid-request"
}
```

[Voir tous les types d'erreurs →](/fr/x-api/fundamentals/response-codes-and-errors)

***

<div id="pagination">
  ## Pagination
</div>

Tous les endpoints paginés utilisent le même système de jetons :

| Paramètre          | Description                                         |
| :----------------- | :-------------------------------------------------- |
| `max_results`      | Résultats par page                                  |
| `pagination_token` | Jeton provenant de `next_token` ou `previous_token` |

[En savoir plus sur la pagination →](/fr/x-api/fundamentals/pagination)

***

<div id="naming-conventions">
  ## Conventions de nommage
</div>

* Orthographe américaine (`favorites` plutôt que `favourites`)
* Snake\_case pour les noms de champs (`author_id`, `created_at`)
* Terminologie cohérente (`retweet_count`, et non `repost_count` dans les champs)

***

<div id="empty-values">
  ## Valeurs vides
</div>

Les champs sans valeur sont omis plutôt que renvoyés comme `null` :

```json theme={null}
// User without a bio
{
  "id": "1234",
  "name": "Example User",
  "username": "example"
  // "description" est omis, et non null
}
```

***

<div id="entity-consistency">
  ## Cohérence des entités
</div>

L'objet `entities` ne contient que les entités extraites du texte :

* `urls`
* `hashtags`
* `mentions`
* `cashtags`

Les médias et les sondages se trouvent dans `attachments`, pas dans `entities`.

***

<div id="what-this-means-for-you">
  ## Ce que cela signifie pour vous
</div>

<CardGroup cols={2}>
  <Card title="Apprendre une fois, utiliser partout" icon="graduation-cap">
    Les schémas que vous apprenez sur un endpoint s’appliquent à tous les autres.
  </Card>

  <Card title="Réponses prévisibles" icon="square-check">
    Les mêmes types d’objet présentent les mêmes structures dans toute l’API.
  </Card>

  <Card title="Code simplifié" icon="code">
    Créez des fonctions réutilisables pour les schémas récurrents.
  </Card>

  <Card title="Débogage facilité" icon="bug">
    Des formats d’erreur cohérents facilitent le dépannage.
  </Card>
</CardGroup>

***

<div id="report-inconsistencies">
  ## Signaler des incohérences
</div>

Vous avez trouvé une incohérence ? Faites-le nous savoir :

* [Forum des développeurs](https://devcommunity.x.com)
* [Retour des développeurs](https://t.co/devfeedback)
