Documentação

Consultar uma verificação

Devolve a verificação com o status atual e, quando confirmada, como foi a confirmação (`confirmation`).

GET
/verifications/{verification_id}

Autenticação

apiKey
headerAuthorizationBearer <chave de API>

Chave de API no cabeçalho Authorization: Bearer cf_live_.... Crie e revogue chaves no painel, em Desenvolvedores > Chaves de API.

Parâmetros de caminho

verification_id*string

O id da verificação, que começa com ver_.

Corpo da resposta

A verificação.

application/json
  1. response

Uma verificação de endereço físico: a CartaFlow envia uma correspondência com um código, com a sua marca, e o endereço fica verificado quando a pessoa confirma o código. O código nunca aparece neste objeto, nem no painel.

id*string

Identificador único da verificação. Sempre começa com ver_.

Formato^ver_[A-Za-z0-9]+$
object*string

Tipo do objeto. Sempre verification.

status*string

Em que etapa a verificação está. Ela só avança: received, in_production, awaiting_code, verified. De received ela pode ir para canceled; de in_production, para canceled (pela CartaFlow) ou revoked; de awaiting_code, para failed, expired ou revoked; de verified, para revoked. Só verified quer dizer endereço confirmado.

Valores possíveis

  • received: A CartaFlow recebeu o pedido, cobrou o preço do seu saldo e colocou a correspondência com o código na fila de produção. Se você cancelar agora, nada é impresso e o valor volta para o saldo.
  • in_production: A correspondência com o código está sendo impressa e envelopada. Cancelar agora revoga a verificação (revoked), sem devolução do valor.
  • awaiting_code: A correspondência foi postada. Agora esperamos a pessoa confirmar o código. Ela tem 60 dias a partir da postagem (veja expires_at). Cancelar agora revoga a verificação, sem devolução do valor.
  • verified: A pessoa confirmou o código certo. Ela recebe correspondência no endereço informado. confirmation diz como e quando. Você ainda pode revogar a verificação, e ela passa para revoked.
  • failed: Foram digitados 5 códigos errados. A verificação foi bloqueada para impedir tentativas aleatórias. Crie uma nova verificação se quiser tentar de novo.
  • expired: Passaram 60 dias desde a postagem sem que a pessoa confirmasse o código.
  • canceled: A verificação foi cancelada antes da postagem e o valor voltou para o seu saldo. Ou você cancelou enquanto ela estava em received, ou a CartaFlow cancelou porque a correspondência não pôde ser produzida.
  • revoked: Você cancelou a verificação depois que a produção começou: em produção, aguardando código ou já verificada. O valor não volta para o saldo, porque a produção já começou, e uma correspondência que estava em produção ainda é postada. O código deixa de funcionar, na página e na API, e a verificação nunca mais aparece como verified.
Valores"received""in_production""awaiting_code""verified""failed""expired""canceled""revoked"
method*string

Como a pessoa confirma o código.

Valores possíveis

  • hosted_page: Na página com a sua marca, pelo QR code ou digitando o código.
  • code: Digitando o código no seu site ou aplicativo.
Valores"hosted_page""code"
source*string

Por onde a verificação foi criada. Não depende de como ela é confirmada (veja confirmation).

Valores possíveis

  • api: Pela API, com POST /v1/verifications.
  • dashboard: No painel, por alguém da sua equipe.
Valores"api""dashboard"
to*

O endereço verificado.

document*|||

Como a correspondência foi feita: o modelo da CartaFlow ou o seu PDF. A cópia dela, com o código escondido (000 000), está em preview_url.

instructions*|

O texto que você enviou para imprimir abaixo do código, no modelo da CartaFlow. null quando você não enviou.

return_url*|

Para onde a página leva a pessoa depois da confirmação. null quando não se aplica.

Formatouri
hosted_page_url*|

O endereço da página de confirmação, com a sua marca (por enquanto no domínio verifica.cartaflow.com.br): https://verifica.cartaflow.com.br/{id da sua conta}/{token da página}. É o endereço impresso na correspondência e o que o QR code abre; o QR code leva o código junto, mas este link não, então quem abre o link precisa digitar o código. Você pode mandar este link por e-mail ou mostrar no seu app. Trate-o como um endereço opaco: guarde e use como veio. null quando method é code.

Formatouri
attempts_remaining*integer

