# Criar webhook (/docs/pix-processamento/endpoints/webhooks/post_user_webhook)

## POST /user/webhooks

`POST https://api.payzu.processamento.com/v1/user/webhooks`

Cadastra um endpoint de webhook. Se `generateSecret` for true, a resposta traz o `secret` HMAC (exibido só aqui).

Guia: Webhooks (/docs/pix-processamento/webhooks)

### Body params

| Field | Type | Required | Details |
| --- | --- | --- | --- |
| `url` | string | yes | URL (http ou https) que vai receber as notificações. — format: uri |
| `events` | object[] | no | Eventos a assinar. — default:  |
| `generateSecret` | boolean | no | Gera um segredo de assinatura HMAC para este webhook. — default: false |
| `active` | boolean | no | Se o webhook começa ativo. — default: true |

### Responses

**201** Webhook criado.

| Field | Type | Required | Details |
| --- | --- | --- | --- |
| `id` | string | no | Identificador do webhook. |
| `url` | string | no | Endereço que recebe as notificações. |
| `active` | boolean | no | Indica se o webhook já começa recebendo eventos. |
| `events` | object[] | no | Eventos assinados por este webhook. |
| `hasSecret` | boolean | no | Indica se o webhook tem segredo de assinatura. |
| `createdAt` | string | no | format: date-time |
| `updatedAt` | string | no | Data e hora da última alteração do webhook. — format: date-time |
| `secret` | string | null | no | Segredo de assinatura HMAC. |

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

| Field | Type | Required | Details |
| --- | --- | --- | --- |
| `status` | string | yes | Marcador fixo de resposta de erro. |
| `error` | string | yes | Nome do status HTTP correspondente. |
| `errorCode` | string | yes | Código de erro estável e legível por máquina, quando disponível. |
| `message` | string | yes | Mensagem de erro legível. |
| `statusCode` | integer | yes | Código de status HTTP. |
| `requestId` | string | yes | ID único de correlação da requisição (cuid). |
| `details` | object[] | no | Erros de validação por campo, quando aplicável. |
| `details.field` | string | yes | Caminho do campo rejeitado na validação, sem a barra inicial. |
| `details.message` | string | yes | Motivo da rejeição daquele campo, em português. |
| `retryAfterSeconds` | integer | no | Segundos a aguardar antes de tentar novamente. |

**401** Falha de autenticação

| Field | Type | Required | Details |
| --- | --- | --- | --- |
| `status` | string | yes | Marcador fixo de resposta de erro. |
| `error` | string | yes | Nome do status HTTP correspondente. |
| `errorCode` | string | yes | Código de erro estável e legível por máquina, quando disponível. |
| `message` | string | yes | Mensagem de erro legível. |
| `statusCode` | integer | yes | Código de status HTTP. |
| `requestId` | string | yes | ID único de correlação da requisição (cuid). |
| `details` | object[] | no | Erros de validação por campo, quando aplicável. |
| `details.field` | string | yes | Caminho do campo rejeitado na validação, sem a barra inicial. |
| `details.message` | string | yes | Motivo da rejeição daquele campo, em português. |
| `retryAfterSeconds` | integer | no | Segundos a aguardar antes de tentar novamente. |

**403** Operação não permitida

| Field | Type | Required | Details |
| --- | --- | --- | --- |
| `status` | string | yes | Marcador fixo de resposta de erro. |
| `error` | string | yes | Nome do status HTTP correspondente. |
| `errorCode` | string | yes | Código de erro estável e legível por máquina, quando disponível. |
| `message` | string | yes | Mensagem de erro legível. |
| `statusCode` | integer | yes | Código de status HTTP. |
| `requestId` | string | yes | ID único de correlação da requisição (cuid). |
| `details` | object[] | no | Erros de validação por campo, quando aplicável. |
| `details.field` | string | yes | Caminho do campo rejeitado na validação, sem a barra inicial. |
| `details.message` | string | yes | Motivo da rejeição daquele campo, em português. |
| `retryAfterSeconds` | integer | no | Segundos a aguardar antes de tentar novamente. |

**409** Conflito com o estado atual do recurso

| Field | Type | Required | Details |
| --- | --- | --- | --- |
| `status` | string | yes | Marcador fixo de resposta de erro. |
| `error` | string | yes | Nome do status HTTP correspondente. |
| `errorCode` | string | yes | Código de erro estável e legível por máquina, quando disponível. |
| `message` | string | yes | Mensagem de erro legível. |
| `statusCode` | integer | yes | Código de status HTTP. |
| `requestId` | string | yes | ID único de correlação da requisição (cuid). |
| `details` | object[] | no | Erros de validação por campo, quando aplicável. |
| `details.field` | string | yes | Caminho do campo rejeitado na validação, sem a barra inicial. |
| `details.message` | string | yes | Motivo da rejeição daquele campo, em português. |
| `retryAfterSeconds` | integer | no | Segundos a aguardar antes de tentar novamente. |