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.

Manage candidates

Operate your employer ATS: candidates, pipeline stages, notes, interviews, employees, email, and offers.

Overview

The ATS routes list your organization's applicants and move them through your hiring pipeline.

# List candidates in a stage
curl -s "https://api.worklittle.com/candidates?limit=25&stage_key=applied" \
  -H "Authorization: Bearer $WORKLITTLE_API_KEY"

# Move one to another stage
curl -s -X PATCH "https://api.worklittle.com/candidates" \
  -H "Authorization: Bearer $WORKLITTLE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"candidate_job_id":"CANDIDATE_JOB_ID","stage_key":"phone_screening","stage_label":"Phone screening"}'

Stage moves go through PATCH /candidates with the candidate's candidate_job_id, plus both stage_key and stage_label. Read valid stages from pipeline_stages in the list response or from GET /pipeline-stages. The defaults are sourced, applied, rejected, phone_screening, technical_interview, team_match, offer, denied, employee, offboarding, and alumni. Moving a candidate to employee creates the employee record. To edit profile fields instead, send candidate_id (or ids) and the fields to change.

These routes are scoped to your organization and never appear in public job search. Use a session or a Bearer key with jobs:applications. A jobs:read key is not enough. MCP: list_candidates, get_candidate, update_candidate. SDK and CLI: Libraries.

Areas

| Area | REST prefix | MCP examples |
| --- | --- | --- |
| Candidates | `/candidates`, `/candidate-*` | `list_candidates`, `get_candidate` |
| Employees | `/employees` | `list_employees`, `add_employee` |
| Email and offers | `/email-messages`, `/email/send`, `/email/sends`, `/offers` | `send_email`, `list_sent_emails`, `create_offer` |
| Applications (read) | `/business/jobs/:id/applications` | `list_job_applications`, `get_job_application` |

Applying to catalog jobs is a different API: Apply for jobs. Hosted submit_job_application is covered in Embedded job board. Applying creates an application. The ATS creates a candidate record once the application is linked to your organization.

Candidates (REST)

| Endpoint | Methods | Purpose |
| --- | --- | --- |
| `/field-hints` | GET | Placeholder examples for contact and employment fields |
| `/candidates` | GET, PATCH | List (paginated with `limit`) or update core fields and stage |
| `/candidates/:id` | GET | Full profile, applications, notes, interviews, `field_hints` |
| `/candidates/:id/resume-file` | GET | Download applicant resume file |
| `/candidates/:id/bookmark` | POST, DELETE | Org-wide bookmark |
| `/candidates/:id/alerts` | GET, PATCH | Your pipeline alerts and follow-up reminder |
| `/candidates/:id/generate-about-summary` | POST | Regenerate one-sentence `about_summary` |
| `/candidate-alerts` | GET | All of your candidate alert settings |
| `/candidates/import` | POST | Bulk import candidates |
| `/business/candidates/answers` | POST | Fetch application Q&A for many candidate ids |
| `/job-applications/:id/cover-letter-file` | GET | Download cover letter file for an application |
| `/candidate-notes` | GET, POST, PATCH, DELETE | Notes (`?candidate_id=` on GET) |
| `/candidate-notes/:id` | GET, DELETE | Single note with attachments |
| `/candidate-note-attachments` | POST, DELETE | Upload attachment (base64 or raw bytes) |
| `/candidate-note-attachments/:id` | GET | Download attachment |
| `/candidate-experience` | POST, PATCH, DELETE | Work history CRUD |
| `/candidate-education` | POST, PATCH, DELETE | Education CRUD |
| `/candidate-interviews` | POST, PATCH, DELETE | Interview CRUD |
| `/interview-answers` | POST, PATCH, DELETE | Interview Q&A CRUD |
| `/pipeline-stages` | GET | Pipeline stages for your organization |

List filters: limit, cursor, sort, q, location, stage_key, posted_job_id, bookmarked=true. Lists are paginated. Pass limit and follow cursor.

Download a resume with GET /candidates/:id/resume-file. This is not the People resume unlock.

Employees (REST)

| Endpoint | Methods | Purpose |
| --- | --- | --- |
| `/employees` | GET, POST | List or create employees |
| `/employees/:id` | GET, PATCH, DELETE | Employee detail, update, or remove |
| `/employee-employment-periods` | POST, PATCH, DELETE | Employment stint history |
| `/employee-performance-feedback` | PUT, DELETE | Performance feedback rows |

Email and offers

| Endpoint | Methods | Purpose |
| --- | --- | --- |
| `/email-messages` | GET, POST, PUT, PATCH, DELETE | Stage email templates and settings |
| `/email-messages/preview` | POST | Preview a template before send |
| `/email/send` | POST | Send or schedule ATS email to candidates |
| `/email/sends` | GET | List org sent emails + open stats (ATS + automation) |
| `/usage` | GET | Org usage / audit logs (`organization_logs`; same Destination as Business Usage — `where_label` / `where_href` for Chat, Voice, jobs, Private, …; metered AI + free burns + org activity; filters: `source` incl. `org_activity` / `platform_ai`, `since`, `cursor`, `api_key_id`; `ledger_type`) |
| `/offers` | GET, POST, PATCH, DELETE | Offer list and CRUD |

Template CRUD and preview are free. Each successful send is metered - see Pricing.

Events

Subscribe to candidate.application_submitted, candidate.stage_changed, offer.created, and more in Webhooks.