# LiteLLM HTTPS Spend Query Endpoints (Fallback for SSH) When SSH to the admin-ai server is unavailable (key not on this box, server temporarily unreachable), spend data can be queried directly from the LiteLLM proxy's HTTPS REST API at `https://admin-ai.itpropartner.com`. ## Auth Extract the admin-ai API key from Hermes config: ```bash KEY=$(grep -A2 'admin-ai:' ~/.hermes/config.yaml | grep api_key | awk '{print $2}') ``` ## Endpoints ### `/global/spend` — Total cumulative spend across all keys ```bash curl -s https://admin-ai.itpropartner.com/global/spend \ -H "Authorization: Bearer $KEY" ``` Returns: `{"spend": 228.20, "max_budget": 0.0}` `max_budget: 0.0` means unlimited (no budget cap set). ### `/spend/keys` — Per-key cumulative spend + metadata ```bash curl -s https://admin-ai.itpropartner.com/spend/keys \ -H "Authorization: Bearer $KEY" ``` Returns JSON array where each entry has: - `key_name` — last-4-char suffix (e.g. `sk-...bWPA`) - `key_alias` — human-readable alias (e.g. `"Hermes"`, `"agent.iamgmb.com"`) - `spend` — cumulative dollar amount - `last_active` — ISO timestamp of last usage - `models` — list of models this key has access to - `max_budget` — budget cap (null = none) - `created_at` / `updated_at` — timestamps ### `/spend/tags` — Spend broken down by credential/tag ```bash curl -s https://admin-ai.itpropartner.com/spend/tags \ -H "Authorization: Bearer $KEY" ``` Returns JSON array where each entry has: - `individual_request_tag` — e.g. `"Credential: Deepseek"`, `"User-Agent: OpenAI/Python 2.24.0"` - `total_spend` — cumulative dollars - `log_count` — number of requests ## Limitations - These are **cumulative lifetime** figures. For 24h-only data, use the SSH+Postgres query (the `LiteLLM_SpendLogs` table has timestamps). - The HTTPS API does not expose per-model spend breakdown for the last 24h — only cumulative per-key and per-tag. - The OpenRouter API key in config.yaml typically returns 401 "User not found" when queried — the stored key is dead/expired. OpenRouter credit balance cannot be queried from this box. State as "Unavailable" in reports. Check manually at https://openrouter.ai/settings/credits. - **Cron agent analysis cannot use these HTTPS endpoints.** The `cron_mode: deny` setting blocks curl-pipe patterns (tirith blocks curl | python3) and `web_extract` can't send auth headers. These endpoints are useful only for interactive sessions or the pre-run collection script. ## Data Cross-Check The `/spend/keys` cumulative per-key figures match the Postgres `LiteLLM_VerificationToken` table. The `/global/spend` total may differ slightly from the sum of per-key spends because `/global/spend` is the proxy's internal counter (slightly behind real-time), while `/spend/keys` reads from the DB directly.