Quantos códigos errados ainda podem ser digitados. Começa em 5 e diminui a cada erro, pela página ou pela API. Em 0 a verificação vai para failed.

Intervalo0 <= value <= 5
expires_at*|

Prazo para a pessoa confirmar: 60 dias depois da postagem. null antes da postagem.

Formatodate-time
confirmation*|

Como e quando a pessoa confirmou o código: por onde (method), quando, de qual IP e de onde, aproximadamente. null enquanto a verificação não foi confirmada. Uma verificação revogada depois de confirmada mantém este registro, mas o status é revoked: o endereço não conta mais como verificado.

preview_url*|

Link para uma cópia da correspondência como ela será impressa, com o endereço, mas sem o código: no lugar dele aparece 000 000, e no lugar do QR code, um quadro que mostra onde ele será impresso. O código só existe no arquivo que a CartaFlow imprime: nem a API nem o painel conseguem mostrá-lo. O link vale por 60 minutos: consulte a verificação de novo para receber um link novo. null nos eventos e webhooks, e quando o arquivo não está disponível.

Formatouri
price*

O preço cobrado do saldo na criação. Com o modelo da CartaFlow, um envio simples do seu plano: uma linha base. Com o seu PDF, o preço de uma correspondência com as mesmas opções: base, additional_sheets e color. Nunca há serviços dos Correios. Volta para o saldo quando a verificação é cancelada (canceled); não volta quando ela é revogada (revoked).

reference*|

Seu identificador para esta verificação, como o número da fatura ou o id do cliente no seu sistema. Aparece no painel e pode ser usado como filtro nas listagens. Não precisa ser único. Até 100 caracteres. null quando você não enviou.

Tamanholength <= 100
metadata*

Pares chave-valor para guardar dados seus junto do objeto, como o id do cliente ou do contrato. Voltam em todas as respostas e webhooks e nunca são impressos. Até 20 chaves; chaves com até 40 caracteres e valores em texto com até 500 caracteres. Não guarde dados sensíveis, como senhas ou números de cartão. Objeto vazio {} quando você não enviou.

Camposproperties <= 20
status_transitions*

Quando a verificação chegou a cada status. null para os status pelos quais ela não passou. O status received é o momento de created_at. Uma verificação revogada depois de confirmada mantém verified_at.

created_at*string

Quando a verificação foi criada.

Formatodate-time
curl "https://api.cartaflow.com.br/v1/verifications/string" \  -H "Authorization: Bearer $CARTAFLOW_API_KEY"

{  "id": "ver_3Hd9Kp2qZ6tW",  "object": "verification",  "status": "awaiting_code",  "method": "hosted_page",  "source": "api",  "to": {    "name": "Destinatário Exemplo",    "street": "Praça da Sé",    "number": "128",    "complement": "Ap. 52",    "neighborhood": "Sé",    "city": "São Paulo",    "state": "SP",    "postal_code": "01001-000"  },  "document": {    "type": "template",    "title": "Confirme o seu endereço",    "body": "{{empresa}} pediu a confirmação de que você recebe correspondência neste endereço. Use o código abaixo para confirmar.",    "footer": "O código vale por 60 dias depois da postagem e só funciona para este endereço. Não compartilhe este código com ninguém.",    "include_qr_code": true,    "include_page_url": true  },  "instructions": null,  "return_url": "https://www.exemplo.com.br/conta",  "hosted_page_url": "https://verifica.cartaflow.com.br/acc_7Jw3Nf8Xq2Lp/9Qx2Lm7Tp4Rb8Kd3Wn6Yc1",  "attempts_remaining": 5,  "expires_at": "2026-12-14T16:05:00Z",  "confirmation": null,  "preview_url": "https://files.cartaflow.com.br/previews/ver_3Hd9Kp2qZ6tW.pdf?expires=1760369400&signature=5d2e81b3",  "price": {    "currency": "BRL",    "total": 990,    "items": [      {        "type": "base",        "quantity": 1,        "unit_amount": 990,        "amount": 990      }    ]  },  "reference": "cliente-1842",  "metadata": {},  "status_transitions": {    "in_production_at": "2026-10-13T21:00:00Z",    "awaiting_code_at": "2026-10-15T16:05:00Z",    "verified_at": null,    "failed_at": null,    "expired_at": null,    "canceled_at": null,    "revoked_at": null  },  "created_at": "2026-10-13T14:20:00Z"}