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

# Baixar imagens da verificação

> GET /public/validations-persons/{public_id}/files: as URLs assinadas da selfie e do documento de uma verificação.

Devolve URLs assinadas da selfie e do documento (frente e verso) de uma verificação. Cada URL abre um
único arquivo e vale por `expires_in` segundos.

<RequestExample>
  ```bash title="Pedir as imagens de uma verificação" theme={null}
  curl https://api-core.legitimuz.com/public/validations-persons/019f0000-0000-7000-8000-000000000001/files \
    -H "X-API-Key: $LEGITIMUZ_API_KEY"
  ```
</RequestExample>

<Warning>
  As imagens são dado biométrico do titular. Quem tem a URL lê o arquivo até ela vencer: não a
  registre em log nem em analytics, e não a repasse ao browser do titular. Guarde as imagens só pelo
  prazo da sua base legal.
</Warning>

## Requisitos

| Requisito | Detalhe |
| - | - |
| Autenticação | Header `X-API-Key` com a chave da integração (`lz_...`). Veja [autenticação](/start/authentication) |
| Permissão | **Ver verificações**. Baixar imagens exige também **Ver mídia da verificação**. Nascem desmarcadas: veja [como conceder](/platform/tokens#permissões-de-leitura) |
| IP liberado | Só IPs liberados pela Legitimuz. De outro IP, a chamada é barrada antes de chegar à API, com `403`, mesmo com chave e permissão corretas. Para liberar, fale com o [suporte](https://painel.legitimuz.com/support) e informe o IP fixo ou a faixa CIDR |
| Alcance | Só as verificações da integração da chave, no ambiente dela. As de outra integração da conta não aparecem |

## Parâmetros

| Parâmetro | Onde | Formato | Descrição |
| - | - | - | - |
| `public_id` | Caminho | UUID, obrigatório | `public_id` da verificação. Ache-o em [listar verificações](/api/list-verifications) |

A rota não aceita query string: qualquer parâmetro, inclusive CPF, responde `400 E_VALIDATION_FAILURE`.

## Resposta

`200` com `selfie`, `document_front` e `document_back`, cada um um arquivo ou `null`. Header `Cache-Control: no-store`.

### Campos

| Campo | Conteúdo | É `null` quando |
| - | - | - |
| `selfie` | Selfie da tentativa aceita na prova de vida | A prova de vida não foi aprovada, ou ainda não aconteceu |
| `document_front` | Captura mais recente da frente. Documento digital em PDF sai aqui, com `file.type` `application/pdf` | Não há arquivo da frente |
| `document_back` | Captura mais recente do verso | Não há captura do verso |

### Formato de cada arquivo

| Campo | Tipo | Descrição |
| - | - | - |
| `url` | `string` | URL assinada |
| `expires_in` | `integer` | Segundos de validade. Hoje, 300 |
| `expires_at` | `string` | Vencimento da URL. ISO 8601 em UTC |
| `file.public_id` | `string` | Identificador do arquivo |
| `file.type` | `string \| null` | Tipo do arquivo, como `image/jpeg` ou `application/pdf` |
| `file.size` | `string \| null` | Tamanho em bytes, como texto: `"245831"` |
| `file.created_at` | `string` | Criação do arquivo. ISO 8601 em UTC |
| `file.document_type` | `string \| null` | Família do documento lido naquele lado (`cnh`, `rg`, `cin`; mesmos valores de [`captured_document_type`](/api/list-verifications#parâmetros)). `null` na selfie e quando o lado ainda não tem leitura |

<ResponseExample>
  ```json title="Selfie, frente e verso" theme={null}
  {
    "selfie": {
      "url": "<URL_ASSINADA_DA_SELFIE>",
      "expires_in": 300,
      "expires_at": "2026-09-14T17:36:03.000Z",
      "file": {
        "public_id": "019f0000-0000-7000-8000-0000000000b1",
        "type": "image/jpeg",
        "size": "245831",
        "created_at": "2026-09-14T17:30:40.000Z",
        "document_type": null
      }
    },
    "document_front": {
      "url": "<URL_ASSINADA_DA_FRENTE>",
      "expires_in": 300,
      "expires_at": "2026-09-14T17:36:03.000Z",
      "file": {
        "public_id": "019f0000-0000-7000-8000-0000000000b2",
        "type": "image/jpeg",
        "size": "512044",
        "created_at": "2026-09-14T17:30:25.000Z",
        "document_type": "rg"
      }
    },
    "document_back": {
      "url": "<URL_ASSINADA_DO_VERSO>",
      "expires_in": 300,
      "expires_at": "2026-09-14T17:36:03.000Z",
      "file": {
        "public_id": "019f0000-0000-7000-8000-0000000000b3",
        "type": "image/jpeg",
        "size": "498120",
        "created_at": "2026-09-14T17:30:31.000Z",
        "document_type": "rg"
      }
    }
  }
  ```

  ```json title="Prova de vida não aprovada" theme={null}
  {
    "selfie": null,
    "document_front": {
      "url": "<URL_ASSINADA_DA_FRENTE>",
      "expires_in": 300,
      "expires_at": "2026-09-14T17:36:03.000Z",
      "file": {
        "public_id": "019f0000-0000-7000-8000-0000000000b2",
        "type": "image/jpeg",
        "size": "512044",
        "created_at": "2026-09-14T17:30:25.000Z",
        "document_type": "cnh"
      }
    },
    "document_back": null
  }
  ```
</ResponseExample>

## Códigos de resposta

| HTTP | Código | Quando |
| - | - | - |
| `200` | — | Arquivos devolvidos. Os que não existem vêm `null` |
| `400` | `E_VALIDATION_FAILURE` | `public_id` fora do formato UUID, ou qualquer parâmetro na query string |
| `401` | `E_UNAUTHORIZED_ACCESS` | Chave ausente, inválida, expirada ou revogada |
| `403` | `E_FORBIDDEN` | Chave sem **Ver verificações** ou sem **Ver mídia da verificação**. IP não liberado também recebe `403`, mas antes de chegar à API: veja [requisitos](#requisitos) |
| `404` | `E_NOT_FOUND` | Verificação inexistente, de outra integração, de outra conta ou do outro ambiente. Mesma resposta em todos os casos |
| `429` | `E_RATE_LIMITED` | Teto de chamadas por minuto na mesma chave, hoje de 500. Respeite `Retry-After`. Veja [limites](/api/errors#limites-de-uso) |
| `500` | `E_INTERNAL_SERVER_ERROR` | Falha inesperada |

Corpo de erro: [erros da API](/api/errors).

## Próximo passo

<Columns cols={2}>
  <Card title="Consultar verificação" icon="file-search" href="/api/get-verification">
    Os dados e o resultado de cada etapa da mesma verificação.
  </Card>

  <Card title="Dados e privacidade" icon="lock" href="/help/data-and-privacy">
    O que é coletado numa verificação, quem responde pelo quê e o que isso exige de você.
  </Card>
</Columns>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.