API reference
Key info and balance
GET /v1/key tells a key about itself: what's left to spend, its limits, the models it may call and when it expires. Tools and agents call it to show your balance, or to stop before a job runs out of money.Get the key#
GET/v1/key
Send the key the way you send it to any endpoint, as Authorization: Bearer or x-api-key. The call is free, isn't rate limited and works with every key, whatever models it's locked to. A revoked or unknown key gets 401 invalid_api_key, an expired one 401 key_expired.
The answer is wrapped in data, the shape OpenRouter's key endpoint uses, so tools that already read that can read this. Money is in US dollars.
curl https://fullsendai.com/v1/key -H "Authorization: Bearer $FULLSEND_API_KEY"{ "data": { "label": "Production server", "key": "fs_live_a41f…6da8", "created_at": "2026-10-15T23:25:20.390Z", "expires_at": null, "balance": 56.7767, "plan_allowance_remaining": 0.97063, "limit": null, "usage": 0, "limit_remaining": null, "limit_reset": "monthly", "rate_limit": { "requests": null, "interval": "60s", "account_requests": 600 }, "allowed_models": null, "project": { "id": 5, "name": "Default project" } }}Fields#
labelstring- The key's name, as set on the API keys page.
keystring- The key shortened to its start and last four characters, like
fs_live_a41f…6da8. The full key is never returned. created_atstring- When the key was created (ISO 8601).
expires_atstring | null- When the key stops working, or null if it never expires.
balancenumber- The prepaid balance of the account the key bills, in dollars. Shared by every key and team member on the account. See Plan allowance and balance.
plan_allowance_remainingnumber- What's left of this month's plan allowance, in dollars. It's spent before the balance.
limitnumber | null- The key's monthly spend cap in dollars, or null for none.
usagenumber- What the key has spent this calendar month (UTC), in dollars.
limit_remainingnumber | null- What's left under the cap this month; null when there's no cap. At 0, calls answer
429 key_limit_reached. limit_resetstring- Always
monthly: caps and usage reset on the 1st (UTC). rate_limitobjectrequestsis the key's own requests per minute per model, or null when each model's default applies;intervalis60s;account_requestsis the account-wide limit per minute. See Rate limits.allowed_modelsarray | null- The model IDs the key is locked to, or null when it may call every model.
projectobject | null- The project the key spends in:
idandname. See Projects.
What the key can spend right now is the smaller of balance + plan_allowance_remaining and limit_remaining (when there is one). A project budget can stop it sooner; that shows on the Projects page.
Examples#
A key locked to two models, with a $50 monthly cap, 30 requests a minute and an expiry date, partway through the month:
{ "data": { "label": "CI agent", "key": "fs_live_9c02…71be", "created_at": "2026-09-01T09:12:44.000Z", "expires_at": "2026-12-31T00:00:00.000Z", "balance": 120.5, "plan_allowance_remaining": 0, "limit": 50, "usage": 31.284, "limit_remaining": 18.716, "limit_reset": "monthly", "rate_limit": { "requests": 30, "interval": "60s", "account_requests": 600 }, "allowed_models": ["deepseek-v4.1-flash", "fullsend/auto"], "project": { "id": 12, "name": "Build pipeline" } }}Stop a batch job before it starts when the key can't cover it:
def spendable(key): total = key["balance"] + key["plan_allowance_remaining"] return total if key["limit_remaining"] is None else min(total, key["limit_remaining"])key = requests.get("https://fullsendai.com/v1/key", headers={"Authorization": f"Bearer {os.environ['FULLSEND_API_KEY']}"}).json()["data"]if spendable(key) < 5: raise SystemExit("Less than $5 left on this key: add credit or raise its cap first.")Showing it in a tool#
A coding agent, editor plugin or status bar can call /v1/key with the key it already has to show “$56.78 left”, warn when a cap is close, or list only the models in allowed_models. Polling every minute or two is plenty: balances change only as calls finish or credit is added. The dashboard shows the same numbers on API keys and Balance and payments.
Stuck? Email [email protected]System statusChangelog