> ## Documentation Index
> Fetch the complete documentation index at: https://x-preview-mintlify-066e8699.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Apps

> Crie e configure apps de desenvolvedor do X para obter credenciais de API, definir permissões OAuth 1.0a e OAuth 2.0, gerenciar callback URLs e rotacionar chaves.

Apps são contêineres para suas credenciais de API. Cada app tem suas próprias chaves, tokens e configurações.

***

## Credenciais do app

Quando você cria um app, pode gerar estas credenciais:

| Credencial                | Caso de uso                                                                                |
| :------------------------ | :----------------------------------------------------------------------------------------- |
| **API Key e Secret**      | Autentique-se com OAuth 1.0a. Usadas para assinar solicitações ou gerar tokens de usuário. |
| **Access Token e Secret** | Faça solicitações em nome da sua própria conta (OAuth 1.0a).                               |
| **Client ID e Secret**    | Autentique-se com OAuth 2.0. Usadas para o fluxo de authorization code.                    |
| **Bearer Token**          | Autenticação somente de app para endpoints de dados públicos.                              |

<Tip>
  Escolha **OAuth 2.0** para novos projetos. Ele oferece escopos granulares e é necessário para endpoints user-context da X API v2.
</Tip>

***

## Criando um app

<Steps>
  <Step title="Abra o Developer Console">
    Acesse [console.x.com](https://console.x.com) e faça login.
  </Step>

  <Step title="Clique em Create App">
    Insira um nome, descrição e caso de uso para seu app.
  </Step>

  <Step title="Gere as credenciais">
    Após a criação, gere as chaves e tokens necessários.
  </Step>

  <Step title="Armazene com segurança">
    Salve as credenciais imediatamente — elas são exibidas apenas uma vez.
  </Step>
</Steps>

***

## Permissões do app (OAuth 1.0a)

Apps OAuth 1.0a têm três níveis de permissão:

<Tabs>
  <Tab title="Somente leitura">
    * Visualizar posts, usuários e dados públicos
    * Não pode publicar, curtir ou modificar nada
    * Não pode acessar Direct Messages
  </Tab>

  <Tab title="Leitura e escrita">
    * Todas as permissões de leitura
    * Publicar e excluir posts
    * Seguir/deixar de seguir usuários
    * Curtir e repostar
    * Não pode acessar Direct Messages
  </Tab>

  <Tab title="Leitura, escrita e DMs">
    * Todas as permissões de leitura e escrita
    * Enviar e ler Direct Messages
  </Tab>
</Tabs>

<Note>
  Alterar permissões exige que os usuários reautorizem seu app para obter novos tokens com o escopo atualizado.
</Note>

***

## Tipos de app OAuth 2.0

Ao configurar o OAuth 2.0, selecione o tipo do seu app:

| Tipo                       | Cliente      | Caso de uso                                                               |
| :------------------------- | :----------- | :------------------------------------------------------------------------ |
| **Web App**                | Confidencial | Aplicações do lado do servidor que podem armazenar segredos com segurança |
| **App Automatizado / Bot** | Confidencial | Bots e serviços automatizados executados em servidores                    |
| **Native App**             | Público      | Apps mobile ou desktop que não conseguem proteger segredos                |
| **Single Page App**        | Público      | Apps JavaScript baseados em navegador                                     |

**Clientes confidenciais** recebem um Client Secret. **Clientes públicos** usam apenas PKCE.

***

## Callback URLs

Callback URLs (redirect URIs) são necessárias para fluxos OAuth. Após um usuário autorizar seu app, ele é redirecionado para sua callback URL com um código de autorização.

### Requisitos

* Adicione as callback URLs à allowlist do seu app no Developer Console
* As URLs devem corresponder exatamente (incluindo barras finais)
* Máximo de **10 callback URLs** por app
* Use `https://` em produção
* Para desenvolvimento local, use `http://127.0.0.1` (não `localhost`)

### Protocolos não permitidos

Estes protocolos não podem ser usados: `javascript`, `data`, `file`, `ftp`, `mailto`, `telnet` e outros esquemas não padronizados.

<Accordion title="Lista completa de protocolos não permitidos">
  `vbscript`, `javascript`, `vbs`, `data`, `mocha`, `keyword`, `livescript`, `ftp`, `file`, `gopher`, `acrobat`, `callto`, `daap`, `itpc`, `itms`, `firefoxurl`, `hcp`, `ldap`, `mailto`, `mmst`, `mmsu`, `msbd`, `rtsp`, `mso-offdap`, `snews`, `news`, `nntp`, `outlook`, `stssync`, `rlogin`, `telnet`, `tn3270`, `shell`, `sip`
</Accordion>

***

## Melhores práticas

<CardGroup cols={2}>
  <Card title="Use apps separados" icon="layer-group">
    Crie apps diferentes para desenvolvimento, staging e produção.
  </Card>

  <Card title="Rotacione credenciais" icon="arrows-rotate">
    Regenere chaves periodicamente e se suspeitar de comprometimento.
  </Card>

  <Card title="Permissões mínimas" icon="shield-check">
    Solicite apenas as permissões que seu app realmente precisa.
  </Card>

  <Card title="Monitore o uso" icon="chart-simple">
    Verifique o Developer Console regularmente para acompanhar o uso da API.
  </Card>
</CardGroup>

***

## Rótulos de conta automatizada

Se seu app executa uma conta de bot, você pode rotulá-la como automatizada:

1. Acesse as **Configurações** da conta de bot
2. Selecione **Sua conta** → **Automação**
3. Vincule a conta gerenciadora

Isso aumenta a confiança dos usuários e distingue seu bot de spam.

***

## Solução de problemas

<Accordion title="Erro de Callback URL não aprovada">
  Garanta que sua callback URL esteja exatamente como registrada no Developer Console, incluindo o protocolo e quaisquer barras finais. Faça HTTP-encode da URL ao passá-la como parâmetro de query.

  ```json theme={null}
  {
    "errors": [{
      "code": 415,
      "message": "Callback URL not approved for this client application."
    }]
  }
  ```
</Accordion>

<Accordion title="App suspenso">
  Se seu app aparecer como suspenso, verifique seu e-mail em busca de um aviso da equipe da plataforma X. Use o [Platform Help Form](https://help.x.com/forms/platform) para recorrer.
</Accordion>
