RainyToken RainyToken · v%1$s RainyToken AI Usage Panel OpenCode Go usage + DeepSeek balance, auto-refresh Rainy Back Cancel Add Widget Got it Refresh Settings Delete Clear Save Go ◀ Prev Next ▶ Add widget to home screen Language Select language Follow system 简体中文 繁體中文 English View details View usage details Raw data Sync usage data I\'m logged in, save Keep waiting Loading… Unknown error All models 👈 Select a service to view details Tap a card on the left Settings API Management Configure Edit Test Delete credential? This will remove the saved credential for %1$s. Not configured Last verified: %1$s Cached: %1$s %2$s Usage Stats No configured services yet %1$d refresh failed Not fetched yet Updated %1$s Monthly spent Total quota Next reset ✅ %1$s connected: %2$s %3$s ❌ %1$s failed: %2$s Invalid credential Credential changed Too many requests Network error Server error (HTTP %1$d) Parse failed Credentials About RainyToken Tips Debug log Usage details Overview Raw data Charts Not set up Configured Expired Re-login Refresh failed No data Pending OK Not set up · Tap to add Configured · Valid Expired · Tap to reconfigure Needs re-verification Manual entry mode Credential set No credential Loading Latest Cached Failed Awaiting input AI Balance Overview No services configured yet Only services with credentials are shown on the home page. Go to Settings Never fetched Updated just now Updated %1$d min ago Updated %1$d h ago Updated %1$s 💡 Long-press a card to reorder ⚠ %1$s Stored locally & encrypted, nothing is uploaded Add home screen widget? This will ask the launcher to add the RainyToken widget. Some systems may still show their own confirmation dialog. Shortcut permission denied. Please allow it in system settings and try again. The launcher rejected the request. Please check launcher permissions. This launcher does not support in-app adding. Long-press home → Widgets → find RainyToken. Tap to configure credentials Pull to refresh Service currently unavailable %1$s%2$s used this month Remaining · %1$s used / %2$s total %1$s used 5h used · %1$s Resets in %1$s REST API · ¥ WebView fetch · 5h quota JSON API · $ ChatGPT · Codex quota Cookie fetch · Cloud quota Cloud-IDE-JWT · IDE 额度 OAuth · CodeBuddy 同体系积分 自托管面板 · 用户级 sk- Key 余额 Breakdown Trae credentials Paste the Cloud-IDE-JWT from your Trae account session (starts with ey…). Used as Authorization: Cloud-IDE-JWT header. Cloud-IDE-JWT Region CN INTL WorkBuddy credentials Paste the access & refresh tokens from your Tencent WorkBuddy (CodeBuddy) session. Refresh token is rotated once per use. Access Token Refresh Token Access and refresh tokens are required Sub2API instance Any user of the instance: paste the sk-… API key issued to you to see your balance (no admin needed). No key? Use the panel login email & password. Instance base URL https://api.example.com Authentication API Key (sk-…) Or panel account Email Password Base URL and (API Key or email+password) are required Usage breakdown Daily and per-model usage from your Sub2API gateway Today 7 days 30 days 90 days All Requests Tokens Cost Daily usage By model All models %1$s requests · %2$s tokens No daily usage data in this range No spend in this range Model: %1$s · in current period No model data in this range Daily check-in Check in every day for credits; streaks earn bonuses Check in Checking… Sign in normally on the opened page; the app reads the session automatically. Manual API Key still works. Panel token captured — tap Save to apply ✓ Panel token captured d h m 5 hours 5h 5h usage 5-hour rolling Week Month Monthly Usage Usage window%1$s Usage window Model usage Quota $%1$s OpenCode Usage CommandCode Usage %1$d records Tap to sync Input tokens Output tokens Reasoning tokens Total cost Cache read %1$s Cache write %1$s No data yet · tap 🔄 to sync ✓ %1$d new records Partial sync: %1$d records inserted, %2$d pages failed tap to switch All times in UTC+0 Switched to UTC+8, charts shown in Beijing time Switched to UTC+0, charts shown in UTC $%1$s spent / $%2$s total $%1$s remaining Extra credits By model By day (UTC+0) %1$d models %1$d Start time End time Spending (USD) API requests Token usage Output Input (miss) Cache hit Time Model Input(cache) Output Cost All Last 5 hours Last 12 hours Last 24 hours Today Yesterday Last 7 days Last 30 days This month Custom Custom day Custom month Custom range A tiny tool to check AI balances.\nCredentials are encrypted locally — nothing is uploaded. View all %1$d hidden tips Inspect token refresh, network requests and other debug records ✓ Login state configured (%1$d cookies) How to get the Cookie? 1. Open the login page below in desktop Chrome 2. Sign in with GitHub / Google (won\'t be blocked) 3. After login, press F12 → Application → Cookies 4. Copy all cookies of the site and paste them above Format: name1=value1; name2=value2 How to get OpenCode Go credentials? 1. Open opencode.ai/auth in desktop Chrome 2. Sign in with GitHub / Google (Google won\'t block Chrome) 3. You\'ll land on the dashboard, URL looks like: https://opencode.ai/workspace/{id}/go 4. Copy the {id} segment → workspaceId 5. F12 → Application → Cookies 6. Find the cookie named auth under opencode.ai 7. Copy its Value field → auth cookie Note: only the auth cookie is needed, not the whole cookie string How to get CommandCode credentials? 1. Open https://commandcode.ai and sign in with GitHub ▸ Get API Key (required): Avatar (top right) → Settings → API Keys → Create a Key ▸ Get all cookies (for usage records): F12 → Application → Cookies → commandcode.ai Select all cookies and copy the whole string Paste it below — no need to pick them one by one Tip: balance works without cookies, usage records will just be empty. How to get Codex auth.json? 1. Run codex-oauth-proxy or codex-proxy in a terminal to sign in to ChatGPT 2. The credential file is saved at: Saved Credentials saved Connected! Balance: %1$s %2$s Connected, credentials saved API Key cannot be empty Invalid JSON format Service rejected this credential (401/403) Credentials changed during test Too many requests (429) Server error (%1$d) Network error: %1$s , previous credential restored , credential changed, rollback skipped Test failed. %1$s%2$s Testing is not supported for this service Both auth cookie and workspaceId are required Cookie cannot be empty Credential not configured Credential missing or expired Credential invalid, please reconfigure in Settings Credential invalid, please log in again Credentials changed, reloading Credentials changed, please retry Network error, please check your connection Network error Server error (HTTP %1$d) Too many requests%1$s , retry in %1$d seconds Usage activation is not supported Please select a model first No cookie captured, please make sure you\'re logged in No login URL configured URL should start with %1$s Authorization failed: %1$s State mismatch, please retry Callback missing authorization code Token exchange failed, check the debug log ✓ Usage activated ✓ Activation successful Request result Error: %1$s Response body:\n%1$s Model: %1$s Response ID: %1$s Reply: (empty) (no reply content) (response parsing failed, but the request was sent) Usage: prompt=%1$s completion=%2$s total=%3$s tokens Usage: input=%1$s output=%2$s tokens Token refresh failed. Please log in again or import auth.json. Sign in to %1$s Done logging in? If you finished signing in but the page didn\'t redirect, tap the button below to grab the cookie and save your session. No log entries yet\nRefresh Codex usage and debug info will show up here OpenCode Go · Usage DeepSeek balance Auto refresh %1$s · Quota %1$s · %2$s Updated %1$s No data Refreshing… Reorder cards by long-press Long-press a card to reorder it Long-press any service card on the home screen and drag it wherever you like. The order is saved automatically. Widget top-left opens the app Tap the widget\'s top-left mark to open the app The RainyToken › mark at the top-left of the widget opens the app. Tapping elsewhere switches services. Tap charts for details Tap a chart bar to see that time slot Tap or slide on the usage charts to inspect the exact values of a time slot. Chart titles are clickable Tap a chart title for a per-model breakdown Tapping a chart card title (e.g. "Spending") shows a per-model breakdown dialog. Switch chart timezone Usage details can toggle UTC+0 / UTC+8 The usage details page can toggle between UTC+0 and UTC+8; chart labels follow along. CCGO clear & resync CCGO details can clear cache and resync The "Clear" button on the CCGO usage details page deletes local cache and re-fetches everything. View usage details Service cards link to usage charts Configured service cards show a "View usage details" entry at the bottom that opens the charts. Browse raw data Top-right of usage details opens raw records "Raw data" at the top-right of usage details lists every record with pagination. Pull-to-refresh syncs usage Pull to refresh syncs balances and usage Pull-to-refresh on the home screen refreshes balances and also syncs OCGO / CCGO usage records. Credential guides Credential pages include step-by-step guides The "How to get" button at the bottom of credential pages walks through every service step by step. Clipboard auto-import Codex supports one-tap import from clipboard The Codex credential page supports "Auto-import from clipboard": paste auth.json and it fills in with one tap. Jump to a page number Raw data page accepts a page number The raw data page lets you enter a page number to jump directly — no need to flip through pages. Widget auto-refresh Swipe to the widget and it auto-refreshes The widget refreshes balances when you swipe to it, or tap the ↻ button manually. %1$d calls Pick a date Pick a month (any day) Date range Start date End date Spending breakdown Request breakdown Token breakdown Clear data This clears all cached CommandCode usage and re-syncs. It takes a few seconds. Continue? Confirm (%1$ds) Yes, clear Close From %1$s To %1$s Apply custom range OK End date cannot be earlier than start date %1$s Time %1$s:%2$s No data Total: %1$s Total Records Cache read Cache write Cache token breakdown ※ Cache reads are included in "Input tokens" %1$d calls MMM d, EEEE %1$d calls · $%2$s Raw data Cache write (5m) Cache write (1h) Cost (USD) Cost (raw) ~/.config/codex-oauth-proxy/auth.json 3. Open it with a text editor, copy everything and paste it above JSON example: {"tokens": { "access_token": "...", "refresh_token": "...", "expiresAt": 1783727108252 }} Tip: the app auto-refreshes the token after import, no manual updates needed. Ollama credentials Copy the full cookie from your browser. After logging into ollama.com/settings, find the Cookie header in DevTools → Network and copy it. Update credentials Save credentials Test & save Open Ollama Settings in browser Copy login URL to clipboard One-tap usage API Key (optional) With an Ollama Cloud API Key, the details page can send one request to activate usage stats. Get it at ollama.com/settings → API Keys. ollama-xxx or sk-xxx Save API Key OpenCode Go credentials Needs both auth cookie and workspaceId. The app fetches the dashboard via OkHttp and parses 5h/week/month usage. Auto-import from clipboard The {id} segment of the dashboard URL auth Cookie value F12 → Cookies → opencode.ai → Value of auth How to get these two? Open login page in browser With an OpenCode Zen API Key, the details page can send one request to activate usage stats. Get it at opencode.ai/settings → API Keys. CommandCode credentials Needs an API Key (for balance). Session Cookie (optional) for usage records, copied from browser DevTools. Balance works without it. Generate at Settings → API Keys Session Cookie (optional) F12 → Cookies → commandcode.ai → select all & paste How to get API Key and Cookie? Enter API Key Credentials are encrypted with Android Keystore (AES-256 GCM) and stored in local DataStore. Update Codex / ChatGPT credentials OAuth login fetches credentials automatically. You can also paste auth.json manually. 🔐 OAuth login (recommended) ── or import manually ── Full auth.json content Paste the full {"tokens": {...}} JSON Import & save How to get auth.json? Paste session Google OAuth blocks the in-app WebView, so log in with a browser and paste the cookie here. Cookie string Save cookie Empty response body Response root is not a JSON object No usage window data found Model list not found Model list is empty Response format is abnormal Weekly Spark Model call count Cached data · %1$s Showing the last successfully fetched balance %1$s%2$s spent this month Balance breakdown Granted balance Top-ups Loading model list... Select model Refresh model list Activating... Retry usage activation ⚡ One-tap usage activation Refresh balance Log in again Configure credential Top up / Recharge Current balance 5h live usage Monthly balance Session usage Please select a model Error details: API response: Copy *** (length %1$d) *** %1$s***%2$s (length %3$d) Bad cookie format, expected name1=value1; name2=value2 %1$d cookies saved Please paste the auth.json content auth.json is missing access_token or refresh_token Codex credential saved; token auto-refreshes when expiring Parse failed: %1$s Connected! Balance: $%1$s API Key saved Connected! Session: %1$s%% · %2$s Credential deleted Clipboard is empty Recognized workspaceId and auth cookie Recognized workspaceId, please paste the auth cookie too Recognized auth cookie, please paste the workspaceId too No valid credential recognized Codex OAuth Login Exchanging token... Retry Headless login 1. Tap "Open in browser" or copy the link below to a browser\n2. Complete login & authorization on the OpenAI page\n3. The browser redirects to a localhost address (page not loading is normal)\n4. Copy the full URL from the address bar and paste it below\n5. Tap "Submit callback URL" Authorization link Open in browser Copy link ── paste the callback URL after login ── Callback URL http://localhost:1455/auth/callback?code=... Submit callback URL Regenerate auth link Preparing authorization... Token Activity Daily Weekly Cumulative OCGO Token Activity OCGO daily Token usage heatmap Token Activity No data yet Less More Token activity heatmap, %1$d days Token activity heatmap, %1$d weeks Select year Recent 365 days Total tokens Peak tokens Current streak Longest streak %1$d day %1$d days %1$s used %2$s tokens %1$s used %2$s tokens Profile Nickname Email Not set Edit Edit Profile Change Avatar Choose from gallery Remove avatar Save Cancel Activity Insights Total requests %1$d request %1$d requests Peak hours %1$d–%2$d Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec API Key Workspace ID 正在识别站点… API Key:仅统计该 Key 的用量 面板登录:全账号消费统计,并解锁 Key 管理/分组/兑换 账号一键登录(推荐) 正在登录… 网页登录(备用,如开了二次验证) 账号密码 API Key 二次验证码(选填) No usage data yet — pull to refresh Panel management Load API Key list No API Key yet New Key Redeem code New API Key Key name Group (optional, default if unselected) No group available ✓ API Key created This Key is shown only once — copy it now: Copy & close Redeem code Switch group Group Default group never used last %1$s %1$s (ID %2$d) API Key copied ⚠ Low balance: $%1$s left — top up or redeem a code (all-time, not limited to the selected period) API keys Email login API key login %1$d req Balance