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).