Workable

App · Jobs & Hiring · 20 actions

Manage hiring on Workable: job postings, candidates, pipeline stages, notes and ratings.

Actions

ActionWhat it does
Comment on a candidateAdd a note to a candidate's timeline.
Create a candidateAdd a candidate to a job on Workable.
Disqualify a candidateReject a candidate, optionally recording why.
Get a candidateGet one candidate's full profile.
Get a jobGet the full details of one job posting.
Get job application formGet the application form for a job, which fields it asks for and which are required.
List candidate activityList a candidate's activity timeline: stage moves, notes and ratings.
List candidatesList candidates, optionally narrowed to one job, one pipeline stage or one email address.
List departmentsList the departments configured on your Workable account.
List job hiring teamList the team members assigned to a job.
List job questionsList the application questions asked on a job.
List jobsList the job postings on your Workable account.
List pipeline stagesList the recruiting pipeline stages on the account, with the slug each one is addressed by when moving a candidate.
List rejection reasonsList the rejection reasons configured on the account, with the id each one is addressed by when disqualifying a candidate.
List team membersList the members of your Workable account.
Move a candidate to a stageMove a candidate to a different stage of the pipeline.
Rate a candidateLeave a 1-5 rating, with an optional comment.
Revert a disqualificationPut a disqualified candidate back into the pipeline.
Set candidate tagsSet the tags on a candidate.
Update a candidateChange a candidate's profile details.

Comment on a candidate

Add a note to a candidate's timeline.

Inputs

Candidatecandidate_idtextRequired
The id of the candidate. Use 'List candidates' to find one -- the id also appears in the candidate's Workable web address.
Acting team membermember_idtextRequired
The Workable team member this is recorded as being done by. Workable requires one on every candidate action that appears in the timeline.
NotebodytextRequired
The text of the note.
Visible topolicylist
Limit the note to these roles. Leave blank to use the account's default visibility.One or more of: admin, recruiting_admin (Recruiting admin), hiring_manager (Hiring manager), simple, reviewer, recruiter.

Outputs

candidate_idtext
The candidate the note was added to.
commentedtrue/false
True when Workable accepted the note.
policylist
The roles the note was limited to, if any.
statustext
Status of the action execution ("success" on success).
Example output
{
  "candidate_id": "3fc9a80f",
  "commented": true,
  "policy": [],
  "status": "success"
}

Create a candidate

Add a candidate to a job on Workable.

Inputs

Job codeshortcodetextRequired
The job's shortcode -- the short code at the end of its Workable web address. Use 'List jobs' to find one.
Full namenametextRequired
The candidate's full name.
EmailemailtextRequired
The candidate's email address.
Headlineheadlinetext
A one-line summary, such as their current title.
Summarysummarytext
A longer summary of the candidate.
Phonephonetext
The candidate's phone number.
Addressaddresstext
The candidate's address.
Cover lettercover_lettertext
The candidate's cover letter.
Resume URLresume_urltext
A link to the candidate's resume.
Skillsskillslist
The candidate's skills.
Sourced by ussourcedtrue/false
On (the default) files them as sourced by your team. Off files them as having applied themselves, which places them in a different pipeline stage.Default: true.

Outputs

candidateobject
The candidate that was created.
candidate_idtext
The new candidate's id.
statustext
Status of the action execution ("success" on success).
Example output
{
  "candidate": {
    "email": "jordan@example.com",
    "id": "3fc9a80f",
    "name": "Jordan Vale",
    "stage": "Sourced"
  },
  "candidate_id": "3fc9a80f",
  "status": "success"
}

Disqualify a candidate

Reject a candidate, optionally recording why. This can be undone with 'Revert a disqualification'.

Inputs

Candidatecandidate_idtextRequired
The id of the candidate. Use 'List candidates' to find one -- the id also appears in the candidate's Workable web address.
Acting team membermember_idtextRequired
The Workable team member this is recorded as being done by. Workable requires one on every candidate action that appears in the timeline.
Reasondisqualification_reason_idtext
The rejection reason to record. Leave blank to disqualify without one.

