CRLV Digital
O CRLV Digital é o Certificado de Registro e Licenciamento de Veículo em formato eletrônico. Este guia mostra como emitir o documento através da API.
Visão Geral
O CRLV Digital substitui o documento físico e pode ser apresentado em dispositivos móveis durante fiscalizações.
Benefícios
- ✅ Documento oficial e válido em todo território nacional
- ✅ Emissão rápida (5 a 15 segundos)
- ✅ Integração simples via API
- ✅ Histórico de emissões
Emitir CRLV Digital
Endpoint
POST /digital-document
Headers
| Header | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Authorization | Bearer Token | ✅ | Token JWT de autenticação |
Content-Type | application/json | ✅ | Tipo de conteúdo |
Body
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
digitalDocumentTemplateId | string | ✅ | ID do template de CRLV Digital |
licensePlate | string | ✅ | Placa do veículo (ABC1234 ou ABC1D23) |
uf | string | ✅ | UF de emplacamento (2 caracteres) |
Exemplo de Requisição
curl -X POST "https://pwe6qnayhg.execute-api.sa-east-1.amazonaws.com/checktudo/digital-document" \
-H "Authorization: Bearer seu_jwt_token" \
-H "Content-Type: application/json" \
-d '{
"digitalDocumentTemplateId": "123e4567-e89b-12d3-a456-426614174000",
"licensePlate": "ABC1234",
"uf": "SP"
}'
Resposta
{
"statusCode": 201,
"body": {
"digitalCrlvId": "550e8400-e29b-41d4-a716-446655440000",
"status": "PROCESSING",
"licensePlate": "ABC1234",
"uf": "SP"
}
}
Status da Emissão
| Status | Descrição |
|---|---|
PROCESSING | Em processamento |
COMPLETED | Emitido com sucesso |
FAILED | Falha na emissão |
Listar CRLV por Usuário
Endpoint
GET /digital-crlv/get-crlvs-by-user
Parâmetros de Query
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
page | number | ❌ | Número da página |
limit | number | ❌ | Itens por página |
userId | string | ✅ | ID do usuário |
initialDate | string | ❌ | Data inicial (ISO 8601) |
lastDate | string | ❌ | Data final (ISO 8601) |
plate | string | ❌ | Filtrar por placa |
Exemplo
curl -X GET "https://pwe6qnayhg.execute-api.sa-east-1.amazonaws.com/checktudo/digital-crlv/get-crlvs-by-user?page=1&limit=25&userId=user-uuid" \
-H "Authorization: Bearer seu_jwt_token"
Resposta
{
"statusCode": 200,
"data": {
"docs": [
{
"id": "54342003-fc7c-487e-bfc8-74ff1aead7b7",
"version": 1,
"productType": "crlv",
"createdAt": "2025-11-03T18:21:27.637Z",
"updatedAt": "2025-11-03T18:21:27.637Z",
"creator": {
"id": "2831c616-5c32-42db-9653-460ad9d1036d",
"version": 1,
"phone": {
"areaCode": "+55",
"ddd": "11",
"number": "969140955",
"isMobile": true
},
"document": {
"type": "CPF",
"number": "36853524829"
},
"email": "ivan.rodrigues@checktudo.com",
"name": "Ivan Rafael",
"type": "basic",
"birthDate": null,
"status": "active",
"createdAt": "2025-08-08T21:21:16.939Z",
"updatedAt": "2025-08-08T21:21:16.939Z"
},
"neededsKeys": [
[
"licencePlate",
"uf"
]
],
"description": "CRLV-template-teste",
"externalReference": "68ed72c8a45af37b97c38a81",
"name": "Crlv-Template-Teste",
"status": "active"
}
]
}
}
Templates de CRLV
Listar Templates Disponíveis
GET /digital-crlv-templates
{
"statusCode": 200,
"body": {
"templates": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "CRLV Digital Padrão",
"description": "Emissão do CRLV Digital",
"status": "published"
}
]
}
}
UFs Suportadas
| UF | Estado | Disponível |
|---|---|---|
| SP | São Paulo | ✅ |
| RJ | Rio de Janeiro | ✅ |
| MG | Minas Gerais | ✅ |
| PR | Paraná | ✅ |
| SC | Santa Catarina | ✅ |
| RS | Rio Grande do Sul | ✅ |
| ... | Demais estados | ✅ |
Tratamento de Erros
Erros Comuns
| Código | Erro | Causa | Solução |
|---|---|---|---|
| 400 | INVALID_LICENSE_PLATE | Placa inválida | Verifique o formato |
| 400 | INVALID_UF | UF inválida | Use sigla de 2 caracteres |
| 404 | VEHICLE_NOT_FOUND | Veículo não encontrado | Verifique placa e UF |
| 402 | INSUFFICIENT_BALANCE | Saldo insuficiente | Adicione créditos |
| 503 | DETRAN_UNAVAILABLE | DETRAN indisponível | Tente novamente mais tarde |
Exemplo de Erro
{
"statusCode": 400,
"error": {
"code": "INVALID_LICENSE_PLATE",
"message": "A placa informada está em formato inválido."
}
}
Exemplo de Integração
Node.js
import axios from 'axios';
interface CrlvRequest {
digitalDocumentTemplateId: string;
licensePlate: string;
uf: string;
}
interface CrlvResponse {
digitalCrlvId: string;
status: string;
}
class CrlvClient {
private baseUrl = 'https://pwe6qnayhg.execute-api.sa-east-1.amazonaws.com/checktudo';
constructor(private jwtToken: string) {}
async emitCrlv(data: CrlvRequest): Promise<CrlvResponse> {
const response = await axios.post(
`${this.baseUrl}/digital-document`,
data,
{
headers: {
'Authorization': `Bearer ${this.jwtToken}`,
'Content-Type': 'application/json',
},
}
);
return response.data.body;
}
}
// Uso
const client = new CrlvClient('seu_jwt_token');
async function main() {
const result = await client.emitCrlv({
digitalDocumentTemplateId: '123e4567-e89b-12d3-a456-426614174000',
licensePlate: 'ABC1234',
uf: 'SP',
});
console.log('CRLV ID:', result.digitalCrlvId);
}
main();
Boas Práticas
- Validar placa: Verifique o formato antes de enviar
- Verificar UF: Confirme que a UF está correta
- Monitorar status: Verifique o status para confirmação