Referencia API
POST /v1/analyze
Analiza imágenes de neumáticos y vehículos para identificar información del neumático y del vehículo.
Analiza imágenes de neumáticos y vehículos mediante IA avanzada para identificar la marca, el modelo, el año, los acabados (trims) y las especificaciones de los neumáticos del vehículo.
Endpoint
POST https://api.ruedalens.com/v1/analyze
Autenticación
Requiere una clave de API válida en la cabecera Authorization.
Authorization: Bearer rdlns_sk_...
Modos de reconocimiento
La API soporta dos modos de reconocimiento, seleccionables por solicitud mediante el parámetro mode:
| Modo | Imágenes requeridas | Precisión medida neumático | Precisión modelo vehículo | Ideal para |
|---|---|---|---|---|
single | 1 (solo neumático) | Alta | Alta | Identificación de neumáticos cuando el vehículo es secundario, o UX simplificada con una sola foto |
dual | 2 (neumático + vehículo) | Alta | Muy alta | Máxima precisión cuando la identificación del vehículo es prioritaria |
Elegir un modo
Usa modo dual cuando identificar el modelo del vehículo sea crítico para tu caso de uso. Usa modo simple cuando los datos del neumático sean la necesidad principal y quieras una experiencia de usuario más sencilla con una sola foto.
La respuesta siempre incluye un campo mode confirmando qué modo se utilizó.
Solicitud
Cabeceras
| Cabecera | Valor | Requerida |
|---|---|---|
Authorization | Bearer rdlns_sk_... | Sí |
Content-Type | application/json | Sí |
Parámetros del cuerpo
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
mode | string | Sí | Modo de reconocimiento: "single" o "dual". |
image | string | Condicional | Imagen del neumático codificada en Base64. Requerida en modo simple. |
tireImage | string | Condicional | Imagen del neumático codificada en Base64. Requerida en modo dual. |
carImage | string | Condicional | Imagen del vehículo codificada en Base64. Requerida en modo dual. |
Ejemplo de solicitud
curl -X POST https://api.ruedalens.com/v1/analyze \ -H "Authorization: Bearer rdlns_sk_your_api_key_here" \ -H "Content-Type: application/json" \ -d '{ "mode": "single", "image": "/9j/4AAQSkZJRg..." }'
Respuesta
Éxito — 200 OK
{ "success": true, "requestId": "cmlecazi4000111qu590n9v6i", "mode": "dual", "data": { "vehicles": [ { "confidence": 0.98, "brand": "Lexus", "model": "NX", "trims": ["300h", "300"], "start_year": 2017, "end_year": 2021, "current_tire": { "tire_brand": "Bridgestone", "tire_model": "Dueler H/L 33", "width": 225, "aspect_ratio": 60, "diameter": 18, "load_index": "100", "speed_index": "H", "structure": "R", "runflat": null, "xl": null, "3pmsf": null, "tire_size": "225/60R18 100H" }, "oe_front_tire": { "width": 225, "aspect_ratio": 60, "diameter": 18, "load_index": "100", "speed_index": "H", "structure": "R", "runflat": false, "xl": false, "tire_size": "225/60R18 100H" }, "oe_rear_tire": { "width": 225, "aspect_ratio": 60, "diameter": 18, "load_index": "100", "speed_index": "H", "structure": "R", "runflat": false, "xl": false, "tire_size": "225/60R18 100H" }, "pressure_front": 2.2, "pressure_rear": 2.2 } ] }, "metrics": { "executionTimeMs": 10364 }, "timestamp": "2026-02-08T22:54:03.962Z" }
Campos de la respuesta
| Campo | Tipo | Descripción |
|---|---|---|
success | boolean | Indica si la solicitud fue exitosa |
requestId | string | Identificador único de la solicitud para seguimiento y depuración |
mode | string | Modo de reconocimiento utilizado para esta solicitud ("single" o "dual") |
data.vehicles | array | Lista de coincidencias de vehículos identificados (ordenadas por confianza) |
data.vehicles[].confidence | number | Nivel de confianza de la IA (0.0 a 1.0) |
data.vehicles[].brand | string | Fabricante del vehículo |
data.vehicles[].model | string | Modelo base del vehículo |
data.vehicles[].trims | string[] | Niveles de acabado disponibles para este modelo |
data.vehicles[].start_year | number | Primer año de producción de esta generación |
data.vehicles[].end_year | number | Último año de producción de esta generación |
data.vehicles[].current_tire.tire_brand | string|null | Fabricante del neumático leído del flanco (p. ej., "Michelin"). Null si no es legible. |
data.vehicles[].current_tire.tire_model | string|null | Línea de producto del neumático leída del flanco (p. ej., "Pilot Sport 4"). Null si no es legible. |
data.vehicles[].current_tire | object | Especificación del neumático detectada en el flanco |
data.vehicles[].oe_front_tire | object | Especificación del neumático original (OE) delantero |
data.vehicles[].oe_rear_tire | object | Especificación del neumático original (OE) trasero |
data.vehicles[].pressure_front | number | Presión recomendada del neumático delantero (bar) |
data.vehicles[].pressure_rear | number | Presión recomendada del neumático trasero (bar) |
metrics.executionTimeMs | number | Tiempo total de procesamiento en milisegundos |
timestamp | string | Marca temporal ISO 8601 de la respuesta |
Estructura del objeto de neumático
Cada objeto de neumático (current_tire, oe_front_tire, oe_rear_tire) contiene los campos siguientes. Los campos tire_brand y tire_model son exclusivos de current_tire y no están presentes en los objetos de neumáticos OE.
| Campo | Tipo | Descripción |
|---|---|---|
tire_brand | string|null | Solo current_tire. Fabricante del neumático leído del flanco (p. ej., "Michelin", "Continental"). Null si no es legible. |
tire_model | string|null | Solo current_tire. Línea de producto del neumático leída del flanco (p. ej., "Pilot Sport 4", "PremiumContact 6"). Null si no es legible. |
width | number | Ancho del neumático en milímetros (p. ej., 225) |
aspect_ratio | number | Altura del perfil como porcentaje del ancho (p. ej., 60) |
diameter | number | Diámetro de la llanta en pulgadas (p. ej., 18) |
load_index | string | Índice de carga (p. ej., "100") |
speed_index | string | Índice de velocidad máxima (p. ej., "H") |
structure | string | Tipo de construcción del neumático (normalmente "R" radial) |
runflat | boolean|null | Indica si el neumático es run-flat |
xl | boolean|null | Indica si el neumático es de carga extra (XL) |
3pmsf | boolean|null | Indica si el neumático tiene certificación invernal Three-Peak Mountain Snowflake (3PMSF) |
tire_size | string | Cadena formateada completa del neumático siguiendo estándares de la industria (p. ej., "225/60R18 100H" o "225/60R18 100H XL") |
Tamaño formateado del neumático
El campo tire_size proporciona una cadena de designación completa del neumático siguiendo estándares de la industria que combina todas las especificaciones. Úsalo para fines de visualización, búsquedas de neumáticos o comprobaciones de compatibilidad. El formato incluye indicadores opcionales como XL (carga extra), RFT (run-flat) o ❄ (certificación invernal 3PMSF) cuando corresponda.
Comprendiendo los campos de neumáticos
La respuesta incluye tres especificaciones de neumáticos con distintos propósitos:
current_tire: Especificación leída del flanco del neumático mediante OCR. Representa lo que está montado actualmente. Puede contener valoresnullsi el texto no es legible.oe_front_tire: Especificación original de fábrica (OE) del eje delantero según el fabricante.oe_rear_tire: Especificación original de fábrica (OE) del eje trasero. En la mayoría de vehículos coincide con la delantera salvo configuraciones escalonadas.
Neumático actual vs. OE
El neumático actual puede diferir del especificado de fábrica si el propietario ha cambiado las medidas. Usa current_tire para saber qué lleva el vehículo y oe_front_tire / oe_rear_tire para sugerir reemplazos compatibles.
Marca y modelo del neumático
Los campos tire_brand y tire_model solo se rellenan en current_tire cuando el texto es claramente legible en el flanco del neumático. Estos campos son siempre null en oe_front_tire y oe_rear_tire (los datos OE provienen de la base de datos del vehículo, que no incluye marca/modelo de neumático). Si el texto de la marca o modelo no es legible, el campo devuelve null en lugar de una suposición: se prioriza la precisión sobre la completitud.
Comprendiendo los niveles de confianza
El campo confidence (0.0 a 1.0) indica el grado de certeza de la IA en la identificación del vehículo:
| Rango de confianza | Interpretación | Recomendación |
|---|---|---|
| 0.95 - 1.0 | Confianza muy alta | Apto para procesamiento automático |
| 0.85 - 0.94 | Confianza alta | Generalmente fiable, se recomienda verificación ligera |
| 0.70 - 0.84 | Confianza moderada | Se recomienda verificación manual |
| < 0.70 | Confianza baja | Requiere revisión manual |
Resultados de baja confianza
Cuando la confianza es inferior a 0.70, recomendamos mostrar los resultados al usuario para verificación manual. Esto suele ocurrir con imágenes poco claras, modelos poco comunes o marcajes ambiguos.
Comprendiendo el array de acabados (trims)
El array trims está ordenado por probabilidad, siendo el primero el más probable:
"trims": ["300h", "300", "200t"]
Esto indica que el vehículo es más probablemente un "300h", aunque también podría ser un "300" o un "200t". Usa el primer valor como coincidencia principal.
Respuestas de error
400 Bad Request
{ "success": false, "error": { "code": "INVALID_IMAGE", "message": "Invalid request body", "details": { "field": "tireImage", "issue": "Must be a valid base64-encoded image" } } }
422 Imagen no legible
Se devuelve cuando la imagen es válida pero su contenido no permite una extracción fiable del tamaño del neumático (p. ej., no es un neumático, solo se ve la banda de rodadura, marcajes del flanco ilegibles).
{ "success": false, "error": { "code": "UNREADABLE_IMAGE", "message": "Only the tire tread is visible. The sidewall markings where the tire size is printed cannot be read." } }
Consulta UNREADABLE_IMAGE para más detalles.
401 Unauthorized
{ "success": false, "error": { "code": "INVALID_API_KEY", "message": "Invalid API key" } }
429 Too Many Requests
Se devuelve como RATE_LIMIT_EXCEEDED para límites de ráfaga, o QUOTA_EXCEEDED para agotamiento de cuota mensual (plan Sandbox):
{ "success": false, "error": { "code": "QUOTA_EXCEEDED", "message": "Monthly quota exceeded" } }
Requisitos de las imágenes
| Propiedad | Requisito |
|---|---|
| Formato | JPEG o PNG |
| Codificación | Cadena Base64 (sin prefijo data URL) |
| Tamaño máximo | 10 MB por imagen |
| Resolución recomendada | 1920x1080 o superior (las imágenes se optimizan automáticamente) |
Guías de calidad de imagen
La calidad de las imágenes de entrada afecta directamente a la precisión. Sigue estas recomendaciones para obtener los mejores resultados:
Buenas prácticas para la imagen del neumático
- Iluminación: Luz uniforme sin sombras duras sobre el texto del flanco
- Ángulo: Foto perpendicular a la rueda (frontal, sin inclinación)
- Enfoque: Todo el texto del flanco debe verse nítido y legible
- Cobertura: Captura completa del marcado del neumático (p. ej., "225/60 R18 100H")
- Evitar: Imágenes borrosas, ángulos extremos, sombras intensas o texto obstruido
Buenas prácticas para la imagen del vehículo
- Encuadre: Incluye el vehículo completo (frontal tres cuartos, lateral o trasero funcionan mejor)
- Distancia: Colócate a 3–5 metros para un encuadre óptimo
- Claridad: El diseño y las líneas de la carrocería deben verse claramente
- Evitar: Primeros planos extremos, vehículos cortados o imágenes muy recortadas
Resolución vs. tamaño de archivo
Aunque una mayor resolución mejora la precisión, imágenes de más de ~2MP ofrecen rendimientos decrecientes. Recomendamos 1920x1080 como equilibrio entre calidad y velocidad de subida. Las imágenes se reducen automáticamente a 1500px durante el procesamiento.
Ejemplos visuales
A continuación se muestran ejemplos reales que demuestran una captura adecuada para obtener resultados óptimos.
Ejemplo 1: Condiciones estándar

