Skip to main content
O Scanify permite que você receba o resultado do processamento assim que ele for concluído, usando um callbackUrl informado em cada requisição.

O que é o callbackUrl?

O callbackUrl é um parâmetro opcional que você envia junto com o documento para processar. Ele define para onde o Scanify enviará o resultado da extração e validação, assim que o documento for processado.

Como usar

Inclua os campos de callback no corpo JSON da requisição POST /extract:
CampoTipoObrigatórioDescrição
callbackUrlstringnãoURL que receberá o resultado
callbackMethodPOST | PATCH | PUTnãoMétodo HTTP (padrão: POST)
callbackAuthTokenstringnãoToken enviado no header Authorization para o seu endpoint
includeMarkdownInWebhookbooleannãoInclui o markdown do documento no payload (padrão: false)
signaturestringnãoString opaca que o Scanify reenvia, sem modificação, no header x-scanify-signature do callback. Use-a apenas como token de identificação — não é uma assinatura HMAC calculada pelo Scanify.

Cabeçalhos do callback

O Scanify sempre envia os seguintes cabeçalhos:
  • Content-Type: application/json
  • Authorization: Bearer <callbackAuthToken> — presente apenas se callbackAuthToken foi fornecido
  • x-scanify-signature: <signature> — presente apenas se signature foi fornecida na requisição original

Payload de resposta

Assim que o processamento for concluído, o Scanify enviará a requisição para a URL especificada.
Dica: Replique esse payload em ambiente de teste para validar o seu endpoint antes de ir para produção.

Boas práticas para o callback

  • Certifique-se de que sua URL:
    • Está acessível publicamente
    • Aceita requisições POST com Content-Type: application/json
    • Retorna HTTP 200 para confirmar o recebimento
Você pode usar ferramentas como Webhook.cool para testar localmente.

O que acontece se a URL falhar?

O Scanify realiza até 3 tentativas de entrega, com backoff exponencial entre elas. Apenas respostas 2xx contam como sucesso; qualquer outro código (ou timeout no seu endpoint) dispara nova tentativa.
Se todas as 3 tentativas falharem, o resultado não será reenviado automaticamente. Use o endpoint GET /extract/:requestId para recuperar o resultado.

Erros comuns e como resolver

Certifique-se de que o callbackUrl foi enviado corretamente na requisição e que está acessível externamente.
Corrija qualquer exceção no seu backend e lembre-se de retornar 200 OK mesmo que você armazene o resultado de forma assíncrona.
Isso acontece quando seu endpoint não responde com sucesso. Garanta que seu serviço finalize a requisição com um código 200.
Seu endpoint pode ser chamado mais de uma vez para o mesmo request_id (devido a retries em rede). Implemente deduplicação no seu lado usando request_id como chave.