Rueda Lens

Comenzar

Limitación de solicitudes

Entiende los límites de uso, la gestión de cuotas y la facturación por excedentes en Rueda Lens.

Rueda Lens aplica políticas de uso justo mediante cuotas basadas en suscripción y facturación por excedentes.

Planes de suscripción

Los planes incluyen distintos niveles de cuota y funcionalidades. Para consultar los precios actuales y los detalles de cada plan, visita el panel de facturación.

Funcionalidades de los planes

  • Sandbox: Cuota limitada para pruebas y desarrollo (sin soporte de excedentes)
  • Starter: Plan listo para producción con cuota moderada y soporte de excedentes
  • Pro: Plan de alto volumen con una cuota generosa y tarifas de excedentes competitivas
  • Enterprise: Cuotas y precios personalizados para despliegues a gran escala

Actualiza tu plan en cualquier momento

Puedes subir o bajar de plan en cualquier momento desde el panel de facturación. Los cambios se aplican de forma inmediata.

Cómo funcionan las cuotas

Reinicio del periodo de facturación

Las cuotas se reinician en función de tu periodo de facturación de la suscripción (normalmente mensual desde la fecha de inicio de la suscripción).

Por ejemplo, si te suscribiste el día 15, tu cuota se reinicia el día 15 de cada mes.

Qué cuenta para tu cuota

Solicitud¿Cuenta?
POST /v1/analyze (correcta)
POST /v1/analyze (fallida)
GET /v1/healthNo

Las solicitudes fallidas cuentan

Tanto las solicitudes de análisis correctas como las fallidas cuentan para la cuota, ya que consumen recursos de procesamiento.

Facturación por excedentes

Los planes con soporte de excedentes (Starter, Pro, Enterprise) permiten superar la cuota base:

  1. Superas la cuota de tu suscripción durante el periodo de facturación
  2. Las solicitudes adicionales se cobran según la tarifa de excedente del plan
  3. Los cargos por excedentes aparecen en la siguiente factura

Plan Sandbox

Sandbox no admite excedentes. Las solicitudes a la API devuelven un error 429 una vez agotada la cuota.

Respuestas por límite de uso

Agotamiento de cuota (Sandbox)

Cuando superas tu cuota mensual (solo en el plan Sandbox, ya que los planes de pago admiten excedentes):

{
  "success": false,
  "error": {
    "code": "QUOTA_EXCEEDED",
    "message": "Monthly quota exceeded"
  },
  "timestamp": "2026-02-08T12:00:00.000Z"
}

Límite de ráfaga

Cuando envías demasiadas solicitudes en un periodo corto:

{
  "success": false,
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Rate limit exceeded"
  },
  "timestamp": "2026-02-08T12:00:00.000Z"
}

Supervisión del uso

Puedes seguir tu consumo en tiempo real desde el panel. El panel muestra el uso del periodo actual, la cuota restante y las fechas del periodo de facturación.

Notificaciones por correo electrónico

Recibirás alertas automáticas por correo cuando te acerques o superes tu cuota:

UmbralNotificación
80%Aviso — te estás acercando al límite de cuota
90%Aviso urgente — la cuota está a punto de agotarse
100%Cuota agotada (solo plan Sandbox)

Buenas prácticas

Supervisar el uso en el panel

Controla tu consumo en tiempo real desde la página de analítica del panel:

  • Uso del periodo de facturación actual
  • Cuota restante
  • Tendencias de uso a lo largo del tiempo
  • Fechas del periodo de facturación

Implementar gestión de errores

async function analyzeVehicle(tireImage, carImage, apiKey) {
  try {
    const response = await fetch('https://api.ruedalens.com/v1/analyze', {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${apiKey}`,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({ tireImage, carImage }),
    });

    const data = await response.json();

    if (response.status === 429) {
      // Quota exceeded - notify user or queue for later
      console.error('Quota exceeded:', data.error.message);
      return null;
    }

    if (!response.ok) {
      throw new Error(data.error?.message || 'Analysis failed');
    }

    return data;
  } catch (error) {
    console.error('API request failed:', error);
    throw error;
  }
}

Cachear resultados

Evita solicitudes redundantes almacenando en caché los resultados de los análisis. Por ejemplo, guarda los resultados usando un hash de la imagen como clave:

import crypto from 'crypto';

function hashImage(imageBuffer) {
  return crypto.createHash('sha256').update(imageBuffer).digest('hex');
}

// Use a cache (Redis, in-memory, etc.) to avoid duplicate analyses
const cache = new Map();

async function cachedAnalyze(tireImage, carImage, apiKey) {
  const cacheKey = `${hashImage(tireImage)}_${hashImage(carImage)}`;

  if (cache.has(cacheKey)) {
    return cache.get(cacheKey);
  }

  const result = await analyzeVehicle(tireImage, carImage, apiKey);
  cache.set(cacheKey, result);

  return result;
}