MOST Docs
mostValid API
mostQI API
DEMO
DEMO
  • Generative Content Extraction
  • Content Extraction
  • Multipage Content Extraction
  • Vio Extraction
  • Liveness Streaming
  • Facematch
  • Notas Fiscais - Extração e validação
  • MultiAddress Parsing
  • License Plate
mostValid API
mostQI API
DEMO
DEMO
  • Generative Content Extraction
  • Content Extraction
  • Multipage Content Extraction
  • Vio Extraction
  • Liveness Streaming
  • Facematch
  • Notas Fiscais - Extração e validação
  • MultiAddress Parsing
  • License Plate
Help Desk
MOST Linkedin
MOSTQI Instagram
MOST Youtube
pt-BR
en-US
pt-BR
en-US
  1. Generative Content Extraction - GCE
  • Introdução
  • Consumindo a API
  • Características da API
  • Mensagens de erro
  • Material de Apoio
  • mostValid
    • Authenticate (Get JWT)
      POST
    • Content Extraction
      POST
    • Process Status
      POST
  • mostValid Generative
    • Autenticar
      • Authenticate (Get JWT)
    • Agentic Content Extraction - ACE
      • Enviar documento [application/json]
      • Enviar documento [multipart/form-data]
    • Generative Content Extraction - GCE
      • Retorno do Webhook
      • Enviar documento [application/json]
        POST
      • Enviar documento [multipart/form-data]
        POST
      • Consultar status [application/json]
        POST
    • Multipage Content Extraction - MCE
      • Enviar documento [application/json]
      • Enviar documento [multipart/form-data]
  1. Generative Content Extraction - GCE

Retorno do Webhook

Quando um webhook é informado no envio do documento, a mostValid notifica a URL configurada quando o processo é enviado para revisão e quando atinge um status final, enviando o resultado do processamento. Dessa forma, não é necessário consultar periodicamente a rota Consultar status para saber se o resultado está disponível.

Configurando o webhook#

O webhook é configurado na própria requisição de envio do documento, tanto em application/json quanto em multipart/form-data.
Parâmetro (JSON)Parâmetro (form-data)ObrigatórioDescrição
webhook.urlwebhook.urlNãoURL que receberá o resultado do processamento.
webhook.fallbackUrlwebhook.fallbackUrlNãoURL alternativa, utilizada quando não for possível entregar o resultado na webhook.url.
No envio em JSON, os parâmetros são informados dentro do objeto webhook:
{
  "fileUrl": "https://exemplo.com.br/documentos/nota-fiscal.pdf",
  "webhook": {
    "url": "https://seu-dominio.com.br/webhook/mostvalid",
    "fallbackUrl": "https://seu-dominio.com.br/webhook/mostvalid-fallback"
  }
}
Importante: as URLs informadas devem ser públicas, utilizar HTTPS e estar preparadas para receber requisições POST com corpo application/json.

Quando o webhook é enviado#

O webhook é disparado nas seguintes situações:
processStatusQuando ocorre
TO_ANALYSISO documento precisa de complementação e foi gerada uma tarefa de revisão.
FINISHEDO processo foi concluído e o resultado está disponível, com ou sem revisão.
ERROROcorreu um erro no processamento. O motivo é informado em processStatusDescription.
Os status IN_PROCESS, IN_ANALYSIS e CANCELED não geram notificação via webhook.
Atenção: um mesmo processo pode gerar mais de uma notificação. Quando o documento vai para revisão, sua aplicação recebe primeiro um webhook com TO_ANALYSIS e, após a conclusão da revisão, um segundo webhook com FINISHED. Utilize o campo processStatus para identificar a etapa de cada notificação.

Estrutura do payload#

