Pipory
Node reference

Workable

Workable node reference - all 43 operations, the credential it needs, and a worked example.

Workable ATS SPI v3 (Recruiting & Meetings). 43 operations: jobs (list, get, stages, questions, application form, hiring team, recruiters, custom attributes, activities); candidates (list, get, activities, files, offer, create on a job or in the talent pool, update, move, copy, relocate, disqualify, revert, comment, tags, ratings, custom attribute values); account, members, recruiters, pipeline stages, disqualification reasons, departments, legal entities, custom attributes, permission sets and collaboration permissions; events; webhook subscriptions.

Credential: Workable API credential - see Credentials.

Scopes

Each operation below lists the scope it needs. Scopes are fixed on the access token when it is generated, under Settings -> Integrations -> API access tokens. Workable has no incremental consent: the scope set is chosen once at creation, so a call that needs a scope the token does not carry can only be fixed by minting a new token. The API answers both a bad token and a missing scope with the same {"error":"Not authorized"}, which is why naming the scope is the whole of the diagnosis. Two further gates are not scopes at all and read as a 404 rather than a refusal: the Hiring Plan (requisitions) and the separate Workable HR product (employees, time off, time tracking, reviews). If a run fails with a permission error, the node names the missing scope in the error - grant it and re-run; you do not need to rebuild the workflow.

Operations (43)

Jobs

OperationWhat it doesScope
listJobsList jobsr_jobs
getJobGet jobr_jobs
listJobStagesList a job's pipeline stagesr_jobs
listJobQuestionsList a job's application questionsr_jobs
getApplicationFormGet a job's application formr_jobs
listJobMembersList a job's hiring teamr_jobs
listJobRecruitersList a job's external recruitersr_jobs
listJobCustomAttributesList a job's custom attributesr_jobs
listJobActivitiesList a job's activity streamr_candidates

Candidates — read

OperationWhat it doesScope
listCandidatesList candidatesr_candidates
getCandidateGet candidater_candidates
listCandidateActivitiesList a candidate's activity streamr_candidates
listCandidateFilesList a candidate's files(any valid token — Workable documents no required scope for candidate files)
getCandidateOfferGet a candidate's offerr_candidates

Candidates — write

OperationWhat it doesScope
createCandidateCreate candidate on a jobw_candidates
createTalentPoolCandidateCreate candidate in the talent poolw_candidates
updateCandidateUpdate candidatew_candidates
moveCandidateMove candidate to a stagew_candidates
copyCandidateCopy candidate to another jobw_candidates
relocateCandidateRelocate candidate to another jobw_candidates
disqualifyCandidateDisqualify candidatew_candidates
revertDisqualificationRevert a disqualificationw_candidates
addCommentComment on a candidatew_candidates or w_comments
updateTagsReplace a candidate's tagsw_candidates
createRatingRate a candidatew_candidates
updateRatingUpdate a candidate's evaluationw_candidates
updateCustomAttributeValueSet a candidate custom attributer_jobs

Account, members & pipeline

OperationWhat it doesScope
listAccountsList accountsr_jobs
getAccountGet accountr_jobs
listMembersList membersr_jobs (account tokens and user tokens only)
listRecruitersList external recruitersr_jobs (account tokens and user tokens only)
listStagesList account pipeline stagesr_jobs
listDisqualificationReasonsList disqualification reasonsr_jobs
listDepartmentsList departmentsr_account
listLegalEntitiesList legal entitiesr_account
listCustomAttributesList custom attributesr_jobs
listPermissionSetsList permission setsr_account
listCollaborationPermissionsGet collaboration permissionsr_jobs

Events

OperationWhat it doesScope
listEventsList eventsr_jobs (account tokens and user tokens only)
getEventGet eventr_jobs (account tokens and user tokens only)

Webhook subscriptions

OperationWhat it doesScope
listSubscriptionsList webhook subscriptionsr_candidates or r_employees
createSubscriptionCreate webhook subscriptionr_candidates or r_employees
deleteSubscriptionDelete webhook subscriptionr_candidates or r_employees

Example

Move a candidate to the next stage

The action an ATS integration exists to perform. Stage names are per-account, not a fixed enum — read them with listJobStages for the job in question rather than hardcoding a string that will not match another account's pipeline.

Set Operation to moveCandidate, then fill in:

FieldValueNotes
candidateId{{ myTrigger.candidateId }}The candidate to move
stage{{ stages.[1].slug }}The target stage's slug, from listJobStages — stage names are per-account

Sets {{moved.candidateId}} and {{moved.stage}}.