Coding agent documentation index Fetch the complete documentation index at: https://docs.worklittle.com/docs-agent-manifest.json Use this file to discover all available pages before exploring further.
CLI
Install the worklittle CLI and run any Worklittle API call from your terminal or scripts, with JSON output.
Install
Requires Node 18+ (Homebrew installs it for you).
| Method | Command | | --- | --- | | Homebrew (recommended) | `brew install worklittle/tap/worklittle` | | npm | `npm install -g worklittle` | | curl (macOS, Linux) | `curl -fsSL https://worklittle.com/install \| bash` |
The curl script verifies the checksum in manifest.json and installs to ~/.local/bin/worklittle. Set WORKLITTLE_INSTALL_PREFIX to change the prefix.
Check the install:
worklittle help
Log in
worklittle login
Your browser opens worklittle.com. Sign in (or sign up), approve the CLI, and the terminal saves a key for you. The key is named Worklittle CLI · your computer's name on API keys, acts as the workspace you had open, and expires after 30 days. Run worklittle login again when it does. On a machine without a browser, add --no-browser and open the printed link anywhere.
You can keep up to 3 logins, for example a personal account and a company workspace.
| Command | Effect | | --- | --- | | `worklittle auth list` | Saved logins, which one is active, and when each expires. Never prints keys | | `worklittle auth switch <email or org>` | Makes another saved login active | | `--account <email or org>` | Uses that login for one command | | `worklittle logout` | Revokes the active login's key and removes it. Add an email or org, or `--all` |
Logins are saved in ~/.config/worklittle/credentials.json, readable only by you. Set WORKLITTLE_CONFIG_DIR to keep them somewhere else. The Python CLI reads the same file.
Which key a command uses, first match wins: --api-key, WORKLITTLE_API_KEY, --account, the active login. Scripts and CI should keep using WORKLITTLE_API_KEY with a key from API keys.
Authentication
Send your key as a bearer token. Create one under API keys in Worklittle Business. A key can expire after 7, 30, 90 or 180 days, a year, or never. An expired key gets 401 with "This API key has expired".
Authorization: Bearer sk-wl-api01-...
The SDKs and CLI read WORKLITTLE_API_KEY. Prefer the env var over --api-key, which is visible in process lists. On your own computer, worklittle login saves a key for the CLI instead. See CLI.
Usage
worklittle <group> <action> [ID...] [--flag value] [--body '{}'] [--pretty]
Flags take a space-separated value. --flag=value is not supported by this CLI.
| Flag | Effect | | --- | --- | | `--pretty` | Indented JSON. Default is compact (`--json` forces compact) | | `--body` | JSON string request body | | `--api-key` | Overrides `WORKLITTLE_API_KEY` and saved logins | | `--account` | Uses a saved `worklittle login` (email, org name, or key id) | | `--base-url` | Overrides `https://api.worklittle.com`. Your key is sent here, so only use hosts you trust | | `--id` | Same as the positional ID. Also sent as a query parameter | | any other `--name value` | Sent as a query parameter |
jobs search accepts every GET /jobs filter by name, for example --workplace_type, --posted_within_days, --near_lat. Prefix a --company, --title, or --q value with - to exclude it.
| Exit code | Meaning | | --- | --- | | 0 | Success | | 1 | Any other error | | 2 | 401 or 403 | | 3 | 402. Do not retry until billing is fixed |
Errors are JSON on stderr.
Example
worklittle jobs search --q "software engineer" --limit 1 --pretty
worklittle jobs search --title "software engineer, -senior" --company "-lucid-motors,-tesla" --limit 5 --pretty
worklittle jobs get JOB_ID --pretty
{
"data": [
{
"id": "a3f9c2e1b7d4",
"title": "Software Engineer",
"company": { "name": "Acme Robotics" },
"location": "San Francisco, CA"
}
],
"meta": { "limit": 1, "next_cursor": "eyJvZmZzZXQiOjF9" }
}
Commands
Jobs
worklittle jobs search --q "product designer" --workplace_type remote --limit 10
worklittle jobs get JOB_ID
worklittle jobs map
worklittle jobs salary-average
Market stats
worklittle stats get
Companies
worklittle companies search --q stripe
Apply
worklittle apply submit JOB_ID --body '{}'
worklittle apply test --body '{}'
worklittle apply start
worklittle apply status JOB_ID
worklittle apply continue JOB_ID --body '{}'
worklittle apply approve JOB_ID
worklittle apply stop JOB_ID
worklittle apply steer JOB_ID
worklittle apply active
worklittle apply webhook-secret
Applied jobs
worklittle applied list
worklittle applied counts
worklittle applied track --body '{}'
worklittle applied update ID --body '{}'
Resumes
worklittle resumes list
worklittle resumes add ID
worklittle resumes download ID
worklittle resumes delete ID
worklittle resumes create --body '{}'
worklittle resumes draft --body '{}'
Cover letters
worklittle cover-letters create --body '{}'
worklittle cover-letters draft --body '{}'
Usage
worklittle usage list --source public_api --limit 20
Billing
worklittle billing balance
worklittle billing invoices
worklittle billing usage
Limits
worklittle limits get
worklittle limits budget
worklittle limits budget-set --body '{}'
Agent tools
worklittle agent tools
worklittle agent tool TOOL_NAME --body '{}'
Health
worklittle health
Any --flag value you add becomes a query parameter, and --body takes a JSON string. A flag with no value is sent as true. Replace {} in --body with the fields from the linked API page.
Python CLI
pip install worklittle installs a worklittle command that covers a subset of the commands above, and also accepts --flag=value. It exits 1 on 402. It has no login command, but it uses the logins the Homebrew/npm CLI saved, including --account. See SDK.