Outputs

candidate_idtext
The candidate that was disqualified.
disqualifiedtrue/false
True when Workable accepted the disqualification.
statustext
Status of the action execution ("success" on success).
Example output
{
  "candidate_id": "3fc9a80f",
  "disqualified": true,
  "status": "success"
}

Get a candidate

Get one candidate's full profile.

Inputs

Candidatecandidate_idtextRequired
The id of the candidate. Use 'List candidates' to find one -- the id also appears in the candidate's Workable web address.

Outputs

candidateobject
The candidate's profile.
statustext
Status of the action execution ("success" on success).
Example output
{
  "candidate": {
    "email": "jordan@example.com",
    "id": "3fc9a80f",
    "name": "Jordan Vale",
    "stage": "Applied",
    "tags": [
      "referral"
    ]
  },
  "status": "success"
}

Get a job

Get the full details of one job posting.

Inputs

Job codeshortcodetextRequired
The job's shortcode -- the short code at the end of its Workable web address. Use 'List jobs' to find one.

Outputs

jobobject
The job posting.
statustext
Status of the action execution ("success" on success).
Example output
{
  "job": {
    "id": "1F8C9A",
    "shortcode": "A1B2C3D4E5",
    "state": "published",
    "title": "Product Designer"
  },
  "status": "success"
}

Get job application form

Get the application form for a job, which fields it asks for and which are required.

Inputs

Job codeshortcodetextRequired
The job's shortcode -- the short code at the end of its Workable web address. Use 'List jobs' to find one.

Outputs

application_formobject
The job's application form configuration.
statustext
Status of the action execution ("success" on success).
Example output
{
  "application_form": {
    "form_fields": [
      {
        "key": "phone",
        "label": "Phone",
        "required": "true"
      }
    ],
    "questions": []
  },
  "status": "success"
}

List candidate activity

List a candidate's activity timeline: stage moves, notes and ratings.

Inputs

Candidatecandidate_idtextRequired
The id of the candidate. Use 'List candidates' to find one -- the id also appears in the candidate's Workable web address.
Updated afterupdated_afterdate
Only return activity on or after this date.
Maximum resultslimitnumber
How many results to return per page (1-100). Defaults to 50.From 1 to 100.

Outputs

activitieslist
The candidate's activity, newest first.
countnumber
How many activities were returned.
pagingobject
Cursor for the next page, when there is one.
statustext
Status of the action execution ("success" on success).
Example output
{
  "activities": [
    {
      "action": "comment",
      "body": "Strong portfolio.",
      "created_at": "2026-01-14T10:22:05Z",
      "id": "aa11bb"
    }
  ],
  "count": 1,
  "paging": {},
  "status": "success"
}

List candidates

List candidates, optionally narrowed to one job, one pipeline stage or one email address.

Inputs

Job codeshortcodetext
Only return candidates on this job. Leave blank for candidates across every job.
Stagestagetext
Only return candidates currently in this stage.
Emailemailtext
Only return candidates with this email address.
Created aftercreated_afterdate
Only return candidates created on or after this date.
Updated afterupdated_afterdate
Only return candidates updated on or after this date.
Maximum resultslimitnumber
How many results to return per page (1-100). Defaults to 50.From 1 to 100.

Outputs

candidateslist
The candidates that matched.
countnumber
How many candidates were returned.
pagingobject
Cursor for the next page, when there is one.
statustext
Status of the action execution ("success" on success).
Example output
{
  "candidates": [
    {
      "email": "jordan@example.com",
      "id": "3fc9a80f",
      "name": "Jordan Vale",
      "stage": "Applied"
    }
  ],
  "count": 1,
  "paging": {},
  "status": "success"
}

List departments

List the departments configured on your Workable account.

Inputs

None.

Outputs

countnumber
How many departments were returned.
departmentslist
The account's departments.
statustext
Status of the action execution ("success" on success).
Example output
{
  "count": 1,
  "departments": [
    {
      "id": "3f0c1e",
      "name": "Design",
      "parent_id": null
    }
  ],
  "status": "success"
}

