64 lines
2.8 KiB
Markdown
64 lines
2.8 KiB
Markdown
# 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.
|