Fluxo de consulta, webhook e onde buscar o resultado. Referência completa no Swagger abaixo.
Se você não quer integrar a API, no painel existe a página Consulta em lote. Você arrasta uma planilha com uma coluna de placa (Mercosul), a gente processa e devolve o resultado em XLSX — uma linha por multa, veículos sem multa também aparecem, e o total de créditos consumidos fica no resumo.
Tem um modelo pronto pra baixar na mesma tela. A cobrança é só pelas consultas que derem certo.
Envie a chave em Authorization: Bearer <sua_chave> ou no header X-API-Key. Prefixos mymt_test_ (sandbox) e mymt_live_ (produção).
Obrigatório: licensePlate — placa Mercosul (7 caracteres alfanuméricos).
Use as placas da tabela abaixo com a api key de sandbox mymt_test_….
| Placa | Esperado | Notas |
|---|---|---|
| MYMT01A | Sem multas | Veículo limpo (canal veículo simulado, lista vazia). |
| MYMT01B | Sem multas | Veículo limpo — segundo exemplo. |
| MYMT01C | Sem multas | Veículo limpo — terceiro exemplo. |
| MYMT01D | Sem multas | Veículo limpo — quarto exemplo. |
| MYMT02A | Com multas simuladas | Uma multa simulada no canal veículo. |
| MYMT02B | Com multas simuladas | Duas multas simuladas no canal veículo. |
| MYMT02C | Com multas simuladas | Uma multa simulada com mais campos preenchidos. |
| MYMT03A | Erro simulado | Falha simulada no canal veículo (ok=false). |
| MYMT03B | Erro simulado | Falha simulada no canal veículo (segundo cenário). |
MYMT03A/B simulam erro na consulta; MYMT01* e MYMT02* retornam listagens vazias ou com multas fictícias.
Envie um POST /v1/consultas com o corpo JSON (licensePlate obrigatório). A resposta depende da sua chave:
mymt_live_…): a API processa em segundo plano e responde 202 com um jobId. Depois você consulta o resultado em GET /v1/jobs/{jobId}.mymt_test_…): a API responde 200 na hora, já com o resultado no corpo (sem fila).Exemplo em produção:
curl -sS -X POST https://api.mymultas.com.br/v1/consultas \
-H "Authorization: Bearer mymt_live_…" \
-H "Content-Type: application/json" \
-d '{"licensePlate":"ABC1D23"}'
No sandbox, use mymt_test_… com as placas fictícias da tabela acima.
Com o jobId, use GET /v1/jobs/{jobId}. Quando status for completed, o corpo traz o resultado em result (lista de infrações em result.result.outcome.violations na consulta única). Se falhar, veja error.
Configure a URL HTTPS com PATCH /v1/me/webhook (ou pela tela Webhook no painel). Quando o job termina, enviamos um POST JSON para a sua URL.
Cabeçalhos: X-Mymultas-Timestamp (Unix em segundos) e X-Mymultas-Signature no formato v1=<hex>, onde o hex é HMAC SHA256 do segredo sobre a string {timestamp}.{corpo bruto UTF-8}.
Tipos de evento:
mymultas.job.completed quando o processamento conclui com sucessomymultas.job.failed quando o job falhaO campo data do webhook é o mesmo objeto que vem em result na resposta de GET /v1/jobs/{jobId} (não inclui id nem status do GET).
{
"type": "mymultas.job.completed",
"jobId": "550e8400-e29b-41d4-a716-446655440000",
"status": "completed",
"createdAt": "2026-04-09T12:00:00.000Z",
"completedAt": "2026-04-09T12:00:05.000Z",
"error": null,
"data": { }
}
Cada item em outcome.violations tem um id (UUID). Para o texto completo da infração e campos extras RENAINF (API Brasil) em detail.renainf: GET /v1/violations/{id}/detail. Primeira chamada monta/cacheia a partir da fonte; repetições usam cache. SERPRO pode devolver 410 se a chave expirar — faça nova consulta.
POST /v1/consultas/batch aceita até 50 objetos no array items (cada um com licensePlate no mesmo formato da consulta única). A resposta traz jobId; o acompanhamento é o mesmo GET /v1/jobs/{id}.
Produção (mymt_live_…):
curl -sS -X POST https://api.mymultas.com.br/v1/consultas/batch \
-H "Authorization: Bearer mymt_live_…" \
-H "Content-Type: application/json" \
-d '{"items":[
{"licensePlate":"ABC1D23"},
{"licensePlate":"XYZ9W87"}
]}'
Sandbox (mymt_test_…) com placas fictícias da tabela:
curl -sS -X POST https://api.mymultas.com.br/v1/consultas/batch \
-H "Authorization: Bearer mymt_test_…" \
-H "Content-Type: application/json" \
-d '{"items":[
{"licensePlate":"MYMT01A"},
{"licensePlate":"MYMT02A"}
]}'