Skip to main content

Por qué es importante el control de presupuesto

Un agente de IA que llama a APIs de pago en un bucle puede acumular costos rápidamente. El control de presupuesto te permite:
  • Limitar el gasto total por sesión
  • Establecer límites por dominio (p. ej., máx. 100 sats/sesión en api.weather.com)
  • Recibir un callback antes de cada pago
  • Obtener un informe completo de gasto en cualquier momento

Presupuesto global

Cuando una respuesta 402 incluye un campo priceSats y este superaría el presupuesto restante, el cliente lanza BudgetExceededError antes de pagar — no se gastan satoshis.

Presupuesto por dominio

Los límites por dominio se verifican de forma independiente al límite global — ambos deben cumplirse para que el pago continúe.

Callbacks

onBudgetExceeded / on_budget_exceeded se llama justo antes de que se lance BudgetExceededError — útil para registro de logs o alertas.

Informe de gasto

spendingReport() devuelve null / None cuando no hay presupuesto configurado.

Manejo de BudgetExceededError


Notas sobre concurrencia

No compartas una instancia de L402Client entre llamadas Promise.all concurrentes cuando los límites de presupuesto son importantes.BudgetTracker.check() y record() están separados por un await (el pago Lightning). Dos llamadas client.fetch() concurrentes a diferentes endpoints pueden superar ambas la verificación de presupuesto antes de que cualquiera registre el gasto — lo que significa que el costo combinado puede exceder temporalmente tu límite de presupuesto por un pago.Patrón seguro — llamadas secuenciales:
Patrón arriesgado — llamadas en paralelo:
Mitigación para cargas de trabajo en paralelo: establece tu budgetSats de forma conservadora (p. ej., 80% de tu límite real) para absorber el exceso de gasto de un pago concurrente. Para una aplicación estricta, procesa las llamadas de forma secuencial.

Referencia completa de opciones