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

# Consistência da API

> Aprenda os padrões consistentes de URL, resposta e ID usados em todos os endpoints da API do X v2, para que as mesmas convenções se apliquem onde quer que você faça a integração.

A API do X v2 é projetada com padrões consistentes em todos os endpoints. Uma vez que você aprende como um endpoint funciona, os mesmos padrões se aplicam em todos os lugares.

***

## Padrões consistentes

### Estrutura da URL

Todos os endpoints v2 seguem um padrão previsível:

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

Exemplos:

```
/2/tweets/1234567890                    # Get a specific post
/2/tweets/search/recent                 # Search recent posts
/2/users/by/username/xdevelopers        # Get user by username
/2/users/1234/followers                 # Get user's followers
```

### Estrutura da resposta

Todas as respostas usam a mesma estrutura de nível superior:

```json theme={null}
{
  "data": { ... },       // Primary object(s)
  "includes": { ... },   // Expanded objects
  "meta": { ... },       // Pagination, counts
  "errors": [ ... ]      // Partial errors (if any)
}
```

### Formato de ID

Todos os IDs são retornados como strings para garantir compatibilidade entre linguagens:

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

***

## Fields e expansions

Os mesmos parâmetros [fields](/x-api/fundamentals/fields) e [expansions](/x-api/fundamentals/expansions) funcionam de forma consistente:

| Objeto | Parâmetro fields | Funciona em                                  |
| :----- | :--------------- | :------------------------------------------- |
| Post   | `tweet.fields`   | Todos os endpoints que retornam posts        |
| User   | `user.fields`    | Todos os endpoints que retornam usuários     |
| Media  | `media.fields`   | Todos os endpoints com expansions de mídia   |
| Poll   | `poll.fields`    | Todos os endpoints com expansions de enquete |
| Place  | `place.fields`   | Todos os endpoints com expansions de local   |

***

## Esquemas de objetos

O mesmo tipo de objeto tem os mesmos campos independentemente de qual endpoint o retorne:

* Um Post da pesquisa tem os mesmos campos de um Post do lookup
* Um User dos followers tem os mesmos campos de um User da pesquisa
* Objetos expandidos correspondem aos seus equivalentes independentes

***

## Autenticação

Todos os endpoints usam os mesmos métodos de autenticação:

| Método       | Formato do cabeçalho                 |
| :----------- | :----------------------------------- |
| Bearer Token | `Authorization: Bearer {token}`      |
| OAuth 1.0a   | `Authorization: OAuth {parameters}`  |
| OAuth 2.0    | `Authorization: Bearer {user_token}` |

***

## Tratamento de erros

Os erros seguem um formato consistente:

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

[Veja todos os tipos de erro →](/x-api/fundamentals/response-codes-and-errors)

***

## Paginação

Todos os endpoints paginados usam o mesmo sistema de tokens:

| Parâmetro          | Descrição                                 |
| :----------------- | :---------------------------------------- |
| `max_results`      | Resultados por página                     |
| `pagination_token` | Token de `next_token` ou `previous_token` |

[Saiba mais sobre paginação →](/x-api/fundamentals/pagination)

***

## Convenções de nomenclatura

* Grafia em inglês americano (`favorites` e não `favourites`)
* Snake\_case para nomes de campos (`author_id`, `created_at`)
* Terminologia consistente (`retweet_count`, não `repost_count` em campos)

***

## Valores vazios

Campos sem valor são omitidos em vez de retornados como `null`:

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

***

## Consistência de entidades

O objeto `entities` contém apenas entidades analisadas a partir do texto:

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

Mídia e enquetes ficam em `attachments`, não em `entities`.

***

## O que isso significa para você

<CardGroup cols={2}>
  <Card title="Aprenda uma vez, use em todo lugar" icon="graduation-cap">
    Padrões que você aprende em um endpoint se aplicam a todos.
  </Card>

  <Card title="Respostas previsíveis" icon="square-check">
    Os mesmos tipos de objeto têm as mesmas estruturas em toda a API.
  </Card>

  <Card title="Código mais simples" 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">
    Construa funções reutilizáveis para padrões comuns.
  </Card>

  <Card title="Depuração mais fácil" icon="bug">
    Formatos de erro consistentes simplificam a solução de problemas.
  </Card>
</CardGroup>

***

## Relate inconsistências

Encontrou uma inconsistência? Avise-nos:

* [Fórum de Desenvolvedores](https://devcommunity.x.com)
* [Feedback de Desenvolvedores](https://t.co/devfeedback)
