---
title: "Validação pública"
description: "Validação pública no Digiploma: formato do código de validação e como verificar diplomas, históricos e currículos pela página /validar ou pela API."
canonical: "https://docs.lacunasoftware.com/articles/digiploma/api/validation"
locale: "pt-BR"
product: "Digiploma"
last_updated: "2026-10-11"
---

# Validação pública

Todo diploma, histórico escolar e currículo emitido pelo Digiploma tem um **código de validação**. Quem tiver o código pode verificar o
documento na página de validação da instância, `/validar` (por exemplo, `https://www.digiploma.com.br/validar/{code}`), e a mesma
verificação está disponível pela API, **sem chave de API**.

## O código de validação

| Documento | Formato |
|---|---|
| Diploma | `{código MEC da emissora}.{código MEC da registradora}.{12 caracteres hexadecimais}` |
| Histórico escolar | `{código MEC da emissora}.{12 caracteres hexadecimais}` |
| Currículo | `{código MEC da emissora}.{12 caracteres hexadecimais}` |

O código vem impresso na representação visual do documento, ao lado de um QR code que abre a página de validação, por padrão em
`/validar/{code}`. Espaços no início e no fim do código são ignorados.

## Validar um documento

| Documento | Operação |
|---|---|
| Diploma | `GET /api/degrees/{code}/validation` |
| Histórico escolar | `GET /api/academic-transcripts/{code}/validation` |
| Currículo | `GET /api/curriculums/{code}/validation` |

Essas operações não exigem chave de API, embora a referência da API mostre a chave em todas as operações.

```bash
curl "https://www.digiploma.com.br/api/degrees/1234.5678.3f9a0c1b2d4e/validation?captcha=$TOKEN"
```

```json
{
  "isValid": true,
  "isCancelled": false,
  "id": "9b0f…",
  "hasVisualRepresentation": true,
  "visualRepresentationTicket": { "location": "/api/degrees/…/visual-representation/file?access_ticket=…", "filename": "diploma-….pdf" },
  "xmlTicket": { "location": "/api/degrees/…/xml/file?access_ticket=…", "filename": "diploma-….xml" },
  "history": [ { "status": "Active", "reason": null, "date": "2026-08-20T14:02:11-03:00" }, … ],
  "dataIngresso": "2022-02-01",
  "dataConclusao": "2026-06-30",
  "information": { "diplomado": { "nome": "…", "cpf": "***456789**", … }, "dadosCurso": { … }, "iesEmissora": { … }, … },
  "dadosRegistro": { "iesRegistradora": { … }, "livroRegistro": { … }, … }
}
```

| Campo | Descrição |
|---|---|
| `isValid` | `true` quando o documento está ativo e assinado. |
| `information` | Os dados públicos do documento, somente quando ele é válido. Para um diploma, os `dadosDiploma` lidos do XML assinado (o diploma também tem `dadosRegistro`, `dataIngresso` e `dataConclusao`, em campos próprios). Para um histórico, o tipo, o aluno, o curso, a instituição, a situação atual do aluno, os dados de ingresso e a data e hora de emissão. Para um currículo, o código, a data, o curso e a instituição. |
| `history` | As mudanças de status do documento. |
| `xmlTicket`, `visualRepresentationTicket` | [Tickets](https://docs.lacunasoftware.com/articles/digiploma/api#downloads-e-tickets) para baixar o XML assinado e a representação visual. |

O CPF do diplomado ou do aluno vem mascarado em `information` (como em `***456789**`), a menos que a instância desative o mascaramento.
Nenhum outro campo é mascarado.

Um código que não existe retorna `{"isValid": false}`, sem nenhum outro dado; o mesmo acontece com um documento que ainda aguarda
assinaturas ou que está anulado temporariamente. Um documento anulado ou cancelado também não aparece como válido: a chamada falha com
`DegreeNotValid`, `AcademicTranscriptNotValid` ou `CurriculumNotValid`. Considere **inválido** tudo o que não for `"isValid": true`.

## CAPTCHA

Quando a instância tem o reCAPTCHA habilitado, como é o caso de www.digiploma.com.br, as operações de validação exigem um token do
reCAPTCHA no parâmetro `captcha` da query string e, sem um token válido, falham com `InvalidCaptcha`. O token é o que o widget do
reCAPTCHA (reCAPTCHA v2 invisível) gera com a chave do site (site key) da instância; por isso, essas operações se destinam a uma página de
validação exibida para uma pessoa. Nesse caso, baixe os arquivos com os tickets retornados pela validação.

Com o CAPTCHA desabilitado, os arquivos também podem ser baixados diretamente pelo código:

| Documento | Representação visual | XML assinado |
|---|---|---|
| Diploma | `GET /api/degrees/{code}/validation/visual-representation` | `GET /api/degrees/{code}/validation/xml` |
| Histórico escolar | `GET /api/academic-transcripts/{code}/validation/visual-representation` | `GET /api/academic-transcripts/{code}/validation/xml` |
| Currículo | `GET /api/curriculums/{code}/validation/visual-representation` | `GET /api/curriculums/{code}/validation/xml` |

Com o CAPTCHA habilitado, essas operações falham com `InvalidOperationCaptchaEnabled`. Um código desconhecido falha com
`InvalidVerificationCode`, e um documento inválido, com `DegreeNotValid`, `AcademicTranscriptNotValid` ou `CurriculumNotValid`.

## Validar seus próprios documentos

Para verificar documentos da sua própria organização a partir dos seus sistemas, sem CAPTCHA, use as operações autenticadas, com a chave de
API:

* `GET /api/degrees/codes/{code}`
* `GET /api/academic-transcripts/codes/{code}`
* `GET /api/curriculums/codes/{code}`

Elas retornam o mesmo modelo da validação pública, com o CPF sem máscara, e só para documentos que pertencem à organização da chave.
