Global flags
These flags are accepted by every command that talks to the backend:| Flag | Purpose |
|---|---|
--api-key <key> | Override the active profile’s API key |
--api-url <url> | Override the backend base URL |
--profile <name> | Use a specific saved profile instead of the active one |
--json | Output a stable JSON shape for machine consumption |
Auth (OTP)
Terminal-only signup and login. No browser, no dashboard. Seecli/auth for the full flag reference and error-code table.
slideless auth signup-request
Email a 6-digit signup code to a brand-new address. Refuses (USER_ALREADY_HAS_ORGANIZATION) if the email already owns an organization.
slideless auth signup-complete
Verify the code; create user, organization, and a cko_ key; save it as the active profile.
slideless auth login-request
Email a login code to an existing account. Returns USER_NOT_FOUND / USER_HAS_NO_ORGANIZATION if there’s nothing to log in to.
slideless auth login-complete
Verify the code; mint a fresh cko_ key for the existing organization; save it as the active profile.
Authentication
slideless login
Save an API key and verify it against the backend. Alias of slideless config set.
slideless whoami
Show the currently authenticated identity. Calls /verifyApiKey for fresh data; falls back to cached profile data on network error.
slideless verify
Focused identity check — prints ✓ API key valid and exits 0 on success, nonzero on failure. Convenient for CI pipelines and troubleshooting.
slideless use [name]
List saved profiles or switch the active one.
slideless logout [name]
Remove a profile. Without an argument, removes the active profile.
Presentations
slideless share <path>
Upload an HTML file as a public presentation, or update an existing one in place with --update <shareId>.
slideless update <shareId> <path>
Replace the HTML at an existing share. Same URL, new content, version bumps, view count preserved.
slideless list
List your presentations (most recent first, capped at 100).
slideless get <shareId>
Show full metadata for a single presentation, including per-token view counts.
Config
slideless config show
List all saved profiles.
slideless config set
Save a profile. Same behaviour as slideless login.
slideless config clear
Remove config or a specific profile.
Error shape (--json)
Every command returns this shape on failure:
code values (share / presentations):
| Code | Meaning |
|---|---|
unauthenticated | Missing or invalid API key |
permission-denied | Key valid but lacks the required scope, or not the resource owner |
not-found | The shareId doesn’t exist |
archived | Tried to update a presentation that’s been archived |
payload-too-large | HTML exceeds the 10 MB limit |
network-error | Couldn’t reach the backend |
internal | Backend 5xx |
slideless auth ...):
| Code | Meaning | nextAction |
|---|---|---|
USER_ALREADY_HAS_ORGANIZATION | Signup email already owns an org | Switch to login-request |
USER_NOT_FOUND / USER_HAS_NO_ORGANIZATION | Login email has no account (or no org yet) | Switch to signup-request |
OTP_RESEND_COOLDOWN | Called -request twice within 30 s | Wait details.retryInSeconds, retry |
OTP_EXPIRED / OTP_NOT_FOUND / OTP_ALREADY_USED / OTP_LOCKED_OUT | Code is stale or bad | Run the matching -request again |
OTP_INVALID | Wrong 6 digits | details.attemptsRemaining shows how many tries remain |
OTP_PURPOSE_MISMATCH | Signup code used for login (or vice versa) | Run the matching -request |
LOGO_TOO_LARGE / LOGO_INVALID_FORMAT / LOGO_DECODE_FAILED | Logo rejected | Use a PNG/JPEG/WebP/SVG under 2 MB |
BRAND_COLOR_INVALID / COMPANY_NAME_TOO_LONG / INVALID_EXPIRES_IN_DAYS | Optional-field validation | Adjust or omit the flag |
nextAction string designed to be acted on programmatically (e.g. jq -r '.error.nextAction').