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
worklittle command-line client. JSON on stdout by default.
Install
Homebrew (recommended)
brew install worklittle/tap/worklittle
Tap: worklittle/homebrew-tap. Homebrew installs Node 18+ as a dependency.
curl (macOS / Linux, needs Node 18+)
curl -fsSL https://worklittle.com/install | bash
Same script: https://docs.worklittle.com/install. Verifies the CLI checksum from manifest.json before install. Default path is ~/.local/bin/worklittle (override with WORKLITTLE_INSTALL_PREFIX).
From the monorepo
cd packages/sdk-js && npm install && npm run build
node dist/cli.js help
# or: npm link
Published packages:
npm install worklittle
pip install worklittle
The TypeScript package is also on npm as @worklittle/sdk (same code). The CLI binary is worklittle (npm install -g worklittle). Homebrew remains the recommended CLI install.
Authentication
Bearer token. Create a key in the Worklittle Business under API keys.
Authorization: Bearer sk-wl-api01-...
For the SDK and CLI, set WORKLITTLE_API_KEY. Prefer the env var over --api-key so the key does not appear in process lists. Do not point --base-url at hosts you do not trust.
Usage
worklittle <group> <action> [args] [--flag value] [--body '{}'] [--pretty|--json] [--api-key KEY]
| Flag | Effect | | --- | --- | | `--pretty` | Indented JSON on stdout | | `--json` | Compact JSON (default) | | `--api-key` | Override `WORKLITTLE_API_KEY` | | `--base-url` | Override `https://api.worklittle.com` | | `--body` | JSON body for POST/PATCH | | `--q` `--title` `--limit` `--cursor` `--id` `--company` | Query params / positional fallbacks (same names as `GET /jobs`) |
--company accepts bare slugs (include OR) or leading-dash slugs to exclude, e.g. --company=-lucid-motors,-tesla. Title negatives stay in --q / --title (-Senior). Other GET /jobs flags pass through by name (--workplace_type, --posted_within_days, --near_lat, …). Full filter reference: Search jobs.
Also: jobs map, jobs salary-average, companies search, stats get (JS and Python CLIs).
Exit 0 on success, 2 on 401/403, 1 on other failures. 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
{
"data": [
{
"job_id": "…",
"title": "Software Engineer",
"company_name": "Example Co",
"location": "San Francisco, CA"
}
],
"meta": {
"limit": 1,
"next_cursor": "…"
}
}
Then:
worklittle jobs get JOB_ID --pretty
Candidates
worklittle candidates list --limit 10 --pretty
worklittle candidates get CANDIDATE_ID --pretty
See Manage candidates.
Commands
| Command | Args / flags | HTTP | | --- | --- | --- | | `jobs search` | `--q` `--title` `--company` (+ any `GET /jobs` flag) | `GET /jobs` | | `jobs get` | `JOB_ID` | `GET /jobs/:id` | | `jobs map` | query flags | `GET /jobs/map` | | `jobs salary-average` | query flags | `GET /jobs/salary-average` | | `companies search` | query flags | `GET /companies` | | `stats get` | query flags | `GET /jobs/stats` | | `apply submit` | `JOB_ID` `--body` | `POST /jobs/:id/apply` | | `apply-with-ai *` | id / `--body` | `/jobs/apply` | | `applied list` / `counts` / `track` / `update` | id / `--body` | `/jobs/applied` | | `candidates list` / `get` / `update` / `import` / `stages` | id / `--body` | `/candidates`, `/pipeline-stages` | | `employees list` / `get` / `create` / `update` / `delete` | id / `--body` | `/employees` | | `listings *` | id / `--body` | `/business/jobs` | | `employer-jobs *` | id / `--body` | `/business/jobs` | | `org list` / `create` / `update` / `delete` | `--body` | `/business/teams` | | `surveys list` / `get` / `create` / `update` / `responses` | id / `--body` | `/business/surveys` | | `documents list` / `create` / `templates` / `mine` | `--body` | `/business/documents` | | `attendance list` / `me` / `get` / `create` / `update` | id / `--body` | `/attendance` | | `webhooks list` / `create` / `get` / `update` / `delete` / `test` / `rotate-secret` / `deliveries` | id / `--body` | `/webhooks` | | `email list` / `create` / `update` / `delete` / `preview` / `send` | `--body` | `/email-messages`, `/email/send` | | `email sends` / `send-get` / `send-events` | id / query flags | `GET /email/sends` | | `offers list` / `create` / `update` / `delete` | `--body` | `/offers` | | `usage list` | `--source` (`all` / `public_api` / `platform_ai` / `org_activity`) `--since` `--cursor` `--limit` | `GET /usage` (rows include `where_label` / `where_href` — Chat, Voice, jobs, Private; same Destination as [Usage](https://worklittle.com/business/usage)) | | `billing balance` / `invoices` / `usage` | | `/billing/*` | | `limits get` / `budget` / `budget-set` | `--body` | `/limits` | | `resumes create` | `--body` | `POST /jobs/resumes` | | `cover-letters create` | `--body` | `POST /jobs/cover-letters` | | `agent tools` / `tool` | name + `--body` | `/v1/agent/tools`, `/v1/agent/tool` | | `health` | | `GET /health` |
Other --flag value pairs are forwarded as query parameters (except --body). The JS Homebrew CLI is canonical; the Python CLI is a smaller subset (usage, billing, email sends included).