Organizations, members, API keys, and the audit trail moved to their own pages:
vetta org, vetta keys, and vetta audit. There is no vetta billing group — the plan is vetta plan, the balance is vetta credits, and the card, the invoices and cancellation all live behind vetta plan portal.Commands
The plan
An organization starts with no plan, and a plan is what makes it usable:GET /v1/agents, POST /v1/sessions and everything else outside billing answer 402 subscription_required until one is active. Creating an organization does not start one, and neither does a credit balance — a full balance with no plan is still refused.
The plan is $20 per month, and each paid period also grants 20 USD of credit. So the plan buys the right to run; the credit it grants is what the running costs.
plan show
cancel_at_period_end is true once a cancellation has been asked for: the organization stays usable until current_period_end and is refused after it. This command answers whether or not a plan exists, so it is always safe to run — it is the one thing a lapsed organization can still ask.
plan subscribe
action_url is a hosted checkout page. Open it in a browser and pay it there — a card cannot be typed into a terminal, so this is the one step the CLI hands back to you. Copy the URL whole; it is printed on one line and unwrapped for exactly that reason.
subscribe while a plan is already active is harmless; it opens another checkout page you can simply not use. To cancel, use vetta plan portal below — vetta plan has no cancel command, and a cancellation takes effect at the end of the period already paid for either way.
plan portal
subscribe, it hands back a URL for a browser: none of those three is a thing a terminal can do.
subscribe it changes nothing by itself: whatever you do on that page arrives back as a confirmed event a moment later, so run vetta plan show to see the result.
An organization that has never held a plan has no account to manage, and the command says so rather than opening an empty page:
When a command is refused
Any command on an organization with no plan fails like this, and names the command that fixes it:code, so case statements that branch on it keep working; the remedy is a second line on stderr. Exit code is 1 — see exit codes.
The balance
What the plan does not cover: every token an agent spends is debited from the prepaid balance below.insufficient_credits (402) means top up; subscription_required (402) means the plan above.
show
mode is test for an sk_test_… credential and live for sk_live_…. A test-mode balance is not real money.
topup
ledger
Each entry carries full attribution and a
line_items breakdown by pricing tier, so a charge can always be traced to the run that caused it.
Money is exact.
--usd takes a decimal-dollar string and is converted client-side to integer micro-USD. JSON output amounts are integer *_micro_usd (1 USD = 1_000_000 micro-USD) so a script’s arithmetic never rounds; --human renders dollars for reading.