Quickstart
-
1
Crea tu cuenta en
dashboard.multasmx.com/register -
2
Copia tu API key desde el dashboard principal.
-
3
Llama a los endpoints con el header
x-api-key.
Base URL
Autenticación
Todas las rutas requieren el header x-api-key con tu API key del dashboard.
Créditos y costos
Cada consulta descuenta créditos según su tipo. Un POST /lookup puede
combinar varios estados y servicios: el cargo es la suma de sus costos, y se aplica
antes de ejecutar la consulta.
| Consulta | stateCode | Créditos |
|---|---|---|
| Multa estatal | edomex, cdmx, guadalajara, … | 1 |
| Tenencia | tenencia-edomex | 1 |
| Verificación / vigencia de placa | vigencia-edomex | 1 |
| REPUVE (reporte de robo) | repuve | 3 |
El costo vigente siempre se puede consultar en vivo: GET /billing/pricing
lo devuelve en creditCosts, y GET /states incluye
el campo creditCost en cada estado.
Caducidad
Los créditos vencen 12 meses después de la compra. El consumo es FIFO por caducidad: se gastan primero los que están más próximos a vencer, de modo que ningún lote se pierda mientras haya uso.
nextExpiry es el lote que vence antes — el próximo que se consumirá.
Es null si no tienes saldo. Cada respuesta de
POST /lookup incluye también el saldo restante en
balance.
Saldo insuficiente
Si el saldo no cubre el costo del request, se rechaza completo con
402 y no se ejecuta ninguna consulta. La respuesta dice cuántos
créditos faltaban:
POST /lookup
Solicita la consulta de una placa en uno o más estados. La respuesta es inmediata con un
requestId. El resultado completo llega vía webhook.
plate— alfanumérico, 1–16 caracteresstates— array de 1 a 16stateCodes únicos
creditsBreakdown.
Estados en DOWN / MAINTENANCE aparecen en skipped[] y no se cobran.
GET /lookup/:requestId
Consulta el estado actual de un request. Útil para poll si no usas webhooks.
status puede ser PROCESSING, COMPLETED, PARTIAL o QUEUED_RETRY.
GET /states
Lista de estados activos (oculta los que están en DOWN o MAINTENANCE).
Vigencia de placa (Estado de México)
Además de multas, puedes verificar la vigencia de una placa de EdoMex usando el
pseudo-estado vigencia-edomex en el mismo POST /lookup.
Cuesta 1 crédito y es combinable con estados de multas en el mismo request.
found—falsesi la placa no está registrada en el padrón (respuesta definitiva del portal, no un error)plateStatus—VIGENTE·VENCIDA·INACTIVA·EN_PROCESOvalidityStart/validityEnd— fechas ISO de inicio y fin de vigencia (la placa dura 5 años)previousPlate— placa anterior si hubo reemplacamiento
hasInfractions y totalDebt vienen en null: no es una consulta de multas.
Adeudo de tenencia (Estado de México)
Consulta si una placa de EdoMex tiene adeudos de tenencia usando el
pseudo-estado tenencia-edomex en el mismo POST /lookup.
Cuesta 1 crédito y es combinable con estados de multas en el mismo request.
Además del adeudo, devuelve datos del vehículo (NIV, clave vehicular, factura) y la vigencia de la placa.
found—falsesi la placa no existe en el padrón vehicular (respuesta definitiva del portal, no un error)hasDebt—truesi la placa tiene adeudos de tenencia pendientesdebtDescription— texto del portal tal cual (p.ej."SIN ADEUDOS")totalDebt— monto total del adeudo en MXN (dentro dedata)vehicle— modelo, descripción, NIV, clave vehicular, cilindros, fecha e importe de facturaplateValidityStart/plateValidityEnd— vigencia de la placa (fechas ISO)
hasInfractions y totalDebt del resultado (nivel superior) vienen en null: no es una consulta de multas.
REPUVE — reporte de robo (nacional)
Consulta el Registro Público Vehicular con el pseudo-estado
repuve en el mismo POST /lookup.
Cuesta 3 créditos —es la consulta más costosa de servir— y es combinable
con estados de multas en el mismo request. Devuelve si el vehículo tiene
reporte de robo (FGJ, OCRA y Robo USA/CAN) más sus datos de registro.
Es el único servicio que acepta placa o NIV: manda el campo
niv —con o sin plate— y podrás consultar
vehículos que todavía no tienen placa. La cobertura es nacional, no estatal.
registered—falsesi el vehículo no está inscrito en el registro (respuesta definitiva del portal, no un error)hasTheftReport— atajo booleano:truesi alguna de las tres fuentes reporta robovehicle— marca, modelo, año, clase, tipo, NIV, placa, entidad de emplacamiento, armadora y másfgj— Fiscalía General de Justicia, con el detalle de cada reporte enrecords[](estatus, entidad, fecha de robo y de recuperación)ocra— Oficina Coordinadora de Riesgos AseguradosroboUsaCan— robo reportado en Estados Unidos o CanadáavisosMinisteriales— avisos por delitos distintos del robo
status: con_reporte,
sin_reporte, requiere_niv (esa fuente necesita el NIV
para responder) o desconocido. Trata desconocido como
dato ausente, no como vehículo limpio: significa que esa fuente no respondió.
hasInfractions y totalDebt
del resultado (nivel superior) vienen en null.
Webhook
Cuando un request completa, la API hace un POST a cada URL de webhookUrls configurada en el dashboard
(hasta 3 endpoints: producción, staging, un colector interno…). Todos reciben el mismo payload,
firmado con HMAC-SHA256 usando tu webhookSecret.
Verificar la firma (Node.js)
Si tu endpoint responde con error, reintentamos 3 veces con backoff (0s, 2s, 6s). Después de eso
webhookSent = false y puedes recuperar los datos con GET /lookup/:id.
Rate limits
Default 60 req/min por API key. Sliding window de 60s. Si necesitás más, escribinos a contacto@multasmx.com.
Códigos de error
| Status | Código | Descripción |
|---|---|---|
| 400 | invalid_body / unknown_states | Payload inválido o estado no reconocido. |
| 401 | Missing / Invalid API key | Header x-api-key ausente o incorrecto. |
| 402 | insufficient_credits · trial_expired | Saldo insuficiente (incluye required, available, missing y el desglose por estado) o trial expirado. |
| 404 | request_not_found | El requestId no existe o no pertenece a tu cuenta. |
| 429 | rate_limit_exceeded | Superaste el límite de requests por minuto. |
| 502 | scrape_failed | Error interno al comunicarse con el portal del estado. |
Disponibilidad del servicio
Multas MX es un servicio best-effort. No ofrecemos garantía de disponibilidad ni SLA.
La API depende de portales gubernamentales de terceros que no controlamos. Esos portales
pueden cambiar su estructura, entrar en mantenimiento, bloquear el acceso o dejar de
responder sin previo aviso. Cuando eso ocurre, el estado afectado se marca como
DOWN, MAINTENANCE o
BLOCKED y deja de aparecer en GET /states
hasta que se recupera.
No garantizamos tiempos de respuesta, tasas de éxito, ni la cobertura continua de un
estado en particular. Diseña tu integración asumiendo que cualquier estado puede no
estar disponible en un momento dado: revisa siempre skipped[]
en la respuesta de POST /lookup y el estado de cada resultado
en el webhook.
Los estados que no se pudieron procesar no se cobran.