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

# Expansions

> Use expansions da API do X v2 para incluir usuários, mídia, enquetes, locais e posts referenciados relacionados dentro da seção includes de uma única resposta.

Expansions permitem incluir objetos relacionados em uma única resposta da API. Em vez de fazer várias solicitações, obtenha um post e seu autor, mídia ou posts referenciados em uma única chamada.

***

## Como as expansions funcionam

Quando você solicita uma expansion, a API inclui o objeto completo na seção `includes` da resposta:

```bash theme={null}
curl "https://api.x.com/2/tweets/1234567890?expansions=author_id" \
  -H "Authorization: Bearer $TOKEN"
```

Resposta:

```json title="Exemplo de resposta" lines wrap icon="https://mintcdn.com/x-preview/Vn2KEkZaPF9LiPi3/icons/xds/icon-brackets.svg?fit=max&auto=format&n=Vn2KEkZaPF9LiPi3&q=85&s=ed2428e77bab43e57800e1a590e982fa" theme={null}
{
  "data": {
    "id": "1234567890",
    "text": "Hello world!",
    "author_id": "2244994945"
  },
  "includes": {
    "users": [{
      "id": "2244994945",
      "name": "X Developers",
      "username": "xdevelopers"
    }]
  }
}
```

O `author_id` em `data` vincula-se ao objeto user em `includes`.

***

## Expansions de Post

| Expansion                        | Retorna         | Caso de uso                                |
| :------------------------------- | :-------------- | :----------------------------------------- |
| `author_id`                      | Objeto User     | Obter detalhes do autor do post            |
| `referenced_tweets.id`           | Objeto(s) Post  | Obter posts citados/respondidos            |
| `referenced_tweets.id.author_id` | Objeto(s) User  | Obter autores dos posts referenciados      |
| `in_reply_to_user_id`            | Objeto User     | Obter usuário que está sendo respondido    |
| `attachments.media_keys`         | Objeto(s) Media | Obter imagens, vídeos, GIFs                |
| `attachments.poll_ids`           | Objeto Poll     | Obter opções e votos da enquete            |
| `geo.place_id`                   | Objeto Place    | Obter detalhes de localização              |
| `entities.mentions.username`     | Objeto(s) User  | Obter usuários mencionados                 |
| `edit_history_tweet_ids`         | Objeto(s) Post  | Obter versões anteriores de posts editados |

***

## Expansions de User

| Expansion         | Retorna     | Caso de uso                    |
| :---------------- | :---------- | :----------------------------- |
| `pinned_tweet_id` | Objeto Post | Obter o post fixado do usuário |

***

## Expansions de Space

| Expansion          | Retorna        | Caso de uso               |
| :----------------- | :------------- | :------------------------ |
| `creator_id`       | Objeto User    | Obter criador do Space    |
| `host_ids`         | Objeto(s) User | Obter hosts do Space      |
| `speaker_ids`      | Objeto(s) User | Obter oradores do Space   |
| `invited_user_ids` | Objeto(s) User | Obter usuários convidados |

***

## Expansions de DM

| Expansion                | Retorna        | Caso de uso                     |
| :----------------------- | :------------- | :------------------------------ |
| `sender_id`              | Objeto User    | Obter remetente da mensagem     |
| `participant_ids`        | Objeto(s) User | Obter participantes da conversa |
| `attachments.media_keys` | Objeto Media   | Obter mídia anexada             |
| `referenced_tweets.id`   | Objeto Post    | Obter post referenciado         |

***

## Expansions de List

| Expansion  | Retorna     | Caso de uso        |
| :--------- | :---------- | :----------------- |
| `owner_id` | Objeto User | Obter dono da list |

***

## Combinando com fields

Expansions retornam fields padrão para cada objeto. Para obter fields adicionais, combine expansions com parâmetros de field:

```bash theme={null}
curl "https://api.x.com/2/tweets/1234567890?\
expansions=author_id,attachments.media_keys&\
user.fields=description,public_metrics&\
media.fields=url,alt_text" \
  -H "Authorization: Bearer $TOKEN"
```

