> ## Documentation Index
> Fetch the complete documentation index at: https://docs.atako.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Workable

> Connect Workable to your Atako agents — 10 read and 3 write actions.

Let your agents work with your Workable ATS — browse jobs, candidates, pipeline stages, members and departments, read a candidate's activity, add candidates to a job, move them through stages and comment on them.

## Connection

* **Authentication**: API key (Access token).
* **Required settings**:
  * **Account subdomain** — yourcompany in yourcompany.workable.com (lowercase, no dots). A wrong subdomain is refused like an invalid token.

<Note>
  As a Workable Admin: click your profile icon in the upper right → Settings → Integrations → Apps → API Access Tokens section → "+ Generate API token". Name it, pick an expiration and select the scopes r\_jobs, r\_candidates and r\_account (add w\_candidates for the write actions: create, move, comment). Copy the token right away — it is shown only once. Your subdomain is the "yourcompany" part of yourcompany.workable.com.

  See [Workable's documentation](https://www.workable.com/backend/account/integrations).
</Note>

## Read actions (10)

| Action | Description |
| - | - |
| `get_candidate` | Fetch one candidate by id (from list\_candidates): profile, stage, job, answers, education and experience. |
| `get_job` | Fetch one job by its shortcode (from list\_jobs). |
| `list_candidate_activities` | List the activity stream of one candidate (comments, ratings, messages, stage moves, disqualifications). id = candidate id (from list\_candidates). Optional: limit (1-100), since\_id / max\_id (activity id cursors), actions (comma-separated list of actions, e.g. "comment,move"), updated\_after (ISO 8601 or Unix time). |
| `list_candidates` | List candidates, optionally for one job. Optional filters: shortcode (job shortcode from list\_jobs), stage (stage slug from list\_stages), email, limit (1-100, default 50), since\_id / max\_id (candidate id cursors), created\_after / updated\_after (ISO 8601 or Unix time). |
| `list_departments` | List the account departments (requires the r\_account scope). |
| `list_job_members` | List the members collaborating on one job (shortcode from list\_jobs). |
| `list_job_stages` | List the pipeline stages of one job (shortcode from list\_jobs). Each stage has a slug usable as target\_stage in move\_candidate. |
| `list_jobs` | List the account jobs (oldest first). Optional: state ("draft", "published", "archived", "closed"), limit (1-100, default 50), since\_id / max\_id (job id cursors), created\_after / updated\_after (ISO 8601 like 20150708T115616Z or Unix time), include\_fields (comma-separated among description, full\_description, requirements, benefits). Each job carries its shortcode, used by the other actions. |
| `list_members` | List the account members (their id is the member\_id of move\_candidate and create\_candidate\_comment). Optional filters: role ("simple", "admin", "reviewer"), shortcode (job shortcode: only its collaborators), email, name (exact full name), status ("active", "inactive", "all"), limit (1-100), since\_id / max\_id. |
| `list_stages` | List the recruitment pipeline stages of the account (slug, name, kind, position). The slug is the value for the stage filter of list\_candidates and target\_stage of move\_candidate. |

## Write actions (3)

| Action | Description |
| - | - |
| `create_candidate` | Create a candidate on one job. Arguments: shortcode (string, job shortcode from list\_jobs, required); firstname, lastname, email (strings, required); name (optional string, full name); headline, summary, address, phone, cover\_letter (optional strings); skills and tags (optional arrays of strings); resume\_url (optional string, public URL of a PDF/DOC/DOCX/RTF resume); stage (optional string, stage slug from list\_job\_stages to create the candidate directly in that stage); sourced (optional boolean — omitted or true = uploaded by the team, no email to the candidate; false = treated as an application, Workable sends the candidate its "thank you for applying" email). Sent as \{ sourced, candidate: \{...} } with stage in the query string. |
| `create_candidate_comment` | Add a comment to a candidate's timeline. Arguments: id (string, candidate id from list\_candidates), member\_id (string, id of the commenting member, from list\_members), body (string, the comment text), policy (optional array of strings among "admin", "recruiting\_admin", "hiring\_manager", "simple", "reviewer", "recruiter" — the roles allowed to see it; admins always see it). Sent as \{ member\_id, comment: \{ body, policy } }. No attachment. |
| `move_candidate` | Move a candidate to another stage of its job. Arguments: id (string, candidate id from list\_candidates), member\_id (string, id of the member performing the move, from list\_members), target\_stage (string, stage slug from list\_job\_stages or list\_stages). Moving to a "hired" stage on an account with Hiring Plan enabled needs a requisition, which this action does not send. |

## Permissions

Every action above must be explicitly granted to an agent before it can be used. See [Permissions](/integrations/permissions) for the grant model and [Security](/integrations/security) for how credentials are protected.

***

*Last reviewed against the provider API: September 2026.*


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.