Imagen del neumático: ángulo perpendicular, iluminación uniforme y texto legible

Imagen del vehículo: vista completa con líneas y elementos de diseño claros
Ejemplo 2: Condiciones difíciles
Nuestro sistema mantiene alta precisión incluso en condiciones menos ideales:

Neumático con barro: el sistema extrae correctamente las especificaciones

Imagen del vehículo: condiciones exigentes que demuestran la robustez del reconocimiento
Capacidades avanzadas de IA
Nuestro motor de reconocimiento está entrenado para manejar condiciones reales como suciedad, barro, desgaste e iluminación subóptima. Aunque las imágenes limpias ofrecen los mejores resultados, el sistema mantiene alta precisión en escenarios diversos.
Rendimiento y facturación
Tiempo de procesamiento
Tiempo de respuesta típico de extremo a extremo: 7–15 segundos
Incluye:
- Tiempo de red: Subida de imágenes a nuestros servidores (~1–3 s según conexión y tamaño)
- Procesamiento en servidor: Análisis y enriquecimiento mediante IA (~7–10 s)
- Tiempo de red: Descarga de la respuesta (<1s)
Factores que afectan al tiempo de procesamiento:
| Factor | Impacto | Optimización |
|---|---|---|
| Tamaño de imagen | Archivos grandes tardan más en subir | Redimensionar a 1920x1080 antes de codificar |
| Resolución | Impacto mínimo (auto-reducción) | No superar 2MP |
| Latencia de red | Variable según ubicación | Usar CDN o ubicaciones edge |
| Carga del servidor | Mínima (auto-escalado) | No requiere acción |
El métrico executionTimeMs:
- Refleja solo el tiempo de procesamiento en servidor (excluye red)
- Útil para monitorizar tendencias de rendimiento
- Suele oscilar entre 10.000 ms y 20.000 ms
Consejo de optimización
Para minimizar el tiempo total de la solicitud, comprime y redimensiona las imágenes antes de codificarlas en Base64. Un JPEG 1920x1080 al 85% de calidad ofrece excelentes resultados con cargas inferiores a 500 KB.
Cuota y facturación
- Cada solicitud cuenta para tu cuota mensual, tenga éxito o falle
- Pueden devolverse múltiples coincidencias cuando la confianza se reparte entre modelos similares
- La API procesa ambas imágenes simultáneamente para máxima precisión