Scripto docs
View as Markdown

Auth (OTP login)

The two-step email OTP flow that provisions the CLI with no browser — login-request then login-complete — plus the error table and nextAction hints.

Scripto’s CLI auth is a two-step email OTP that mints a durable scripto_ API key and stores it as a local profile. It’s open signup: an unknown email is registered when you complete the flow, so the same two commands serve both first-time signup and returning login.

This is what makes “send the docs to an agent” work without a human in the browser: an agent can provision itself entirely from the terminal, given an email it can read a code from.

Step 1 — request a code

scripto auth login-request --email you@example.com
✓ Sign-in code sent to you@example.com

  Then run:
    scripto auth login-complete --email you@example.com --code <6-digit-code>

This emails a 6-digit code and exits. It is public — no key required.

Flags

FlagPurpose
--email <email>Required. The email to sign in with.
--api-url <url>Override the backend (e.g. a dev server).
--profile <name>Use a profile’s baseUrl.
--jsonEmit the envelope.

Step 2 — complete login

scripto auth login-complete --email you@example.com --code 123456
✓ Signed in

  Email:    you@example.com
  Profile:  you (now active)
  API key:  scripto_••••••••

  Try it:  scripto whoami

This verifies the code, mints a long-lived key bound to your user, and stores it as a profile that becomes active.

Flags

FlagPurpose
--email <email>Required. Same email as the request.
--code <code>Required. The 6-digit code from the email.
--name <name>Human-readable name for the minted key.
--profile-name <name>Local profile name (auto-derived from the email otherwise).
--api-url <url> / --profile <name> / --jsonAs above.

Error handling

Failures return the { success: false, error: { code, message, nextAction? } } envelope and exit non-zero. Common cases:

SituationcodeTypical nextAction
Missing/invalid emailinvalid-argumentPass --email <your-email> to: scripto auth login-request
Missing codeinvalid-argumentrequest a new code with: scripto auth login-request
Wrong or expired codeinvalid-argumentrequest a new code with: scripto auth login-request
Send failedinternalretry shortly

When you script this flow, read nextAction and surface it to the user verbatim. It tells you exactly what to do next.

Already have a key?

Skip OTP entirely:

scripto config set --api-key scripto_your_key_here

Next