Skip to main content

Por que o controle de orçamento é importante

Um agente de IA chamando APIs pagas em loop pode acumular custos rapidamente. O controle de orçamento permite:
  • Limitar o gasto total por sessão
  • Definir limites por domínio (ex.: máx. 100 sats/sessão em api.weather.com)
  • Receber um callback antes de cada pagamento
  • Obter um relatório completo de gastos a qualquer momento

Orçamento global

Quando uma resposta 402 inclui um campo priceSats e ele excederia o orçamento restante, o cliente lança BudgetExceededError antes de pagar — nenhum satoshi é gasto.

Orçamento por domínio

Os limites por domínio são verificados de forma independente do limite global — ambos devem ser aprovados para que o pagamento prossiga.

Callbacks

onBudgetExceeded / on_budget_exceeded é chamado imediatamente antes de BudgetExceededError ser lançado — útil para logs ou alertas.

Relatório de gastos

spendingReport() retorna null / None quando nenhum orçamento está configurado.

Tratando BudgetExceededError


Notas sobre concorrência

Não compartilhe uma única instância de L402Client entre chamadas Promise.all concorrentes quando os limites de orçamento forem importantes.BudgetTracker.check() e record() são separados por um await (o pagamento Lightning). Duas chamadas client.fetch() concorrentes para endpoints diferentes podem ambas passar pela verificação de orçamento antes que qualquer uma registre o gasto — o que significa que o custo combinado pode exceder temporariamente seu limite de orçamento em um pagamento.Padrão seguro — chamadas sequenciais:
Padrão arriscado — chamadas paralelas:
Mitigação para cargas de trabalho paralelas: defina seu budgetSats de forma conservadora (ex.: 80% do seu limite real) para absorver o gasto excedente de um pagamento concorrente. Para aplicação estrita, processe as chamadas sequencialmente.

Referência completa de opções