feat: add web endpoint fallback for cookie usage metrics on non-Claude-Code accounts#144
Open
GottenHeave wants to merge 2 commits intoXerxes-2:masterfrom
Open
feat: add web endpoint fallback for cookie usage metrics on non-Claude-Code accounts#144GottenHeave wants to merge 2 commits intoXerxes-2:masterfrom
GottenHeave wants to merge 2 commits intoXerxes-2:masterfrom
Conversation
61f6627 to
306af92
Compare
Collaborator
|
wow, this is great |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Accounts without Claude Code access (e.g. Enterprise, or any subscription lacking the Claude Code entitlement) return
403 Forbidden("Claude Code requires a Pro or Max subscription") when fetching usage metrics from the OAuth endpoint (api.anthropic.com/api/oauth/usage). This causes the WebUI to show no utilization data for these cookies, even though the data is available via the claude.ai web endpoint.Solution
fetch_web_usage()method toClaudeWebStatethat bootstraps a web session and fetches usage fromclaude.ai/api/organizations/{org_uuid}/usagefetch_usage_percent()to first attempt the OAuth endpoint, then automatically fall back to the web endpoint on failureextract_usage_fields()helper (both endpoints return the same JSON structure).ok()?calls with explicitmatch+warn!logging for better debuggabilityHow it works
ClaudeWebState(works for all accounts with a valid session cookie)Both endpoints return the same JSON shape (
five_hour,seven_day,seven_day_opus,seven_day_sonnet), so no additional parsing logic is needed.