List job hiring team

List the team members assigned to a job.

Inputs

Job codeshortcodetextRequired
The job's shortcode -- the short code at the end of its Workable web address. Use 'List jobs' to find one.

Outputs

countnumber
How many members were returned.
memberslist
The job's hiring team.
statustext
Status of the action execution ("success" on success).
Example output
{
  "count": 1,
  "members": [
    {
      "email": "dana@example.com",
      "id": "13e0eb0e",
      "name": "Dana Reeve",
      "role": "admin"
    }
  ],
  "status": "success"
}

List job questions

List the application questions asked on a job.

Inputs

Job codeshortcodetextRequired
The job's shortcode -- the short code at the end of its Workable web address. Use 'List jobs' to find one.

Outputs

countnumber
How many questions were returned.
questionslist
The job's application questions.
statustext
Status of the action execution ("success" on success).
Example output
{
  "count": 1,
  "questions": [
    {
      "body": "Why do you want this role?",
      "id": "9A8B7C",
      "required": true,
      "type": "free_text"
    }
  ],
  "status": "success"
}

List jobs

List the job postings on your Workable account.

Inputs

Statusstatetext
Only return jobs in this state. Leave blank for all.One of: draft, published, archived, closed.
Include extra fieldsinclude_fieldslist
Long-form fields to include with each job. These are omitted by default because they are large.One or more of: description, full_description (Full description), requirements, benefits.
Created aftercreated_afterdate
Only return jobs created on or after this date.
Updated afterupdated_afterdate
Only return jobs updated on or after this date.
Maximum resultslimitnumber
How many results to return per page (1-100). Defaults to 50.From 1 to 100.

Outputs

countnumber
How many jobs were returned.
jobslist
The jobs that matched.
pagingobject
Cursor for the next page, when there is one.
statustext
Status of the action execution ("success" on success).
Example output
{
  "count": 1,
  "jobs": [
    {
      "department": "Design",
      "id": "1F8C9A",
      "shortcode": "A1B2C3D4E5",
      "state": "published",
      "title": "Product Designer"
    }
  ],
  "paging": {},
  "status": "success"
}

List pipeline stages

List the recruiting pipeline stages on the account, with the slug each one is addressed by when moving a candidate.

Inputs

None.

Outputs

countnumber
How many stages were returned.
stageslist
The account's pipeline stages, in order.
statustext
Status of the action execution ("success" on success).
Example output
{
  "count": 1,
  "stages": [
    {
      "kind": "sourced",
      "name": "Sourced",
      "position": 0,
      "slug": "sourced"
    }
  ],
  "status": "success"
}

List rejection reasons

List the rejection reasons configured on the account, with the id each one is addressed by when disqualifying a candidate.

Inputs

None.

Outputs

countnumber
How many reasons were returned.
disqualification_reasonslist
The account's configured rejection reasons.
statustext
Status of the action execution ("success" on success).
Example output
{
  "count": 1,
  "disqualification_reasons": [
    {
      "candidate_withdrew": false,
      "description": "Not enough experience",
      "id": "7c2a11",
      "position": 0
    }
  ],
  "status": "success"
}

List team members

List the members of your Workable account.

Inputs

Roleroletext
Only return members with this recruiting role.One of: simple, admin, reviewer.
Statusstatustext
Only return members with this status.One of: active, inactive, all.
Emailemailtext
Only return the member with this email address.
Maximum resultslimitnumber
How many results to return per page (1-100). Defaults to 50.From 1 to 100.

Outputs

countnumber
How many members were returned.
memberslist
The members that matched.
pagingobject
Cursor for the next page, when there is one.
statustext
Status of the action execution ("success" on success).
Example output
{
  "count": 1,
  "members": [
    {
      "active": true,
      "email": "dana@example.com",
      "id": "13e0eb0e",
      "name": "Dana Reeve"
    }
  ],
  "paging": {},
  "status": "success"
}

