> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ar-online.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Comprovante e laudo pericial

> Baixe o comprovante de envio (PDF em base64) e o laudo pericial (PDF binário) de um envio.

A plataforma disponibiliza dois documentos PDF para comprovação de um envio: o **comprovante de envio** e o **laudo pericial**. Ambos são consultados pelo `idEmail`, mas têm formatos de resposta diferentes — atente-se a isso na hora de tratar o retorno.

<Note>
  A principal diferença é o formato de entrega: o **comprovante** vem como uma string **base64** dentro de um JSON; o **laudo** vem como o **arquivo PDF binário** diretamente no corpo da resposta.
</Note>

## Comprovante do envio

Retorna o comprovante de envio em PDF, codificado em base64.

* **Endpoint:** `GET /gw/sending-proof/{idEmail}`
* **Parâmetro de caminho:** `idEmail` — identificador único obtido no envio.

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET "https://api.ar-online.com.br/gw/sending-proof/f6cb58f2-3e9b-4899-b703-3facd52e17ee" \
    -H "Authorization: SEU_TOKEN_AQUI"
  ```

  ```json Resposta (com status) theme={null}
  {
    "content": "JVBERi0xLjQKMSAwIG9iago8PAovVGl0bGUgKP7/KQovQ3JlYXRvciAo/v8pCi9Qcm9kdWNlciAo..."
  }
  ```

  ```json Resposta (sem status de entrega) theme={null}
  {
    "message": "O comprovante para e-mail consultado ainda não possui o status de entrega"
  }
  ```
</CodeGroup>

<ResponseField name="content" type="string">Comprovante PDF codificado em **base64**. Decodifique a string para reconstruir o arquivo PDF.</ResponseField>
<ResponseField name="message" type="string">Retornado **no lugar** de `content` quando o e-mail ainda não possui status de entrega. Nesse caso o comprovante ainda não está disponível — consulte novamente mais tarde.</ResponseField>

<Tip>
  Como o conteúdo vem em base64, salve o PDF decodificando a string. Por exemplo, em linha de comando: extraia o valor de `content` e rode `base64 --decode > comprovante.pdf`.
</Tip>

## Laudo pericial

Retorna o laudo pericial em PDF, entregue como **arquivo binário** diretamente no corpo da resposta (não em base64).

* **Endpoint:** `GET /gw/email/laudo/{idEmail}`
* **Parâmetro de caminho:** `idEmail` — identificador único (UUID) obtido no envio.

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET "https://api.ar-online.com.br/gw/email/laudo/f6cb58f2-3e9b-4899-b703-3facd52e17ee" \
    -H "Authorization: SEU_TOKEN_AQUI" \
    --output laudo.pdf
  ```

  ```json Resposta (404 — não encontrado) theme={null}
  {
    "statusCode": 404,
    "message": "Registro não encontrado"
  }
  ```
</CodeGroup>

Em caso de sucesso (HTTP 200), o corpo da resposta é o **arquivo PDF binário**, acompanhado dos cabeçalhos:

```
Content-Type: application/pdf
Content-Disposition: inline; filename="laudo.pdf"
```

<ResponseField name="Content-Type" type="header">`application/pdf` — indica que o retorno é um arquivo PDF.</ResponseField>
<ResponseField name="Content-Disposition" type="header">Define se o arquivo será exibido no navegador (`inline`) ou baixado, e o nome sugerido (`filename`).</ResponseField>

<Warning>
  Como o laudo é binário, **não** tente decodificá-lo como base64 nem fazer `JSON.parse` da resposta de sucesso. Salve o corpo diretamente em um arquivo `.pdf` (no cURL acima, com `--output`). Se o registro não existir, a API responde **HTTP 404** com um JSON `{ statusCode, message }`.
</Warning>

## Verificação do carimbo do tempo

Cada comprovação de envio é assinada com um **carimbo de tempo** emitido por uma Autoridade de Carimbo do Tempo (TSA). Você pode verificar esse carimbo de forma independente, fora da plataforma, usando o [OpenSSL](https://www.openssl.org/).

**Pré-requisitos:**

* OpenSSL instalado.
* Acesso a um terminal (Linux) ou prompt de comando (Windows).
* O carimbo em **base64**, copiado da página de perícia.

<Steps>
  <Step title="Copie o carimbo">
    Na **página de perícia** do envio, abra a aba **AR-Email** e copie o conteúdo do **Carimbo** (uma string base64).
  </Step>

  <Step title="Salve em um arquivo">
    Cole o conteúdo em um arquivo de texto chamado `carimbo-email.txt`.
  </Step>

  <Step title="Decodifique e inspecione">
    Execute o comando abaixo. Ele decodifica o base64 e exibe os dados do carimbo de tempo:

    ```bash theme={null}
    cat carimbo-email.txt | base64 -d | openssl ts -reply -text -in /dev/stdin
    ```
  </Step>
</Steps>

O comando retorna os dados que comprovam a autenticidade do carimbo:

<ResponseField name="Política" type="campo">Política aplicada no carimbo do tempo.</ResponseField>
<ResponseField name="Algoritmo de hash" type="campo">Algoritmo de hash utilizado na assinatura.</ResponseField>
<ResponseField name="Data e hora" type="campo">Momento exato registrado pelo carimbo.</ResponseField>
<ResponseField name="TSA" type="campo">Identificação da Autoridade de Carimbo do Tempo que emitiu o carimbo.</ResponseField>

<Info>
  A verificação do carimbo de tempo também faz parte da cadeia de prova de eventos como o [hard bounce](/notas-tecnicas/hard-bounce).
</Info>
