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.