> ## Documentation Index
> Fetch the complete documentation index at: https://docs.onbeef.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Obtenha um token

> Troque suas credenciais por um token OAuth 2.0.

Envie o `client_id` e o `client_secret` gerados em **Integrações**. Use o token retornado no header `Authorization` dos endpoints protegidos.

## Corpo da requisição

Envie um corpo JSON com os seguintes campos:

<ParamField body="client_id" type="string" required>
  Seu merchant ID. Você o encontra na seção **Integrações** do app Onbeef após fazer login.
</ParamField>

<ParamField body="client_secret" type="string" required>
  Sua chave secreta. Gerada junto com o `client_id` na seção **Integrações** do app Onbeef. Trate esse valor como uma senha: nunca o exponha em código executado no cliente ou em repositórios públicos.
</ParamField>

<ParamField body="grant_type" type="string" required>
  Grant type do OAuth 2.0. Deve ser sempre `"client_credentials"`. É o único grant type suportado.
</ParamField>

## Campos da resposta

### 200: Sucesso

<ResponseField name="access_token" type="string">
  String JWT assinada. Envie este valor no header `Authorization: Bearer <access_token>` em todas as requisições protegidas.
</ResponseField>

<ResponseField name="token_type" type="string">
  Sempre `"Bearer"`. Indica como o token deve ser usado no header `Authorization` (`Authorization: Bearer <access_token>`).
</ResponseField>

<ResponseField name="expires_in" type="integer">
  Número de segundos até o token expirar. Sempre `43200` (12 horas). Acompanhe este valor para saber quando solicitar um novo token.
</ResponseField>

### 401: Credenciais inválidas

Retornado quando `client_id` ou `client_secret` está incorreto. Veja a página [Erros](/api-reference/errors) para o formato completo da resposta.

## Exemplo

### Requisição

```bash theme={null}
curl -X POST https://api.dev.connect.onbeefapp.com.br/oauth/token \
  -H 'Content-Type: application/json' \
  -d '{
    "client_id": "<your_client_id>",
    "client_secret": "<your_client_secret>",
    "grant_type": "client_credentials"
  }'
```

### Resposta

```json theme={null}
{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "token_type": "Bearer",
  "expires_in": 43200
}
```

<Note>
  O grant `client_credentials` não emite refresh token. Quando o `access_token` expirar, chame este endpoint novamente com as mesmas credenciais para obter um token novo.
</Note>

<Note>
  Armazene o `access_token` de forma segura em memória (não em local storage ou cookies) e reutilize-o em todas as requisições até que esteja próximo de expirar.
</Note>
