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

# Consistencia de la API

> Aprende los patrones consistentes de URLs, respuestas e IDs usados en todos los endpoints de la X API v2, para que las mismas convenciones se apliquen dondequiera que integres.

La X API v2 está diseñada con patrones consistentes en todos los endpoints. Una vez que aprendas cómo funciona un endpoint, los mismos patrones se aplican en todos.

***

## Patrones consistentes

### Estructura de URL

Todos los endpoints v2 siguen un patrón predecible:

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

Ejemplos:

```
/2/tweets/1234567890                    # Obtener un post específico
/2/tweets/search/recent                 # Buscar posts recientes
/2/users/by/username/xdevelopers        # Obtener usuario por username
/2/users/1234/followers                 # Obtener los followers del usuario
```

### Estructura de respuesta

Todas las respuestas usan la misma estructura de nivel superior:

```json theme={null}
{
  "data": { ... },       // Objeto(s) principal(es)
  "includes": { ... },   // Objetos expandidos
  "meta": { ... },       // Paginación, conteos
  "errors": [ ... ]      // Errores parciales (si los hay)
}
```

### Formato de ID

Todos los IDs se devuelven como cadenas para asegurar compatibilidad entre lenguajes:

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

***

## Campos y expansiones

Los mismos parámetros de [fields](/x-api/fundamentals/fields) y [expansions](/x-api/fundamentals/expansions) funcionan de forma consistente:

| Objeto | Parámetro de fields | Funciona en                                  |
| :----- | :------------------ | :------------------------------------------- |
| Post   | `tweet.fields`      | Todos los endpoints que devuelven posts      |
| User   | `user.fields`       | Todos los endpoints que devuelven usuarios   |
| Media  | `media.fields`      | Todos los endpoints con expansiones de media |
| Poll   | `poll.fields`       | Todos los endpoints con expansiones de poll  |
| Place  | `place.fields`      | Todos los endpoints con expansiones de place |

***

## Esquemas de objetos

El mismo tipo de objeto tiene los mismos campos independientemente del endpoint que lo devuelva:

* Un Post desde search tiene los mismos campos que un Post desde lookup
* Un User desde followers tiene los mismos campos que un User desde search
* Los objetos expandidos coinciden con sus contrapartes autónomas

***

## Autenticación

Todos los endpoints usan los mismos métodos de autenticación:

| Método       | Formato de cabecera                  |
| :----------- | :----------------------------------- |
| Bearer Token | `Authorization: Bearer {token}`      |
| OAuth 1.0a   | `Authorization: OAuth {parameters}`  |
| OAuth 2.0    | `Authorization: Bearer {user_token}` |

***

## Gestión de errores

Los errores siguen un formato consistente:

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

[Ver todos los tipos de errores →](/x-api/fundamentals/response-codes-and-errors)

***

## Paginación

Todos los endpoints paginados usan el mismo sistema de tokens:

| Parámetro          | Descripción                              |
| :----------------- | :--------------------------------------- |
| `max_results`      | Resultados por página                    |
| `pagination_token` | Token de `next_token` o `previous_token` |

[Aprende más sobre paginación →](/x-api/fundamentals/pagination)

***

## Convenciones de nomenclatura

* Ortografía en inglés estadounidense (`favorites` en lugar de `favourites`)
* Snake\_case para nombres de campos (`author_id`, `created_at`)
* Terminología consistente (`retweet_count`, no `repost_count` en los campos)

***

## Valores vacíos

Los campos sin valor se omiten en lugar de devolverse como `null`:

```json theme={null}
// User without a bio
{
  "id": "1234",
  "name": "Example User",
  "username": "example"
  // "description" is omitted, not null
}
```

***

## Consistencia de entidades

El objeto `entities` solo contiene entidades parseadas desde el texto:

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

Los medios y las encuestas están en `attachments`, no en `entities`.

***

## Qué significa esto para ti

<CardGroup cols={2}>
  <Card title="Aprende una vez, úsalo en todas partes" icon="graduation-cap">
    Los patrones que aprendes en un endpoint se aplican a todos los endpoints.
  </Card>

  <Card title="Respuestas predecibles" icon="square-check">
    Los mismos tipos de objetos tienen las mismas estructuras en toda la API.
  </Card>

  <Card title="Código más simple" icon="https://mintcdn.com/x-preview/ygI6sSJPehlc0qNT/icons/xds/icon-code.svg?fit=max&auto=format&n=ygI6sSJPehlc0qNT&q=85&s=488e23401b19225b89acc0136d242219" width="24" height="24" data-path="icons/xds/icon-code.svg">
    Crea funciones reutilizables para patrones comunes.
  </Card>

  <Card title="Depuración más sencilla" icon="bug">
    Formatos de error consistentes simplifican la solución de problemas.
  </Card>
</CardGroup>

***

## Reportar inconsistencias

¿Encontraste una inconsistencia? Cuéntanos:

* [Foro de desarrolladores](https://devcommunity.x.com)
* [Feedback para desarrolladores](https://t.co/devfeedback)
