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

# Guía de integración

> Esta página cubre herramientas y conceptos clave para integrar los endpoints de Lists. Referencia del nivel estándar de X API v2 sobre manage lists.

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>;
};

Esta página cubre herramientas y conceptos clave para integrar los endpoints de Lists.

## Herramientas útiles

Antes de sumergirnos en algunos conceptos clave que te ayudarán a integrar este endpoint, te recomendamos familiarizarte con:

#### Postman

Postman es una excelente herramienta que puedes usar para probar un endpoint. Cada solicitud de Postman incluye todos los parámetros de ruta y de cuerpo para ayudarte a entender rápidamente lo que está disponible. Para saber más sobre nuestras colecciones de Postman, visita nuestra página ["Usando Postman"](/tutorials/postman-getting-started).

#### Ejemplos de código

¿Te interesa comenzar con este endpoint usando código en tu lenguaje de programación preferido? Tenemos varios ejemplos de código diferentes que puedes usar como punto de partida en nuestra [página de Github](https://github.com/xdevplatform/Twitter-API-v2-sample-code).

#### Bibliotecas de terceros

Aprovecha alguna de las [bibliotecas de terceros](/tools-and-libraries) de nuestra comunidad para ayudarte a comenzar. Puedes encontrar una biblioteca que funcione con los endpoints v2 buscando la etiqueta de versión adecuada.

### Conceptos clave

#### Autenticación

Todos los endpoints de X API v2 requieren que autentiques tus solicitudes con un conjunto de credenciales, también conocidas como claves y tokens.

Estos endpoints específicos requieren el uso de [OAuth 1.0a User Context](/resources/fundamentals/authentication), lo que significa que debes usar un conjunto de API keys y Access Tokens de usuario para realizar una solicitud exitosa. Los Access Tokens deben estar asociados al usuario en cuyo nombre estás realizando la solicitud. Si deseas generar un conjunto de Access Tokens para otro usuario, este debe autorizar o autenticar tu App mediante el [flujo OAuth de 3 pasos](/resources/fundamentals/authentication#obtaining-access-tokens-using-3-legged-oauth-flow).

Ten en cuenta que OAuth 1.0a puede ser complicado de usar. Si no estás familiarizado con este método de autenticación, te recomendamos usar una [biblioteca](/tools-and-libraries) o una herramienta como Postman para autenticar tus solicitudes correctamente.

#### Developer Console, Projects y Apps de desarrollador

Para obtener un conjunto de credenciales de autenticación que funcionen con los endpoints de X API v2, debes [registrarte para una cuenta de desarrollador](https://developer.x.com/en/portal/petition/essential/basic-info), configurar un [Project](/resources/fundamentals/developer-apps) dentro de esa cuenta y crear una [App de desarrollador](/resources/fundamentals/developer-apps) dentro de ese Project. Luego podrás encontrar tus claves y tokens dentro de tu App de desarrollador.

#### Rate limits

Cada día, miles de desarrolladores realizan solicitudes a la X API. Para ayudar a gestionar el enorme volumen de estas solicitudes, se aplican [rate limits](/x-api/fundamentals/rate-limits) en cada endpoint que limitan el número de solicitudes que puedes realizar en nombre de tu app o de un usuario autenticado.

Estos endpoints están limitados a nivel de usuario, lo que significa que el usuario autenticado en cuyo nombre realizas la solicitud solo puede llamar al endpoint un número determinado de veces en cualquier App de desarrollador.

La siguiente tabla muestra los rate limits de cada endpoint.

|              |                 |                                |
| :----------- | :-------------- | :----------------------------- |
| **Endpoint** | **Método HTTP** | **Rate limit**                 |
| /2/lists     | POST            | 300 solicitudes por 15 minutos |
| /2/lists/:id | DELETE / PUT    | 300 solicitudes por 15 minutos |

***

### Ejemplos de código

#### Crear una List

<CodeGroup dropdown>
  ```bash cURL theme={null}
  curl -X POST "https://api.x.com/2/lists" \
    -H "Authorization: OAuth ..." \
    -H "Content-Type: application/json" \
    -d '{"name": "My List", "description": "A list of interesting accounts"}'
  ```

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

  oauth1 = OAuth1(
      api_key="YOUR_API_KEY",
      api_secret="YOUR_API_SECRET",
      access_token="YOUR_ACCESS_TOKEN",
      access_token_secret="YOUR_ACCESS_TOKEN_SECRET"
  )

  client = Client(auth=oauth1)

  # Crear una nueva List
  response = client.lists.create(
      name="My List",
      description="A list of interesting accounts"
  )
  print(response.data)
  ```

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

  const oauth1 = new OAuth1({
    apiKey: "YOUR_API_KEY",
    apiSecret: "YOUR_API_SECRET",
    accessToken: "YOUR_ACCESS_TOKEN",
    accessTokenSecret: "YOUR_ACCESS_TOKEN_SECRET",
  });

  const client = new Client({ oauth1 });

  // Crear una nueva List
  const response = await client.lists.create({
    name: "My List",
  });
  console.log(response.data);
  ```
</CodeGroup>

#### Actualizar una List

<CodeGroup dropdown>
  ```bash cURL theme={null}
  curl -X PUT "https://api.x.com/2/lists/123456789" \
    -H "Authorization: OAuth ..." \
    -H "Content-Type: application/json" \
    -d '{"name": "Updated List Name"}'
  ```

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

  oauth1 = OAuth1(
      api_key="YOUR_API_KEY",
      api_secret="YOUR_API_SECRET",
      access_token="YOUR_ACCESS_TOKEN",
      access_token_secret="YOUR_ACCESS_TOKEN_SECRET"
  )

  client = Client(auth=oauth1)

  # Actualizar una List
  response = client.lists.update(
      list_id="123456789",
      name="Updated List Name"
  )
  print(response.data)
  ```

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

  const oauth1 = new OAuth1({
    apiKey: "YOUR_API_KEY",
    apiSecret: "YOUR_API_SECRET",
    accessToken: "YOUR_ACCESS_TOKEN",
    accessTokenSecret: "YOUR_ACCESS_TOKEN_SECRET",
  });

  const client = new Client({ oauth1 });

  // Actualizar una List
  const response = await client.lists.update("123456789", {
    name: "Updated List Name",
  });
  console.log(response.data);
  ```
</CodeGroup>