O corpo enviado ao webhook segue a mesma estrutura da resposta da rota Consultar status, com uma diferença: os metadados da requisição HTTP (requestId, elapsedMilliseconds e status) não são enviados, pois o webhook não é a resposta a uma chamada feita pelo cliente.
CampoTipoDescrição
mostQiRequestIdstringIdentificador da requisição de extração.
processIdstring (UUID)Identificador do processo, o mesmo retornado no envio do documento. Utilize-o para relacionar o webhook à requisição original.
processStatusstringStatus final do processo. Os valores possíveis estão descritos em Status do processo.
processStatusDescriptionstring | nullDetalhe sobre o status do processo. É preenchido principalmente em casos de ERROR, com o motivo da falha; nos demais casos, geralmente é enviado como null.
resultarray | nullResultado da extração, com a mesma estrutura da rota Consultar status (type, stdType, extractions, sections, fields e tables). Em casos de ERROR, é enviado como null.
Os status de extrações, seções, campos, cabeçalhos e células seguem a tabela Status dos atributos. Em um processo que passou por revisão, os itens analisados retornam como REVIEWED, MODIFIED ou UNREADABLE, e o valor a ser utilizado é sempre o do campo finalValue.

Exemplos de payload#

Processo finalizado (FINISHED)#

Exemplo de webhook de um processo finalizado após revisão. Os campos que não foram encontrados no documento foram confirmados pelo revisor e retornam com status REVIEWED e finalValue igual a null.
{
    "mostQiRequestId": "Tn6wQa1ZeX8cVb3MkL9Rp",
    "processId": "5e8a1c3f-7b2d-4f6e-9a0c-1d3b5f7e9a2c",
    "processStatus": "FINISHED",
    "processStatusDescription": null,
    "result": [
        {
            "type": "documento-fiscal",
            "stdType": "fiscal-document",
            "extractions": [
                {
                    "source": "iocr",
                    "score": 0.99,
                    "status": "REVIEWED",
                    "tags": [
                        "country=bra",
                        "id=bra-nlp-danfce-1",
                        "language=pt-BR",
                        "std-type=fiscal-document",
                        "subtype=danfce",
                        "type=documento-fiscal"
                    ],
                    "sections": [
                        {
                            "name": "documento",
                            "stdName": "document",
                            "score": 0.99,
                            "status": "REVIEWED",
                            "fields": [
                                {
                                    "name": "nome_prestador",
                                    "stdName": "supplier_name",
                                    "value": "EMPRESA EXEMPLO SERVIÇOS IMOBILIÁRIOS LTDA.",
                                    "finalValue": "EMPRESA EXEMPLO SERVIÇOS IMOBILIÁRIOS LTDA.",
                                    "score": 0.69,
                                    "status": "MOSTQIIOCR"
                                },
                                {
                                    "name": "nome_fantasia_prestador",
                                    "stdName": "supplier_trade_name",
                                    "value": null,
                                    "finalValue": null,
                                    "score": null,
                                    "status": "REVIEWED"
                                },
                                {
                                    "name": "cpf_cnpj_prestador",
                                    "stdName": "supplier_cpf_cnpj",
                                    "value": "11222333000181",
                                    "finalValue": "11222333000181",
                                    "score": 0.99,
                                    "status": "MOSTQIIOCR"
                                },
                                {
                                    "name": "endereco_prestador",
                                    "stdName": "supplier_address",
                                    "value": "AV EXEMPLO, 100, SALA 101, Centro - Cep: 01234-567 Cidade Fictícia SP",
                                    "finalValue": "AV EXEMPLO, 100, SALA 101, Centro - Cep: 01234-567 Cidade Fictícia SP",
                                    "score": 0.99,
                                    "status": "MOSTQIIOCR"
                                },
                                {
                                    "name": "inscricao_estadual_prestador",
                                    "stdName": "supplier_state_registration",
                                    "value": null,
                                    "finalValue": null,
                                    "score": null,
                                    "status": "REVIEWED"
                                },
                                {
                                    "name": "valor_total",
                                    "stdName": "total_value",
                                    "value": "2425.00",
                                    "finalValue": "2425.00",
                                    "score": 0.99,
                                    "status": "MOSTQIIOCR"
                                },
                                {
                                    "name": "valor_desconto",
                                    "stdName": "discount_value",
                                    "value": "0.00",
                                    "finalValue": "0.00",
                                    "score": 0.99,
                                    "status": "MOSTQIIOCR"
                                },
                                {
                                    "name": "valor_total_bruto",
                                    "stdName": "total_gross_value",
                                    "value": "2500.00",
                                    "finalValue": "2500.00",
                                    "score": 0.99,
                                    "status": "MOSTQIIOCR"
                                },
                                {
                                    "name": "chave_acesso",
                                    "stdName": "access_key",
                                    "value": null,
                                    "finalValue": null,
                                    "score": null,
                                    "status": "REVIEWED"
                                },
                                {
                                    "name": "nome",
                                    "stdName": "name",
                                    "value": "MARIA SILVA SANTOS",
                                    "finalValue": "MARIA SILVA SANTOS",
                                    "score": 0.99,
                                    "status": "MOSTQIIOCR"
                                },
                                {
                                    "name": "endereco",
                                    "stdName": "address",
                                    "value": null,
                                    "finalValue": null,
                                    "score": null,
                                    "status": "REVIEWED"
                                },
                                {
                                    "name": "cpf_cnpj",
                                    "stdName": "cpf_cnpj",
                                    "value": "12345678909",
                                    "finalValue": "12345678909",
                                    "score": 0.99,
                                    "status": "MOSTQIIOCR"
                                },
                                {
                                    "name": "numero_documento",
                                    "stdName": "document_number",
                                    "value": "000123",
                                    "finalValue": "000123",
                                    "score": 0.94,
                                    "status": "MOSTQIIOCR"
                                },
                                {
                                    "name": "serie",
                                    "stdName": "serial",
                                    "value": null,
                                    "finalValue": null,
                                    "score": null,
                                    "status": "REVIEWED"
                                },
                                {
                                    "name": "data_emissao",
                                    "stdName": "issue_date",
                                    "value": "2025-03-10",
                                    "finalValue": "2025-03-10",
                                    "score": 0.99,
                                    "status": "MOSTQIIOCR"
                                },
                                {
                                    "name": "hora_emissao",
                                    "stdName": "issue_time",
                                    "value": "14:30:00",
                                    "finalValue": "14:30:00",
                                    "score": 0.99,
                                    "status": "MOSTQIIOCR"
                                },
                                {
                                    "name": "numero_protocolo",
                                    "stdName": "protocol_number",
                                    "value": null,
                                    "finalValue": null,
                                    "score": null,
                                    "status": "REVIEWED"
                                },
                                {
                                    "name": "data_protocolo",
                                    "stdName": "protocol_date",
                                    "value": null,
                                    "finalValue": null,
                                    "score": null,
                                    "status": "REVIEWED"
                                },
                                {
                                    "name": "hora_protocolo",
                                    "stdName": "protocol_time",
                                    "value": null,
                                    "finalValue": null,
                                    "score": null,
                                    "status": "REVIEWED"
                                },
                                {
                                    "name": "valor_tributo",
                                    "stdName": "tax_value",
                                    "value": "75.00",
                                    "finalValue": "75.00",
                                    "score": 0.99,
                                    "status": "MOSTQIIOCR"
                                }
                            ],
                            "tables": [
                                {
                                    "name": "tabela_demonstrativo",
                                    "stdName": "demonstrative_table",
                                    "score": 0.98,
                                    "status": "REVIEWED",
                                    "headers": [
                                        {
                                            "name": "codigo",
                                            "stdName": "code",
                                            "score": 0.99,
                                            "status": "MOSTQIIOCR"
                                        },
                                        {
                                            "name": "descricao",
                                            "stdName": "description",
                                            "score": 0.99,
                                            "status": "MOSTQIIOCR"
                                        },
                                        {
                                            "name": "quantidade",
                                            "stdName": "quantity",
                                            "score": 0.99,
                                            "status": "MOSTQIIOCR"
                                        },
                                        {
                                            "name": "valor_unitario",
                                            "stdName": "unit_value",
                                            "score": 0.99,
                                            "status": "MOSTQIIOCR"
                                        },
                                        {
                                            "name": "valor_desconto",
                                            "stdName": "discount_value",
                                            "score": null,
                                            "status": "REVIEWED"
                                        },
                                        {
                                            "name": "valor",
                                            "stdName": "value",
                                            "score": 0.91,
                                            "status": "MOSTQIIOCR"
                                        }
                                    ],
                                    "values": [
                                        [
                                            {
                                                "name": "codigo",
                                                "stdName": "code",
                                                "value": "7890000000017",
                                                "finalValue": "7890000000017",
                                                "score": 0.99,
                                                "status": "MOSTQIIOCR"
                                            },
                                            {
                                                "name": "descricao",
                                                "stdName": "description",
                                                "value": "INTERMEDIAÇÃO NA COMPRA E VENDA DE IMÓVEIS",
                                                "finalValue": "INTERMEDIAÇÃO NA COMPRA E VENDA DE IMÓVEIS",
                                                "score": 0.99,
                                                "status": "MOSTQIIOCR"
                                            },
                                            {
                                                "name": "quantidade",
                                                "stdName": "quantity",
                                                "value": "1",
                                                "finalValue": "1",
                                                "score": 0.99,
                                                "status": "MOSTQIIOCR"
                                            },
                                            {
                                                "name": "valor_unitario",
                                                "stdName": "unit_value",
                                                "value": "2500.00",
                                                "finalValue": "2500.00",
                                                "score": 0.99,
                                                "status": "MOSTQIIOCR"
                                            },
                                            {
                                                "name": "valor_desconto",
                                                "stdName": "discount_value",
                                                "value": null,
                                                "finalValue": null,
                                                "score": null,
                                                "status": "REVIEWED"
                                            },
                                            {
                                                "name": "valor",
                                                "stdName": "value",
                                                "value": "2425.00",
                                                "finalValue": "2425.00",
                                                "score": 0.91,
                                                "status": "MOSTQIIOCR"
                                            }
                                        ]
                                    ]
                                },
                                {
                                    "name": "tabela_forma_pagamento",
                                    "stdName": "payment_method_table",
                                    "score": null,
                                    "status": "MOSTQIIOCR",
                                    "headers": [
                                        {
                                            "name": "forma_pagamento",
                                            "stdName": "payment_method",
                                            "score": null,
                                            "status": "MOSTQIIOCR"
                                        },
                                        {
                                            "name": "valor",
                                            "stdName": "value",
                                            "score": null,
                                            "status": "MOSTQIIOCR"
                                        }
                                    ],
                                    "values": []
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}

Processo com erro (ERROR)#

Exemplo de webhook de um processo que não pôde ser processado porque o arquivo enviado está protegido por senha. Neste caso, o result é null e o motivo do erro é informado em processStatusDescription.
{
    "mostQiRequestId": "Lm4nPq7RsT1uVw3XyZ5Ab",
    "processId": "9b2e4d6f-1a3c-4e5b-8d7f-0c2a4e6b8d1f",
    "processStatus": "ERROR",
    "processStatusDescription": "The uploaded file is encrypted by a password",
    "result": null
}

Processo enviado para revisão (TO_ANALYSIS)#

O webhook de TO_ANALYSIS segue a mesma estrutura do exemplo de FINISHED. O result traz os dados extraídos até o momento, e os itens que aguardam revisão aparecem com status TO_ANALYSIS e finalValue igual a null (ou ainda sem o valor revisado). O resultado definitivo deve ser considerado apenas no webhook de FINISHED.

Boas práticas para receber o webhook#

Responda rapidamente. Retorne um status HTTP 2xx assim que receber a requisição e processe o conteúdo de forma assíncrona, evitando que a entrega seja considerada como falha.
Use o processId como chave. Relacione o webhook ao documento enviado por meio do processId. Como um mesmo processo pode notificar TO_ANALYSIS e depois FINISHED, use o processStatus para decidir a ação e trate de forma idempotente uma mesma notificação recebida mais de uma vez.
Trate os erros. Em um webhook com ERROR, verifique o processStatusDescription para identificar o motivo, como um arquivo protegido por senha, e, se for o caso, reenvie o documento corrigido (por exemplo, informando o filePassword).
Considere sempre o finalValue. O campo value contém o valor extraído originalmente; o finalValue contém o valor final, já considerando a revisão, quando houver.
Tenha uma alternativa. Caso sua aplicação não receba o webhook, o resultado continua disponível na rota Consultar status, informando o processId.
Modificado em 2026-10-23 17:25:40
Página anterior
Generative Content Extraction - GCE
Próxima página
Enviar documento [application/json]
Built with