Saltar al contenido principal

Tarifas y pricing

AIUsage mantiene una tabla de tarifas versionada por proveedor, modelo y credencial, con vigencia temporal. Esto permite cambiar precios sin redeploy ni migrar histórico.

Modelo de datos

{
"id": "prc_openai_gpt4o_2026q3",
"provider": "openai",
"model": "gpt-4o",
"providerConfigId": "pc_openai_prod",
"validFrom": "2026-07-01T00:00:00Z",
"validTo": "2026-09-30T23:59:59Z",
"pricing": {
"inputTokens": { "usdPer1k": 0.0025 },
"outputTokens": { "usdPer1k": 0.0100 },
"reasoningTokens": { "usdPer1k": 0.0100 },
"cacheReadTokens": { "usdPer1k": 0.00125 },
"cacheWriteTokens": { "usdPer1k": 0.003125 },
"seconds": { "usdPer1": 0.000 },
"units": { "usdPer1": 0.040 }
},
"currency": "USD"
}

Vigencia

  • Una tarifa está vigente en [validFrom, validTo).
  • El cálculo del costo de un evento mira la tarifa vigente al momento del evento, no al momento del reporte. Esto preserva el histórico.
  • Cuando una tarifa vence, se crea una nueva entrada (nunca se muta la anterior).

Tarifa por credencial

Desde la Fase 6 se soporta providerConfigId como discriminador: podés tener tarifas distintas para distintas credenciales (p. ej. credencial negociada vs standard).

Cierre de día y snapshot

Al cierre de cada día UTC, AIUsage crea un snapshot del estado agregado. Esto previene que eventos tardíos reescriban el histórico.

Modelos sin tarifa (missing pricing)

Si un evento llega con un (provider, model) que no tiene tarifa vigente, se reporta como missing pricing en la UI y se contabiliza con costUsd: 0. No se bloquea la llamada (Gate 0 = aviso).

Endpoint público para consultarlos:

GET /aiusage/missing-pricing

Migración de credenciales legacy

AIUsage mantiene aiusage_legacy_marker y aiusage_migration para registrar qué credenciales y bots fueron migrados al nuevo sistema. Detalles en doc-iausage/08-MIGRATION-AND-HISTORICAL-BACKFILL.md.