API de inventario v1
Para que el CRM o sistema de tu agencia publique y mantenga al día tu inventario en AutoCrédito, y reciba los mensajes de compradores. Sin costo.
Autenticación
Crea una llave en tu panel → Integraciones. Se muestra una sola vez; guárdala como secreto en tu servidor (nunca en una app o página web). Envíala en cada llamada:
Authorization: Bearer inv_live_…
URL base: https://autocredito.mx/api/v1. Todo es JSON en UTF-8. Cada llave pertenece a un lote; puedes revocarla cuando quieras.
La unidad (un auto)
| Campo | Tipo | Descripción |
|---|---|---|
| external_id | texto (obligatorio) | ID de la unidad en tu sistema: stock, VIN o id. Máximo 120 caracteres. |
| brand / model | texto (obligatorio) | Marca y modelo comercial (Nissan, Versa). Los reconocemos contra nuestro catálogo. |
| version | texto | Versión o paquete (Advance, LT 2.0). Se muestra en la descripción. |
| year | entero (obligatorio) | Año modelo. |
| km | entero (obligatorio) | Kilometraje. Con mileage_unit: "mi" lo convertimos de millas. |
| price | número (obligatorio) | Precio de contado en pesos mexicanos. |
| transmission | texto (obligatorio) | "automatic" o "manual" (también aceptamos Automática, Estándar, CVT…). |
| fuel | texto | gasoline, diesel, hybrid, plug_in_hybrid o electric. Por omisión, gasolina. |
| color, description | texto | Color exterior y descripción (máximo 5,000 caracteres). |
| owners_count | entero | Número de dueños anteriores. |
| municipality_id | city, state | entero | texto | Municipio (clave INEGI) o ciudad y estado. Por omisión, el municipio de tu lote. |
| zone | texto | Zona o colonia. |
| original_invoice, plates_current, tenencias_paid, has_debts | booleano | Factura original, placas vigentes, tenencias pagadas, adeudos. Omite el campo si no lo sabes. |
| photos | arreglo de URLs | Hasta 20 fotos en orden (la primera es la portada). Mínimo 3 para publicar. |
| status | texto | "available" (publicado), "reserved" (pausado) o "sold" (vendido). Por omisión, available. |
{
"external_id": "STK-1042",
"brand": "Nissan",
"model": "Versa",
"version": "Advance",
"year": 2021,
"km": 38500,
"price": 249900,
"transmission": "automatic",
"fuel": "gasoline",
"color": "Gris",
"description": "Un dueño, servicios de agencia.",
"photos": ["https://tu-cdn.mx/stk-1042/1.jpg", "https://tu-cdn.mx/stk-1042/2.jpg", "https://tu-cdn.mx/stk-1042/3.jpg"],
"status": "available"
}Las fotos se descargan y procesan en segundo plano (marca de agua y placas difuminadas). El auto se publica cuando están listas, normalmente en unos minutos. Si una URL de foto no cambia, no se vuelve a descargar: para cambiar una foto, usa una URL nueva.
Endpoints
Alta o reemplazo de una unidad
PUT https://autocredito.mx/api/v1/inventory/{external_id}
→ 201 (nueva) o 200 (actualizada)
{ "outcome": "created", "warning": null, "unit": { … } }Cambio parcial (precio, km, estatus, fotos…)
PATCH https://autocredito.mx/api/v1/inventory/{external_id}
{ "price": 239900 }Vendido o retirado
PATCH https://autocredito.mx/api/v1/inventory/{external_id} { "status": "sold" }
DELETE https://autocredito.mx/api/v1/inventory/{external_id} → pausa el anuncio
DELETE https://autocredito.mx/api/v1/inventory/{external_id}?as=sold → lo marca vendidoConsultar
GET https://autocredito.mx/api/v1/inventory/{external_id}
GET https://autocredito.mx/api/v1/inventory?page=1&per_page=50
{ "external_id": "STK-1042", "listing_id": "…", "title": "Nissan Versa 2021",
"status": "published", "requested_status": "published", "price": 249900, "km": 38500,
"photos_processing": false, "failed_photos": [], "error": null,
"url": "https://autocredito.mx/autos/nissan-versa-2021-…", "synced_at": "…" }En lote (hasta 100 por llamada)
POST https://autocredito.mx/api/v1/inventory
{ "items": [ { …unidad… }, { …unidad… } ] }
→ { "run_id": "…", "status": "succeeded", "received": 2, "created": 1, "updated": 1,
"unchanged": 0, "removed": 0, "failed": 0,
"results": [ { "external_id": "STK-1042", "outcome": "created", "listing_id": "…", "error": null }, … ] }Con "replace_all": true mandas tu inventario completo (sin el límite de 100): lo que no venga se retira según tu configuración (vendido, pausado o nada). Por seguridad, si de golpe faltara más de la mitad del inventario, no se retira nada y te avisamos en el panel.
Si una unidad no cambia desde la última vez, no se toca (unchanged). Tu sistema manda: lo que cambies en tu panel se reemplaza cuando tu sistema envíe cambios de esa unidad.
Mensajes de compradores
GET https://autocredito.mx/api/v1/leads?since=2026-11-01T00:00:00Z&limit=100
{ "items": [ { "id": "…", "created_at": "…", "source": "marketplace",
"customer": { "name": "Ana", "phone": "+526241234567", "message": "¿Sigue disponible?" },
"vehicle": { "listing_id": "…", "external_id": "STK-1042", "title": "Nissan Versa 2021",
"price": 249900, "km": 38500, "url": "…" } } ],
"next_since": "…" }Del más viejo al más nuevo. Para traer solo los nuevos, guarda next_since y pásalo en la siguiente llamada.
Webhook de mensajes
En tu panel puedes dar una URL https: te enviamos cada mensaje nuevo con POST y el mismo JSON de arriba más "type": "lead.created". Si tu servidor no responde 2xx, reintentamos con espera creciente; usa el id para no duplicar.
Verifica la firma: x-signature = sha256= + HMAC-SHA256 de `${timestamp}.${cuerpo}` con tu secreto, donde timestamp viene en x-signature-timestamp. Rechaza firmas distintas o de más de 5 minutos.
// Node.js
const expected = "sha256=" + crypto.createHmac("sha256", secret)
.update(req.headers["x-signature-timestamp"] + "." + rawBody).digest("hex");
const ok = crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(req.headers["x-signature"]));También puedes recibirlos por correo en formato ADF (el estándar que leen los CRM automotrices) o descargarlos en CSV desde el panel.
Errores y límites
{ "error": { "code": "invalid_unit", "message": "Falta el precio o no es válido (en pesos)." } }401llave faltante o revocada ·404unidad no encontrada ·413demasiadas unidades ·422unidad no válida (marca o modelo que no reconocemos, datos faltantes) ·429demasiadas llamadas.- 120 llamadas por minuto por llave; hasta 100 unidades por llamada en lote.
- Hasta 20 fotos por auto, de 15 MB máximo cada una (JPG, PNG o WebP).
- Si una marca o modelo no se reconoce, escríbenos y lo agregamos al catálogo.