1.3 KiB
Provider reconciliation capability decision
Decision date: 2026-07-16.
The external UsageEvent v1 endpoint remains limited to callback_final. Current
OpenAI and Anthropic organization usage APIs return time-bucketed aggregates;
neither response includes the provider request ID needed to match an individual
EvoScientist model call.
- OpenAI:
GET /v1/organization/usage/completionsgroups by project, user, API key, model, batch, or service tier and returns bucket totals. - Anthropic:
GET /v1/organizations/usage_report/messagesgroups by API key, workspace, model, service tier, or context-window dimensions and returns bucket totals.
Official references:
- https://platform.openai.com/docs/api-reference/usage/completions
- https://docs.anthropic.com/en/api/admin-api/usage-cost/get-messages-usage-report
Because these sources cannot identify a single request, the WebUI stores them as
internal aggregate-report-v1 observations and produces an exact decimal
difference report for the same deployment/provider/model/window. Aggregate
reports never update model_usage, never synthesize provider_only calls, and
never enter /api/usage/events. A future connector may enable per-request
reconciliation only after its official response includes a stable request ID;
that change requires a new event schema and projection policy.