Polling vs. Webhooks
Por que é melhor usar Webhooks?
Polling e Webhooks permitem acompanhar alterações nos recursos da API, mas atendem a necessidades diferentes.
Para acompanhar mudanças de estado continuamente, prefira Webhooks. Utilize consultas GET quando precisar recuperar o estado atual de um recurso sob demanda.
Qual abordagem utilizar?
| Necessidade | Abordagem recomendada |
|---|---|
| Saber quando um recurso mudou | Webhook |
| Executar uma ação quando um evento ocorrer | Webhook |
| Manter sistemas sincronizados | Webhook |
| Consultar o estado atual de um recurso | GET |
| Realizar uma consulta pontual | GET |
| Recuperar informações para conferência | GET |
Polling
No polling, sua aplicação consulta repetidamente a API até identificar uma mudança no recurso.
Em uma cobrança, por exemplo, a aplicação pode consultar o pagamento até encontrar o estado esperado.

Fluxo com polling
%%{init: {"flowchart": {"nodeSpacing": 18,"rankSpacing": 24,"diagramPadding": 4,"padding": 7}}}%%
flowchart TD
A["Criar a cobrança"] --> B["Consultar a cobrança"]
B --> C{"Pagamento confirmado?"}
C --> CSim(("Sim"))
C --> CNao(("Não"))
CSim --> D["Atualizar a aplicação"]
CNao --> E["Aguardar novo intervalo"]
E --> B
classDef inicio fill:#DBEAFE,stroke:#2563EB,color:#1E3A8A,stroke-width:3px
classDef decisao fill:#FEF3C7,stroke:#D97706,color:#78350F,stroke-width:3px
classDef validacao fill:#E0F2FE,stroke:#0284C7,color:#0C4A6E,stroke-width:2px
classDef sucesso fill:#DCFCE7,stroke:#16A34A,color:#14532D,stroke-width:3px
classDef respostaSim fill:#22C55E,stroke:#15803D,color:#FFFFFF,stroke-width:3px
classDef respostaNao fill:#EF4444,stroke:#B91C1C,color:#FFFFFF,stroke-width:3px
class A inicio
class C decisao
class B,E validacao
class D sucesso
class CSim respostaSim
class CNao respostaNao
linkStyle default stroke:#94A3B8,stroke-width:2px
linkStyle 2 stroke:#22C55E,stroke-width:4px
linkStyle 3 stroke:#EF4444,stroke-width:4px
Quanto menor o intervalo entre consultas, maior o número de requisições realizadas.
O uso frequente de polling também consome os limites da API e pode resultar em HTTP 429 Too Many Requests quando esses limites são atingidos.
Webhooks
Com Webhooks, sua aplicação não precisa consultar repetidamente a API para descobrir se um evento ocorreu.
Quando houver um evento configurado, o Asaas envia uma requisição POST para o endpoint da sua aplicação.

Fluxo com Webhooks
%%{init: {"flowchart": {"nodeSpacing": 18,"rankSpacing": 24,"diagramPadding": 4,"padding": 7}}}%%
flowchart TD
A["Criar a cobrança"] --> B["Aguardar o evento"]
B --> C["Receber o Webhook"]
C --> D["Persistir o evento"]
D --> E["Responder HTTP 200"]
E --> F["Atualizar a aplicação"]
classDef inicio fill:#DBEAFE,stroke:#2563EB,color:#1E3A8A,stroke-width:3px
classDef validacao fill:#E0F2FE,stroke:#0284C7,color:#0C4A6E,stroke-width:2px
classDef sucesso fill:#DCFCE7,stroke:#16A34A,color:#14532D,stroke-width:3px
class A inicio
class B,C,D,E validacao
class F sucesso
linkStyle default stroke:#94A3B8,stroke-width:2px
Exemplo de endpoint
POST https://api.exemplo.com/webhooks/asaasExemplo de payload
{
"id": "evt_05b708f961d739ea7eba7e4db318f621",
"event": "PAYMENT_RECEIVED",
"payment": {
"id": "pay_080225913252"
}
}O que considerar ao utilizar Webhooks
| Comportamento | Como tratar |
|---|---|
| Método de entrega | Receba requisições POST |
| Resposta esperada | Retorne HTTP 200 |
| Timeout | Responda em até 10 segundos |
| Modelo de entrega | Considere que o mesmo evento pode ser enviado mais de uma vez |
| Falha de comunicação | Esteja preparado para novas tentativas |
| Autenticação | Valide asaas-access-token quando utilizar authToken |
Como a entrega segue o modelo at least once, utilize o id do evento para implementar idempotência.
Consulte como implementar idempotência em Webhooks.
RecomendadoNão utilize polling como mecanismo principal para acompanhar mudanças de estado quando existir um evento de Webhook correspondente.
Use Webhooks para receber a mudança e consultas
GETquando precisar recuperar o estado atual do recurso.
Próximos passos
Updated 9 days ago
