Dashboard Lifetime is not a funded API wallet. The observed account was signed in as Admin, plan Lifetime, member since Jul 2026, with 4 payments on the dashboard. GET /api/account/balance still returned $0.00 credits. billing_mode was metered_observe. wallet_policy was observe. spend_limit_minor was 0.
Those two screens can both be true at once. Do not send paid metered work because the dashboard says Lifetime. Read GET /api/account/balance. Surface $0.00 / observe / spend_limit_minor 0 to the caller before quote on a metered slug.
What the dashboard showed, and what the API showed
Dashboard:
- signed in as Admin
- Lifetime
- member since Jul 2026
- 4 payments
API balance:
- credits_label $0.00
- available_credit_label $0.00
- net_balance_label $0.00
- billing_mode metered_observe
- wallet_policy observe
- spend_limit_minor 0
- spend_used_minor 0
The key used for that reading was created at https://swarme.io/dashboard?tab=developers. /dashboard/developers returns 404. Scopes included billing:read plus capabilities:read, capabilities:quote, capabilities:run, uploads:write, and artifacts:read. Spend limit 0 was the Workspace default on that key. The prefix looks like sk_sw_QdE8Xfgj.... Do not print a full key.
Unauthenticated balance is HTTP 401. That is missing auth, not an empty wallet. Unauthenticated quote is HTTP 419 (Your secure request token expired.). The login toast Your secure form token expired. Please go back and try again. is a form token. None of those codes funds the wallet.
Included still quotes at $0.00
A completed uuid-generator run on this account returned UUID 4cd3c7b6-0495-447a-8efd-9a1374f7599c at $0.00 included. The quote lock lasted 900 seconds. idempotency_required_for_client was true. Public page: https://swarme.io/tool/uuid-generator.
Included is not "skip quote." Docs at https://swarme.io/developers still list Search, Describe, Quote, Run. The $0.00 price field is what you show the caller. Lifetime on the dashboard is not a substitute quote_id.
Do not treat the 4 dashboard payments as API credit. Those payments and credits_label $0.00 were simultaneous. A client that checks only the plan name will queue metered work against an observe wallet with spend_limit_minor 0.
The UUID quote still required "client_type": "api" and the same input on run. If you wait more than 900 seconds, quote again, Lifetime or not. idempotency_required_for_client true is a second control. It does not add credit.
Other completed slugs on the same wallet (accessibility-statement-generator, add-line-numbers, alphabetizer, article-rewriter-assistant, ascii-table-generator, base64-text-decoder) also completed. That list is not evidence that metered work would clear. It is evidence that included supported tools can finish while balance reads $0.00.
Free, premium, and Lifetime are not the same axis
The catalog holds 1940 tools: 560 free, 1380 premium. That split is access_level. Machine status is a different split: 1491 describe_only, 439 supported, 10 requires_worker. Lifetime membership does not flip describe_only to supported. It does not raise spend_limit_minor from 0.
GET /api/capabilities still caps at 500. Category slugs such as web-seo, security-network, and ai-tools page the directory. They do not page money into the wallet.
MCP will report the same empty observe wallet if you ask it. POST https://swarme.io/mcp initialize (protocolVersion 2025-03-26) identified Swarme Capability MCP Alpha 2026.07.15-wallet-alpha. tools/list returned 22 tools, including an account-balance helper. Calling that helper is the check. Guessing from the Lifetime badge is not.
What to do before a paid run
- GET /api/account/balance with Bearer auth. Record credits_label, billing_mode, wallet_policy, and spend_limit_minor.
- Describe the slug. If machine_run_status is describe_only, stop. A Lifetime badge will not execute it.
- Quote with the real input. If the price is $0.00 included, you still need quote_id and the 900-second window.
- If quote says payment is required and balance is $0.00 / observe, stop. Do not POST run to see what happens.
- If run returns HTTP 422, read the field rule. Observed examples: Use labeled address lines in key: value form or provide JSON., Domain must contain valid ASCII hostname labels., backlinks must contain between 1 and 1,000 records., Enter valid Base64URL input. Those are not wallet errors.
File tools stay on their own disclosure. pdf-to-word is client_browser with server_receives_file_bytes false. merge-pdf is async_worker with server_receives_file_bytes true. Lifetime does not change where bytes go. Review how to choose a secure online file tool before an upload.
For an agent that is about to spend, pause on the quote. See AI tool routing. Confirmation should show the slug, the price or included policy, and the $0.00 observe wallet when that is what balance returned.
A one-line rule
Lifetime explains the dashboard plan. GET /api/account/balance explains spend. On this account they disagreed in a specific way: Admin plus Lifetime plus 4 payments plus member Jul 2026, and still $0.00 metered_observe with spend_limit_minor 0. Code to the balance endpoint.
