Billing API reports a healthy account while every request 400s with insufficient credits
維護者通常 1 天內回覆
還沒有人認領這個 Issue。
評估
研究方向
Start by reading the /alpha/billing/credits handler and the request path that returns the insufficient credits error; the payload names no source files or tests. Compare how each path derives credit availability, then check the usage limits documentation and related issue #904. Done when the billing response gives clients a reliable signal that matches whether requests can be served, with the documented behavior aligned.
由索引模型根據 Issue 內容生成。
描述
Summary
/alpha/billing/credits reports a healthy account (belowThreshold=false, both rolling windows at 0% used) while every completion request is rejected with insufficient credits. A client that automates fallback across providers therefore has no way to tell "this account can't serve requests" — it has to send a real request to find out.
Expected Behavior
If requests are refused, one of the documented fields should reflect it:
credits.belowThreshold = true, or- a new explicit flag (
canRequest/insufficientCredits), or windowLimits.exceeded/fiveHour.exceededset.
Also, https://commandcode.ai/docs/resources/usage-limits ("What happens when I run out of credits?") says requests stop once your included credits reach zero, which suggests monthlyCredits would be 0 at that point. Here they stop at 0.084.
Actual Behavior
GET https://api.commandcode.ai/alpha/billing/credits → 200:
{
"credits": { "belowThreshold": false, "creditThreshold": 0,
"monthlyCredits": 0.0840296077, "purchasedCredits": 0, "freeCredits": 0 },
"windowLimits": { "limited": true, "exceeded": null,
"fiveHour": { "used": 0, "cap": 14, "exceeded": false, "resetAt": 0 },
"weekly": { "used": 0, "cap": 35, "exceeded": false, "resetAt": 0 } }
}
GET https://api.commandcode.ai/alpha/billing/subscriptions → 200: status: "active", planId: "individual-goat", currentPeriodEnd: "2026-11-04T14:00:31.000Z".
Any request fails, including a one-token one:
POST /provider/v1/chat/completions
{"model":"deepseek/deepseek-v4.1-flash","messages":[{"role":"user","content":"hi"}],"max_tokens":1}
HTTP 400
{"message":"You have insufficient credits to make this request. Please purchase more credits to continue using the service.",
"type":"invalid_request_error","code":"BAD_REQUEST"}
x-trace-id: ab67b7089a5a839861c5a497f5d9fe96
So belowThreshold is unusable as a signal: with creditThreshold = 0 it can only trip exactly at zero. windowLimits.limited = true is not a signal either — it is true with both windows at 0% used, and windowLimits.exceeded is null, not false.
Steps to reproduce the issue
- Use an account whose included monthly credits are almost gone (
0.084here) with no purchased credits. curl -s -H "Authorization: Bearer $KEY" https://api.commandcode.ai/alpha/billing/credits→belowThreshold: false,monthlyCredits: 0.084, windows0/14and0/35.curl -s -X POST https://api.commandcode.ai/provider/v1/chat/completions -H "Authorization: Bearer $KEY" -H "content-type: application/json" -d '{"model":"deepseek/deepseek-v4.1-flash","messages":[{"role":"user","content":"hi"}],"max_tokens":1}'→ 400insufficient credits.
Command Code Version
1.88.1 (provider-API behaviour; reproduced with plain curl, no CLI involved)
Operating System
Windows
Suggested fixes
- Add an explicit
canRequest/insufficientCreditsboolean to/alpha/billing/credits, or makebelowThresholdhonour a real minimum balance instead ofcreditThreshold = 0. - Return the required amount / remaining balance in the 400 body, and a documented error code distinct from
BAD_REQUEST. - Document
windowLimits.limitedandwindowLimits.exceeded(nullvsfalse) — clients can only guess today. - Align the "requests stop once your included credits reach zero" FAQ sentence with actual behaviour.
Related: #904 (non-interactive quota readout) is also helped by making these fields trustworthy.
- 主要語言
- 沒有語言資料
- 星號
- 4.2k
- 分支
- 377
- 平均合併
- 1 天 3 小時
- 30 天內合併 PR
- 6
環境準備
這個專案沒有提供開發容器、Dockerfile 或貢獻指南,環境需要你自己搭建:先看它的 README,通用步驟見我們的新手貢獻指南。
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
CommandCodeAI/command-code 的其他 Issue
-
Provider /v1/messages rejects role:"system" inside messages[] — Claude Code ≥ 2.1.154 incompatible未關閉
難度 2/5 1-3 小時 新手友好度 75/100
CommandCodeAI/command-code#1085 ·
維護者通常 1 天內回覆
-
Feature request: auto-reconnect remote control (/rc) after restart可能已有人在做 @aliarain 於 20 天前認領。 未關閉p2
難度 2/5 1-3 小時 新手友好度 85/100
CommandCodeAI/command-code#992 · 1 則留言 · 已指派 1 人 ·
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 68/100
CommandCodeAI/command-code#933 ·
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 68/100
CommandCodeAI/command-code#855 ·
維護者通常 1 天內回覆
-
grep tool passes empty file type to ripgrep可能已有人在做 @ahmadbilaldev 於 19 天前認領。 未關閉
難度 2/5 1-3 小時 新手友好度 68/100
CommandCodeAI/command-code#655 · 1 則留言 ·
維護者通常 1 天內回覆
查看 CommandCodeAI/command-code 的全部 Issue
相似的 Issue
-
feature javascript
難度 2/5 1-3 小時 新手友好度 61/100
mattgodbolt/jsbeeb#1833 ·
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 72/100
DiamondLightSource/eiger-correction#2 · 1 則留言 ·
-
module: backend type: bug/reported
難度 2/5 1-3 小時 新手友好度 76/100
OpenXiangShan/XiangShan#6938 ·
維護者通常 3 天內回覆
-
難度 2/5 1-3 小時 新手友好度 70/100
-
PriorityNotificationQueue::wakeUpAll() loses the wake-up for a thread that is not waiting yet可能已有人在做 @matejk 今天認領。 未關閉bug
難度 2/5 1-3 小時 新手友好度 78/100
pocoproject/poco#5674 ·
維護者通常 2 天內回覆