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

# v1 a v2

> Si has estado trabajando con el endpoint estándar v1.1 GET lists/statuses, el objetivo de esta. Referencia del nivel estándar de X API v2 sobre migración.

export const Button = ({href, children}) => {
  return <div className="not-prose">
    <a href={href}>
      <button className="x-btn">
        <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>;
};

### List Posts lookup: Standard v1.1 comparado con X API v2

Si has estado trabajando con el endpoint estándar v1.1 [GET lists/statuses](https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-statuses), el objetivo de esta guía es ayudarte a entender las similitudes y diferencias entre los endpoints estándar v1.1 y de X API v2.

* **Similitudes**
  * Métodos de autenticación
  * Rate limits
* **Diferencias**
  * URLs de endpoints
  * Requisitos de App y Project
  * Límites de objetos de datos por solicitud
  * Formatos de datos de respuesta
  * Parámetros de solicitud

#### Similitudes

**Autenticación**

Ambas versiones del endpoint admiten [OAuth 1.0a User Context](/resources/fundamentals/authentication#oauth-2-0). Por lo tanto, si anteriormente usabas uno de los endpoints estándar v1.1 de List Posts lookup, puedes seguir utilizando el mismo método de autenticación si migras a la versión de X API v2.

Dependiendo de tu biblioteca/paquete de autenticación preferido, la autenticación App only probablemente sea la forma más sencilla de empezar y se puede establecer con un encabezado de solicitud simple. Para aprender cómo generar un Access Token App only, consulta [esta guía de App only](/resources/fundamentals/authentication#bearer-token-also-known-as-app-only).

**Rate limits**

|                                                                                                                                                                             |                                                                                                                                                                                                                                                                        |
| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Standard v1.1**                                                                                                                                                           | **X API v2**                                                                                                                                                                                                                                                           |
| /1.1/lists/statuses.json<br /><br />900 solicitudes por ventana de 15 minutos con OAuth 1.0a User Context<br /><br />900 solicitudes por ventana de 15 minutos con App only | /2/lists/:id/tweets<br /><br />900 solicitudes por ventana de 15 minutos con OAuth 1.0a User Context<br /><br />900 solicitudes por ventana de 15 minutos con OAuth 2.0 Authorization Code with PKCE<br /><br />900 solicitudes por ventana de 15 minutos con App only |

#### Diferencias

**URLs de endpoints**

* Endpoints estándar v1.1:
  * GET [https://api.x.com/1.1/lists/statuses.json](https://api.x.com/1.1/lists/statuses.json)
    (Consulta los Tweets de una List especificada)
* Endpoint X API v2:
  * GET [https://api.x.com/2/lists/:id/tweets](https://api.x.com/2/lists/:id/tweets)
    (Consulta los Tweets de una List especificada)

**Requisitos de App y Project**

Los endpoints de X API v2 requieren que uses credenciales de una [App de desarrollador](/resources/fundamentals/developer-apps) asociada a un [Project](/resources/fundamentals/developer-apps) al autenticar tus solicitudes. Todos los endpoints de X API v1.1 pueden usar credenciales de Apps o Apps asociadas a un project.

**Límites de objetos de datos por solicitud**

El endpoint estándar v1.1 /lists/statuses te permite devolver hasta 5000 Posts por solicitud. Los nuevos endpoints v2 te permiten devolver hasta 100 Posts por solicitud. Por defecto, se devuelven 100 objetos de usuario; para cambiar el número de resultados deberás pasar un parámetro de consulta max\_results= con un número entre 1-100; luego puedes pasar el next\_token devuelto en el payload de respuesta al parámetro de consulta pagination\_token en tu siguiente solicitud.

**Formato de datos de respuesta**

Una de las mayores diferencias entre las versiones estándar v1.1 y X API v2 del endpoint es cómo seleccionas qué fields se devuelven en tu payload.

Para los endpoints estándar, recibes muchos de los fields de respuesta por defecto y tienes la opción de usar parámetros para identificar qué fields o conjuntos de fields adicionales deben devolverse en el payload.

La versión de X API v2 solo entrega los fields id y text de Post por defecto. Para solicitar fields u objetos adicionales, deberás usar los parámetros [fields](/x-api/fundamentals/fields) y [expansions](/x-api/fundamentals/expansions). Cualquier field de Post que solicites desde este endpoint se devolverá en el objeto Post principal. Cualquier field de objeto expandido se devolverá en un objeto includes dentro de tu respuesta. Luego puedes emparejar los objetos expandidos con el objeto Post principal coincidiendo los IDs del objeto principal y de los objetos expandidos.

Aquí hay ejemplos de posibles fields y expansions de Post:

* attachments
* author\_id
* context\_annotations
* created\_at
* geo
* lang

|                     |               |
| :------------------ | :------------ |
| **Endpoint**        | **Expansion** |
| /2/lists/:id/tweets | author\_id    |

Te animamos a leer más sobre estos nuevos parámetros en sus respectivas guías, o leyendo nuestra guía sobre [cómo usar fields y expansions](/x-api/fundamentals/data-dictionary/reference#how-to-use-fields-and-expansions).

También hemos elaborado una [guía de migración de formatos de datos](/x-api/migrate/data-format-migration) que puede ayudarte a mapear fields estándar v1.1 a los nuevos fields v2. Esta guía también te proporcionará los parámetros expansion y field específicos que necesitarás pasar con tu solicitud v2 para devolver fields específicos.

Además de los cambios en cómo solicitas ciertos fields, X API v2 también introduce nuevos diseños JSON para los objetos devueltos por las APIs, incluyendo objetos [Post](/x-api/fundamentals/data-dictionary/reference#tweet) y [user](/x-api/fundamentals/data-dictionary/reference#user).

* En el nivel raíz del JSON, los endpoints estándar devuelven objetos Post en un array **statuses**, mientras que X API v2 devuelve un array **data**.

* En lugar de referirse a "statuses" Retweeted y Quoted, el JSON de X API v2 se refiere a Tweets Retweeted y Quoted. Se eliminan muchos fields heredados y deprecados, como **contributors** y **user.translator\_type**.

* En lugar de usar tanto **favorites** (en el objeto Post) como **favourites** (en el objeto de usuario), X API v2 usa el término **like**.

* X está adoptando la convención de que los valores JSON sin valor (por ejemplo, **null**) no se escriben en el payload. Los atributos de Post y usuario solo se incluyen si tienen valores no nulos.

**Parámetros de solicitud**

Los siguientes parámetros de solicitud estándar v1.1 tienen equivalentes en X API v2:

|                     |                                                             |
| :------------------ | :---------------------------------------------------------- |
| Standard v1.1       | X API v2                                                    |
| list\_id            | id                                                          |
| slug                | Sin equivalente                                             |
| owner\_screen\_name | Sin equivalente                                             |
| owner\_id           | Solicitado con el parámetro expansions con valor author\_id |
| since\_id           | Sin equivalente                                             |
| max\_id             | Sin equivalente                                             |
| include\_entities   | Solicitado con el parámetro tweet.fields con valor entities |
| include\_rts        | Sin equivalente                                             |
| count               | max\_results                                                |

***

## Ejemplos de código

### Obtener Posts de una List (v2)

<CodeGroup dropdown>
  ```bash cURL theme={null}
  curl "https://api.x.com/2/lists/84839422/tweets?tweet.fields=created_at,public_metrics&max_results=100" \
    -H "Authorization: Bearer $BEARER_TOKEN"
  ```

  ```python title="Python" lines wrap icon="python" theme={null}
  import requests

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

  params = {
      "tweet.fields": "created_at,public_metrics",
      "max_results": 100
  }
  headers = {"Authorization": f"Bearer {bearer_token}"}

  response = requests.get(url, headers=headers, params=params)
  print(response.json())
  ```

  ```python title="Python SDK" lines wrap icon="python" theme={null}
  from xdk import Client

  client = Client(bearer_token="YOUR_BEARER_TOKEN")

  # Obtener Posts de una List
  for page in client.lists.get_tweets(
      "84839422",
      tweet_fields=["created_at", "public_metrics"],
      max_results=100
  ):
      for post in page.data:
          print(f"{post.created_at}: {post.text[:50]}...")
  ```

  ```javascript title="JavaScript SDK" lines wrap icon="square-js" theme={null}
  import { Client } from "@xdevplatform/xdk";

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

  // Obtener Posts de una List
  const paginator = client.lists.getTweets("84839422", {
    tweetFields: ["created_at", "public_metrics"],
    maxResults: 100,
  });

  for await (const page of paginator) {
    page.data?.forEach((post) => {
      console.log(`${post.created_at}: ${post.text?.slice(0, 50)}...`);
    });
  }
  ```
</CodeGroup>