Resposta:

```json title="Exemplo de resposta" expandable lines wrap icon="https://mintcdn.com/x-preview/Vn2KEkZaPF9LiPi3/icons/xds/icon-brackets.svg?fit=max&auto=format&n=Vn2KEkZaPF9LiPi3&q=85&s=ed2428e77bab43e57800e1a590e982fa" theme={null}
{
  "data": {
    "id": "1234567890",
    "text": "Check out this image!",
    "author_id": "2244994945",
    "attachments": {
      "media_keys": ["3_1234567890"]
    }
  },
  "includes": {
    "users": [{
      "id": "2244994945",
      "name": "X Developers",
      "username": "xdevelopers",
      "description": "The voice of the X Developer Platform",
      "public_metrics": {
        "followers_count": 570842
      }
    }],
    "media": [{
      "media_key": "3_1234567890",
      "type": "photo",
      "url": "https://pbs.twimg.com/media/example.jpg",
      "alt_text": "Example image"
    }]
  }
}
```

***

## Múltiplas expansions

Solicite várias expansions como uma lista separada por vírgulas:

```bash theme={null}
expansions=author_id,referenced_tweets.id,attachments.media_keys
```

***

## Padrões comuns

<Tabs>
  <Tab title="Contexto completo do post">
    Obtenha um post com autor, mídia e posts referenciados:

    ```bash theme={null}
    expansions=author_id,attachments.media_keys,referenced_tweets.id
    tweet.fields=created_at,public_metrics,conversation_id
    user.fields=username,name,profile_image_url
    media.fields=url,preview_image_url,type
    ```
  </Tab>

  <Tab title="Thread de conversa">
    Obtenha respostas com seus autores:

    ```bash theme={null}
    expansions=author_id,in_reply_to_user_id,referenced_tweets.id
    tweet.fields=conversation_id,in_reply_to_user_id,created_at
    user.fields=username,name
    ```
  </Tab>

  <Tab title="Usuário com post fixado">
    Obtenha um perfil de usuário com seu post fixado:

    ```bash theme={null}
    expansions=pinned_tweet_id
    user.fields=description,public_metrics,verified
    tweet.fields=created_at,public_metrics
    ```
  </Tab>
</Tabs>

***

## Vinculando data e includes

Os objetos em `includes` não contêm informações de posição. Vincule-os usando IDs:

```python theme={null}
# Python example
response = api_call()
post = response["data"]
users = {u["id"]: u for u in response["includes"]["users"]}

# Get the author
author = users.get(post["author_id"])
print(f"{author['name']} said: {post['text']}")
```

```javascript theme={null}
// JavaScript example
const { data: post, includes } = response;
const users = Object.fromEntries(
  includes.users.map(u => [u.id, u])
);

const author = users[post.author_id];
console.log(`${author.name} said: ${post.text}`);
```

***

## Próximos passos

<CardGroup cols={2}>
  <Card title="Fields" icon="https://mintcdn.com/x-preview/ygI6sSJPehlc0qNT/icons/xds/icon-bulleted-list.svg?fit=max&auto=format&n=ygI6sSJPehlc0qNT&q=85&s=b9bf8323233df59c682b0fec8e3f88d5" href="/x-api/fundamentals/fields" width="24" height="24" data-path="icons/xds/icon-bulleted-list.svg">
    Solicite fields específicos para cada objeto.
  </Card>

  <Card title="Dicionário de dados" icon="https://mintcdn.com/x-preview/Vn2KEkZaPF9LiPi3/icons/xds/icon-book.svg?fit=max&auto=format&n=Vn2KEkZaPF9LiPi3&q=85&s=22ac564792481d14ae36a941546039c8" href="/x-api/fundamentals/data-dictionary" width="24" height="24" data-path="icons/xds/icon-book.svg">
    Esquemas completos dos objetos.
  </Card>
</CardGroup>
