Pular para o conteúdo principal

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

HeaderTipoObrigatórioDescrição
AuthorizationBearer TokenToken JWT de autenticação
Content-Typeapplication/jsonTipo de conteúdo

Body

ParâmetroTipoObrigatórioDescrição
digitalDocumentTemplateIdstringID do template de CRLV Digital
licensePlatestringPlaca do veículo (ABC1234 ou ABC1D23)
ufstringUF 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

StatusDescrição
PROCESSINGEm processamento
COMPLETEDEmitido com sucesso
FAILEDFalha na emissão

Listar CRLV por Usuário

Endpoint

GET /digital-crlv/get-crlvs-by-user

Parâmetros de Query

ParâmetroTipoObrigatórioDescrição
pagenumberNúmero da página
limitnumberItens por página
userIdstringID do usuário
initialDatestringData inicial (ISO 8601)
lastDatestringData final (ISO 8601)
platestringFiltrar 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

UFEstadoDisponível
SPSão Paulo
RJRio de Janeiro
MGMinas Gerais
PRParaná
SCSanta Catarina
RSRio Grande do Sul
...Demais estados

Tratamento de Erros

Erros Comuns

CódigoErroCausaSolução
400INVALID_LICENSE_PLATEPlaca inválidaVerifique o formato
400INVALID_UFUF inválidaUse sigla de 2 caracteres
404VEHICLE_NOT_FOUNDVeículo não encontradoVerifique placa e UF
402INSUFFICIENT_BALANCESaldo insuficienteAdicione créditos
503DETRAN_UNAVAILABLEDETRAN indisponívelTente 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

  1. Validar placa: Verifique o formato antes de enviar
  2. Verificar UF: Confirme que a UF está correta
  3. Monitorar status: Verifique o status para confirmação

Próximos Passos