Skip to main content
vetta auth manages the credential, not a session. It is the only group that runs without one. Both sign-in paths end at GET /v1/me, which resolves the organization from the credential alone — so nothing here asks you for an org_ id.

Commands

login, logout, and whoami are also top-level aliases, which is the spelling most examples use. vetta login and vetta auth login are the same handler.

login

Two ways in. Pass either --api-key, or both --email and --password.
--api-key is a global flag, which is why it is not in the table above. The credential is proved and the organization learned in one call before anything is written, so a bad credential leaves no profile behind. The profile file is written 0600 and the credential is never printed back — only its 12-character display prefix.
The --email / --password path stores a session token, which expires. Run vetta login again when it does. For CI, use an API key: it does not expire until you revoke it.

whoami

user is null when the principal is an API key rather than a person. mode is test for an sk_test_… credential and live for sk_live_….

register

Creates the user. Sign in afterwards with vetta login to store a credential. Registering is not the last step: a new organization holds no plan, and every command outside billing is refused with subscription_required until it has one. Start it with vetta plan subscribe, pay the checkout page it prints, then vetta plan show to confirm.

recover, reset-password, resend-confirmation

The way out of a dead end: a forgotten password, or a confirmation mail that never arrived. All three are open routes — they run without a credential, which is the point.
The reply is the same whether or not that address has an account. There is nothing here to branch on, deliberately: an endpoint that answered differently would be an account-enumeration oracle. delivery reports what the mailer just did with the message — sent, or undeliverable on a deployment with no mailer configured. The emailed link carries a one-time token. Hand it back with the new password:
A token that has expired or already been used is refused, and says so:
resend-confirmation is the same shape as recover, for the address that never got its confirmation:
The same three operations are client.auth.recover, client.auth.resetPassword and client.auth.resendConfirmation in the SDK, and are described under Authentication in the API reference.

logout

Removes the credential for the active profile only. Other profiles are untouched. Use --profile <name> to sign a different one out.

Profiles

Every auth command acts on the profile named by --profile (default: the last profile you logged into). This is what stops the next command silently aiming at production: