Crear consulta modular
Ejecutá los módulos habilitados en tu contrato Custom.
API v1Anterior/v1/vehicles/modulesEjecuta de forma asíncrona sólo los módulos habilitados en el contrato Custom. El tiempo de resolución depende de los módulos y organismos consultados: esperá el resultado mediante polling o webhook, sin asumir una duración fija. Idempotency-Key es opcional pero recomendado. Mientras una patente tenga un job activo, no puede crearse otro: un request con los mismos módulos reutiliza el job y uno con módulos diferentes devuelve 409. Sólo un job realmente nuevo consume unidades.
- Autenticación
x-api-key- Consumo
- una unidad por módulo
- Planes
- custom
Request
Ejecutá este ejemplo desde tu servidor o terminal. Usá tu key en la variable CLASIFICAR_API_KEY.
curl -X POST "https://api.clasific.ar/v1/vehicles/modules" \
-H "x-api-key: $CLASIFICAR_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: mi-consulta-001" \
-d '{"plate":"ABC123","modules":["fines","vtv","tax_debt"]}'const apiKey = process.env.CLASIFICAR_API_KEY;
if (!apiKey) throw new Error("Falta CLASIFICAR_API_KEY");
// Conservá esta key al reintentar la misma operación.
const idempotencyKey = crypto.randomUUID();
const response = await fetch(
"https://api.clasific.ar/v1/vehicles/modules",
{
method: "POST",
headers: {
"x-api-key": apiKey,
"Content-Type": "application/json",
"Idempotency-Key": idempotencyKey,
},
body: JSON.stringify({
"plate": "ABC123",
"modules": [
"fines",
"vtv",
"tax_debt"
]
}),
},
);
if (!response.ok) {
throw new Error(
`HTTP ${response.status}: ${await response.text()}`,
);
}
const result: unknown = await response.json();
console.log(result);Usá una key de idempotencia nueva por operación lógica y conservála en sus reintentos. El valor del ejemplo curl debe reemplazarse para una consulta nueva.
Parámetros
Headers adicionales
| Parámetro | Tipo / ubicación | Descripción |
|---|---|---|
Idempotency-KeyOpcional | stringheader | Recomendado para retries. La misma key + payload devuelve el job original sin doble consumo, incluso después de finalizar |
Body JSON
| Parámetro | Tipo / ubicación | Descripción |
|---|---|---|
plateRequerido | stringbody | Patente argentina (ABC123 o AB123CD) |
modulesRequerido | string[]body | Lista sin duplicados: fines, vtv y/o tax_debt |
Respuesta
202 Ejemplo de respuesta. Los valores corresponden a datos ilustrativos del contrato V1.
{
"id": "vmq_0198abc123def456",
"status": "queued",
"plate": "ABC123",
"modules": [
"fines",
"vtv",
"tax_debt"
],
"createdAt": "2026-08-14T12:00:00.000Z",
"updatedAt": "2026-08-14T12:00:00.000Z",
"completedAt": null
}200 OK — job activo reutilizado
{
"id": "vmq_0198abc123def456",
"status": "processing",
"plate": "ABC123",
"modules": [
"fines",
"vtv"
],
"createdAt": "2026-08-14T12:00:00.000Z",
"updatedAt": "2026-08-14T12:00:01.000Z",
"completedAt": null,
"meta": {
"reused": true,
"reason": "query_in_progress"
}
}Errores
Comprobá el estado HTTP antes de procesar el resultado. Los formatos de error pueden variar por endpoint. Consultá errores y rate limits para gestionar errores de acceso y capacidad.
409 Conflict — patente con otros módulos en curso
{
"error_code": "module_query_in_progress",
"message": "Ya existe una consulta activa para esa patente con otros módulos.",
"active_query": {
"id": "vmq_0198abc123def456",
"status": "processing",
"plate": "ABC123",
"modules": [
"fines",
"vtv"
],
"createdAt": "2026-08-14T12:00:00.000Z",
"updatedAt": "2026-08-14T12:00:01.000Z",
"completedAt": null
}
}409 Conflict — Idempotency-Key usada con otro payload
{
"error_code": "idempotency_conflict",
"message": "Ese Idempotency-Key ya fue utilizado con otra consulta."
}403 Forbidden — módulo no contratado
{
"error_code": "module_not_enabled",
"message": "Uno de los módulos solicitados no está habilitado en el contrato."
}