Move a candidate to a stage

Move a candidate to a different stage of the pipeline.

Inputs

Candidatecandidate_idtextRequired
The id of the candidate. Use 'List candidates' to find one -- the id also appears in the candidate's Workable web address.
Acting team membermember_idtextRequired
The Workable team member this is recorded as being done by. Workable requires one on every candidate action that appears in the timeline.
Move to stagetarget_stagetextRequired
The pipeline stage to move the candidate into.

Outputs

candidate_idtext
The candidate that was moved.
movedtrue/false
True when Workable accepted the move.
stagetext
The stage the candidate is now in.
statustext
Status of the action execution ("success" on success).
Example output
{
  "candidate_id": "3fc9a80f",
  "moved": true,
  "stage": "interview",
  "status": "success"
}

Rate a candidate

Leave a 1-5 rating, with an optional comment.

Inputs

Candidatecandidate_idtextRequired
The id of the candidate. Use 'List candidates' to find one -- the id also appears in the candidate's Workable web address.
Acting team membermember_idtextRequired
The Workable team member this is recorded as being done by. Workable requires one on every candidate action that appears in the timeline.
RatinggradenumberRequired
The rating to leave, from 1 (worst) to 5 (best).From 1 to 5.
Commentcommenttext
An optional comment to leave with the rating.

Outputs

candidate_idtext
The candidate that was rated.
gradenumber
The rating that was left.
ratedtrue/false
True when Workable accepted the rating.
statustext
Status of the action execution ("success" on success).
Example output
{
  "candidate_id": "3fc9a80f",
  "grade": 4,
  "rated": true,
  "status": "success"
}

Revert a disqualification

Put a disqualified candidate back into the pipeline.

Inputs

Candidatecandidate_idtextRequired
The id of the candidate. Use 'List candidates' to find one -- the id also appears in the candidate's Workable web address.
Acting team membermember_idtextRequired
The Workable team member this is recorded as being done by. Workable requires one on every candidate action that appears in the timeline.

Outputs

candidate_idtext
The candidate that was reinstated.
revertedtrue/false
True when Workable accepted the reversal.
statustext
Status of the action execution ("success" on success).
Example output
{
  "candidate_id": "3fc9a80f",
  "reverted": true,
  "status": "success"
}

Set candidate tags

Set the tags on a candidate. This replaces their existing tags: any tag you leave out is removed, and an empty list clears them all.

Inputs

Candidatecandidate_idtextRequired
The id of the candidate. Use 'List candidates' to find one -- the id also appears in the candidate's Workable web address.
Tagstagslist
The complete set of tags the candidate should end up with. To add one, include the existing tags too.

Outputs

candidate_idtext
The candidate whose tags were set.
statustext
Status of the action execution ("success" on success).
tagslist
The tags the candidate now has.
Example output
{
  "candidate_id": "3fc9a80f",
  "status": "success",
  "tags": [
    "referral",
    "design"
  ]
}

Update a candidate

Change a candidate's profile details. Only the fields you fill in are changed.

Inputs

Candidatecandidate_idtextRequired
The id of the candidate. Use 'List candidates' to find one -- the id also appears in the candidate's Workable web address.
First namefirstnametext
The candidate's first name.
Last namelastnametext
The candidate's last name.
Emailemailtext
The candidate's email address.
Headlineheadlinetext
A one-line summary, such as their current title.
Summarysummarytext
A longer summary of the candidate.
Phonephonetext
The candidate's phone number.
Addressaddresstext
The candidate's address.
Cover lettercover_lettertext
The candidate's cover letter.

Outputs

candidateobject
The candidate after the update.
statustext
Status of the action execution ("success" on success).
updated_fieldslist
The names of the fields that were changed.
Example output
{
  "candidate": {
    "headline": "Senior Product Designer",
    "id": "3fc9a80f",
    "name": "Jordan Vale"
  },
  "status": "success",
  "updated_fields": [
    "headline"
  ]
}

On this page