# Obter token de acesso (/docs/conta-digital/endpoints/authentication/post_oauth_token)

## POST /oauth/token

`POST https://api.hub.payzu.com.br/api/v1/oauth/token`

Troca a credencial por um token de acesso válido por 15 minutos. Envie `client_id` e `client_secret` no header `Authorization: Basic` ou no corpo, em `application/x-www-form-urlencoded` ou JSON. Há limite de trocas por `client_id` e IP, e a lista de IPs da credencial vale aqui também.

### Body params

| Field | Type | Required | Details |
| --- | --- | --- | --- |
| `grant_type` | string | yes | Sempre `client_credentials`. — `client_credentials` |
| `client_id` | string | no | `client_id` da credencial, quando não vai no header `Authorization: Basic`. |
| `client_secret` | string | no | `client_secret` da credencial, quando não vai no header `Authorization: Basic`. |

### Responses

**200** Token emitido.

| Field | Type | Required | Details |
| --- | --- | --- | --- |
| `access_token` | string | yes | Token de acesso. Vai no header `Authorization: Bearer` das demais rotas. |
| `token_type` | string | yes | Sempre `Bearer`. — `Bearer` |
| `expires_in` | integer | yes | Validade do token, em segundos. |
| `scope` | string | yes | Escopos da credencial, separados por espaço. |

**400** Requisição inválida.

| Field | Type | Required | Details |
| --- | --- | --- | --- |
| `message` | string | yes | Descrição em português, pronta para exibir. Pode mudar a qualquer momento. |
| `code` | string | yes | Código estável do erro. É por ele que o seu sistema decide o que fazer. |
| `details` | object | no | Contexto estruturado do erro, quando existe. |

**401** Credencial ausente, inválida ou expirada.

| Field | Type | Required | Details |
| --- | --- | --- | --- |
| `message` | string | yes | Descrição em português, pronta para exibir. Pode mudar a qualquer momento. |
| `code` | string | yes | Código estável do erro. É por ele que o seu sistema decide o que fazer. |
| `details` | object | no | Contexto estruturado do erro, quando existe. |

**403** Sem permissão: escopo, IP ou operação desabilitada.

| Field | Type | Required | Details |
| --- | --- | --- | --- |
| `message` | string | yes | Descrição em português, pronta para exibir. Pode mudar a qualquer momento. |
| `code` | string | yes | Código estável do erro. É por ele que o seu sistema decide o que fazer. |
| `details` | object | no | Contexto estruturado do erro, quando existe. |

**429** Limite de requisições excedido.

| Field | Type | Required | Details |
| --- | --- | --- | --- |
| `message` | string | yes | Descrição em português, pronta para exibir. Pode mudar a qualquer momento. |
| `code` | string | yes | Código estável do erro. É por ele que o seu sistema decide o que fazer. |
| `details` | object | no | Contexto estruturado do erro, quando existe. |