Use Ashby to manage recruiting records and react to hiring events. List Jobs supports incremental sync tokens; custom-field actions annotate jobs, openings, applications, and candidates.
The Ashby block also supports webhook triggers that automatically start workflows in response to Ashby events. Available triggers include Application Submitted, Candidate Stage Change, Candidate Hired, Candidate Deleted, Job Created, and Offer Created. Webhooks are fully managed — Sim automatically creates the webhook in Ashby when you save the trigger and deletes it when you remove it, so there's no manual webhook configuration needed. Just provide your Ashby API key (with apiKeysWrite permission) and select the event type.
Ashby grants permissions per module rather than per endpoint, and a missing permission fails at runtime, not when you build the workflow.
A key without the right scope returns a 403 in the middle of a run, so check the key before scheduling anything against it.
| Permission | Covers |
|---|
jobsRead | List Jobs, Get Job, List Job Postings, Get Job Posting |
candidatesRead | Application and candidate reads |
candidatesWrite | Create Candidate, Create Application, Set Custom Field Value, Set Custom Field Values, Change Application Source, Anonymize Candidate |
candidatesDelete | Delete Application. This is separate from candidatesWrite - a read and write key returns 403 here |
apiKeysWrite | Managed webhook triggers |
candidatesDelete is a module permission, not an endpoint one, and Delete Application sits under the Candidates module.
Two more settings on the API key are checkboxes rather than module scopes, and both are easy to miss:
- Allow access to confidential jobs and projects. Without it, confidential reqs and the candidates on them are invisible to the key entirely - they do not appear in List Jobs at all, rather than appearing with fields hidden.
- Allow access to non-offer private fields. This gates custom fields marked private outside of offers.
Every job returned by List Jobs carries a confidential flag, so you can filter confidential reqs out at sync time before they reach a prompt or a downstream surface.
These are constraints of the Ashby API itself, not of the Sim block:
- No notes or tags on a job or req. Both are candidate-scoped in Ashby. Custom field values are the only way to annotate a job, which is what Set Custom Field Value is for. Writing
null clears a value, so the annotation is reversible.
- No pagination on List Job Postings. The endpoint returns every posting in one response, with no cursor, page limit, or sync token. Paginate through List Jobs instead when you need to page.
- No way to delete, archive, or update a custom field definition. Creating one is irreversible, so never create throwaway field definitions against a shared organization.
- No note deletion endpoint. Notes can be created and listed but never removed.
- No candidate deletion endpoint. Anonymize Candidate strips personal information but leaves the record and its applications in place. Real deletion is available only in the Ashby UI, is limited to a 10-day window, and is restricted to certain roles.
Integrate Ashby into the workflow. Manage and search candidates, applications, jobs, users, and openings; transfer applications; upload resumes and candidate files; read application history and interview feedback; manage offers, notes, tags, stages, sources, and custom fields; and react to hiring lifecycle webhooks.
Adds a tag to a candidate in Ashby and returns the updated candidate.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
onBehalfOfUserId | string | No | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls |
candidateId | string | Yes | The UUID of the candidate to add the tag to |
tagId | string | Yes | The UUID of the tag to add |
| Parameter | Type | Description |
|---|
candidates | json | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses[], phoneNumbers[], socialLinks[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents[], tags[], applicationIds[], customFields[], resumeFileHandle, fileHandles[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
jobs | json | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds[], customFields[], jobPostingIds[], customRequisitionId, brandId, hiringTeam[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings[] with latestVersion) |
applications | json | List of applications (id, status, customFields[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields[], archivedAt, job summary, creditedToUser, hiringTeam[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt) |
notes | json | List of notes (id, content, author, isPrivate, createdAt) |
offers | json | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields[]/fileHandles[]/author/approvalStatus) |
archiveReasons | json | List of archive reasons (id, text, reasonType [RejectedByCandidate/RejectedByOrg/Other], isArchived) |
sources | json | List of sources (id, title, isArchived, sourceType {id, title, isArchived}) |
customFields | json | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues[] {label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) |
customField | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) |
departments | json | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt) |
locations | json | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress) |
jobPostings | json | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt) |
openings | json | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds[]/hiringTeam[]/customFields[]) |
users | json | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt) |
interviewSchedules | json | List of interview schedules (id, applicationId, interviewStageId, interviewEvents[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt) |
interviewPlans | json | Interview plans (id, title, isArchived, createdAt, updatedAt) |
interviewStages | json | Ordered interview stages for a plan |
feedback | json | Submitted application feedback with form definitions and values |
history | json | Application stage history and allowed actions |
tags | json | List of candidate tags (id, title, isArchived) |
id | string | Resource UUID |
name | string | Resource name |
title | string | Job title or job posting title |
status | string | Status |
candidate | json | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations. |
job | json | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam[], author, location, openings[], createdAt, updatedAt) |
application | json | Application details (id, status, customFields[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam[], createdAt, updatedAt) |
offer | json | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion) |
jobPosting | json | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job [included when expandJob=true]) |
content | string | Note content |
author | json | Note author (id, firstName, lastName, email) |
isPrivate | boolean | Whether the note is private |
createdAt | string | ISO 8601 creation timestamp |
applicationId | string | UUID of the deleted application |
moreDataAvailable | boolean | Whether more pages exist |
nextCursor | string | Pagination cursor for next page |
nextSyncCursor | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output |
Strips personally identifiable information from a candidate in Ashby. This does not delete the candidate - the record and its applications remain, with the PII removed. Ashby exposes no candidate deletion endpoint; true deletion is UI-only, restricted by role, and limited to a 10-day window. Requires the candidatesWrite permission.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
onBehalfOfUserId | string | No | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls |
candidateId | string | Yes | UUID of the candidate to anonymize |
| Parameter | Type | Description |
|---|
candidates | json | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses[], phoneNumbers[], socialLinks[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents[], tags[], applicationIds[], customFields[], resumeFileHandle, fileHandles[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
jobs | json | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds[], customFields[], jobPostingIds[], customRequisitionId, brandId, hiringTeam[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings[] with latestVersion) |
applications | json | List of applications (id, status, customFields[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields[], archivedAt, job summary, creditedToUser, hiringTeam[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt) |
notes | json | List of notes (id, content, author, isPrivate, createdAt) |
offers | json | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields[]/fileHandles[]/author/approvalStatus) |
archiveReasons | json | List of archive reasons (id, text, reasonType [RejectedByCandidate/RejectedByOrg/Other], isArchived) |
sources | json | List of sources (id, title, isArchived, sourceType {id, title, isArchived}) |
customFields | json | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues[] {label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) |
customField | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) |
departments | json | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt) |
locations | json | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress) |
jobPostings | json | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt) |
openings | json | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds[]/hiringTeam[]/customFields[]) |
users | json | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt) |
interviewSchedules | json | List of interview schedules (id, applicationId, interviewStageId, interviewEvents[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt) |
interviewPlans | json | Interview plans (id, title, isArchived, createdAt, updatedAt) |
interviewStages | json | Ordered interview stages for a plan |
feedback | json | Submitted application feedback with form definitions and values |
history | json | Application stage history and allowed actions |
tags | json | List of candidate tags (id, title, isArchived) |
id | string | Resource UUID |
name | string | Resource name |
title | string | Job title or job posting title |
status | string | Status |
candidate | json | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations. |
job | json | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam[], author, location, openings[], createdAt, updatedAt) |
application | json | Application details (id, status, customFields[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam[], createdAt, updatedAt) |
offer | json | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion) |
jobPosting | json | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job [included when expandJob=true]) |
content | string | Note content |
author | json | Note author (id, firstName, lastName, email) |
isPrivate | boolean | Whether the note is private |
createdAt | string | ISO 8601 creation timestamp |
applicationId | string | UUID of the deleted application |
moreDataAvailable | boolean | Whether more pages exist |
nextCursor | string | Pagination cursor for next page |
nextSyncCursor | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output |
Changes the source attributed to an existing application, so programmatically created applications report correctly on the recruiting side. Requires the candidatesWrite permission.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
onBehalfOfUserId | string | No | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls |
applicationId | string | Yes | UUID of the application whose source should change |
sourceId | string | No | UUID of the source to attribute the application to, as returned by List Sources. Omit only when unsetSource is true. |
unsetSource | boolean | No | Set true to deliberately clear the application source. Required to unset, so that a missing or empty sourceId cannot wipe attribution by accident. |
| Parameter | Type | Description |
|---|
candidates | json | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses[], phoneNumbers[], socialLinks[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents[], tags[], applicationIds[], customFields[], resumeFileHandle, fileHandles[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
jobs | json | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds[], customFields[], jobPostingIds[], customRequisitionId, brandId, hiringTeam[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings[] with latestVersion) |
applications | json | List of applications (id, status, customFields[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields[], archivedAt, job summary, creditedToUser, hiringTeam[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt) |
notes | json | List of notes (id, content, author, isPrivate, createdAt) |
offers | json | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields[]/fileHandles[]/author/approvalStatus) |
archiveReasons | json | List of archive reasons (id, text, reasonType [RejectedByCandidate/RejectedByOrg/Other], isArchived) |
sources | json | List of sources (id, title, isArchived, sourceType {id, title, isArchived}) |
customFields | json | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues[] {label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) |
customField | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) |
departments | json | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt) |
locations | json | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress) |
jobPostings | json | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt) |
openings | json | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds[]/hiringTeam[]/customFields[]) |
users | json | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt) |
interviewSchedules | json | List of interview schedules (id, applicationId, interviewStageId, interviewEvents[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt) |
interviewPlans | json | Interview plans (id, title, isArchived, createdAt, updatedAt) |
interviewStages | json | Ordered interview stages for a plan |
feedback | json | Submitted application feedback with form definitions and values |
history | json | Application stage history and allowed actions |
tags | json | List of candidate tags (id, title, isArchived) |
id | string | Resource UUID |
name | string | Resource name |
title | string | Job title or job posting title |
status | string | Status |
candidate | json | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations. |
job | json | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam[], author, location, openings[], createdAt, updatedAt) |
application | json | Application details (id, status, customFields[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam[], createdAt, updatedAt) |
offer | json | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion) |
jobPosting | json | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job [included when expandJob=true]) |
content | string | Note content |
author | json | Note author (id, firstName, lastName, email) |
isPrivate | boolean | Whether the note is private |
createdAt | string | ISO 8601 creation timestamp |
applicationId | string | UUID of the deleted application |
moreDataAvailable | boolean | Whether more pages exist |
nextCursor | string | Pagination cursor for next page |
nextSyncCursor | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output |
Moves an application to a different interview stage. Requires an archive reason when moving to an Archived stage.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
onBehalfOfUserId | string | No | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls |
applicationId | string | Yes | The UUID of the application to update the stage of |
interviewStageId | string | Yes | The UUID of the interview stage to move the application to |
archiveReasonId | string | No | Archive reason UUID. Required when moving to an Archived stage, ignored otherwise |
archiveEmail | json | No | Archive email configuration with communicationTemplateId and optional sendAt ISO 8601 timestamp. Pass null or omit to send no archive email. |
| Parameter | Type | Description |
|---|
candidates | json | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses[], phoneNumbers[], socialLinks[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents[], tags[], applicationIds[], customFields[], resumeFileHandle, fileHandles[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
jobs | json | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds[], customFields[], jobPostingIds[], customRequisitionId, brandId, hiringTeam[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings[] with latestVersion) |
applications | json | List of applications (id, status, customFields[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields[], archivedAt, job summary, creditedToUser, hiringTeam[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt) |
notes | json | List of notes (id, content, author, isPrivate, createdAt) |
offers | json | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields[]/fileHandles[]/author/approvalStatus) |
archiveReasons | json | List of archive reasons (id, text, reasonType [RejectedByCandidate/RejectedByOrg/Other], isArchived) |
sources | json | List of sources (id, title, isArchived, sourceType {id, title, isArchived}) |
customFields | json | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues[] {label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) |
customField | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) |
departments | json | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt) |
locations | json | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress) |
jobPostings | json | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt) |
openings | json | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds[]/hiringTeam[]/customFields[]) |
users | json | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt) |
interviewSchedules | json | List of interview schedules (id, applicationId, interviewStageId, interviewEvents[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt) |
interviewPlans | json | Interview plans (id, title, isArchived, createdAt, updatedAt) |
interviewStages | json | Ordered interview stages for a plan |
feedback | json | Submitted application feedback with form definitions and values |
history | json | Application stage history and allowed actions |
tags | json | List of candidate tags (id, title, isArchived) |
id | string | Resource UUID |
name | string | Resource name |
title | string | Job title or job posting title |
status | string | Status |
candidate | json | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations. |
job | json | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam[], author, location, openings[], createdAt, updatedAt) |
application | json | Application details (id, status, customFields[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam[], createdAt, updatedAt) |
offer | json | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion) |
jobPosting | json | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job [included when expandJob=true]) |
content | string | Note content |
author | json | Note author (id, firstName, lastName, email) |
isPrivate | boolean | Whether the note is private |
createdAt | string | ISO 8601 creation timestamp |
applicationId | string | UUID of the deleted application |
moreDataAvailable | boolean | Whether more pages exist |
nextCursor | string | Pagination cursor for next page |
nextSyncCursor | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output |
Creates a new application for a candidate on a job. Optionally specify interview plan, stage, source, and credited user.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
onBehalfOfUserId | string | No | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls |
candidateId | string | Yes | The UUID of the candidate to consider for the job |
jobId | string | Yes | The UUID of the job to consider the candidate for |
interviewPlanId | string | No | UUID of the interview plan to use (defaults to the job default plan) |
interviewStageId | string | No | UUID of the interview stage to place the application in, or FirstPreInterviewScreen (defaults to the first Lead stage) |
sourceId | string | No | UUID of the source to set on the application |
creditedToUserId | string | No | UUID of the user the application is credited to |
createdAt | string | No | ISO 8601 timestamp to set as the application creation date (defaults to now) |
applicationHistory | json | No | Optional documented application history entries to create with the application |
| Parameter | Type | Description |
|---|
candidates | json | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses[], phoneNumbers[], socialLinks[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents[], tags[], applicationIds[], customFields[], resumeFileHandle, fileHandles[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
jobs | json | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds[], customFields[], jobPostingIds[], customRequisitionId, brandId, hiringTeam[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings[] with latestVersion) |
applications | json | List of applications (id, status, customFields[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields[], archivedAt, job summary, creditedToUser, hiringTeam[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt) |
notes | json | List of notes (id, content, author, isPrivate, createdAt) |
offers | json | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields[]/fileHandles[]/author/approvalStatus) |
archiveReasons | json | List of archive reasons (id, text, reasonType [RejectedByCandidate/RejectedByOrg/Other], isArchived) |
sources | json | List of sources (id, title, isArchived, sourceType {id, title, isArchived}) |
customFields | json | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues[] {label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) |
customField | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) |
departments | json | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt) |
locations | json | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress) |
jobPostings | json | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt) |
openings | json | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds[]/hiringTeam[]/customFields[]) |
users | json | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt) |
interviewSchedules | json | List of interview schedules (id, applicationId, interviewStageId, interviewEvents[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt) |
interviewPlans | json | Interview plans (id, title, isArchived, createdAt, updatedAt) |
interviewStages | json | Ordered interview stages for a plan |
feedback | json | Submitted application feedback with form definitions and values |
history | json | Application stage history and allowed actions |
tags | json | List of candidate tags (id, title, isArchived) |
id | string | Resource UUID |
name | string | Resource name |
title | string | Job title or job posting title |
status | string | Status |
candidate | json | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations. |
job | json | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam[], author, location, openings[], createdAt, updatedAt) |
application | json | Application details (id, status, customFields[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam[], createdAt, updatedAt) |
offer | json | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion) |
jobPosting | json | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job [included when expandJob=true]) |
content | string | Note content |
author | json | Note author (id, firstName, lastName, email) |
isPrivate | boolean | Whether the note is private |
createdAt | string | ISO 8601 creation timestamp |
applicationId | string | UUID of the deleted application |
moreDataAvailable | boolean | Whether more pages exist |
nextCursor | string | Pagination cursor for next page |
nextSyncCursor | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output |
Creates a new candidate record in Ashby.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
onBehalfOfUserId | string | No | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls |
name | string | Yes | The candidate full name |
email | string | No | Primary email address for the candidate |
phoneNumber | string | No | Primary phone number for the candidate |
linkedInUrl | string | No | LinkedIn profile URL |
githubUrl | string | No | GitHub profile URL |
website | string | No | Personal website URL |
sourceId | string | No | UUID of the source to attribute the candidate to |
creditedToUserId | string | No | UUID of the Ashby user to credit with sourcing this candidate |
createdAt | string | No | Backdated creation timestamp in ISO 8601 (e.g. 2024-01-01T00:00:00Z). Defaults to now. |
alternateEmailAddresses | json | No | Array of additional email address strings to add to the candidate, e.g. ["a@x.com","b@y.com"] |
location | json | No | Candidate location object with optional city, region, and country |
| Parameter | Type | Description |
|---|
candidates | json | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses[], phoneNumbers[], socialLinks[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents[], tags[], applicationIds[], customFields[], resumeFileHandle, fileHandles[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
jobs | json | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds[], customFields[], jobPostingIds[], customRequisitionId, brandId, hiringTeam[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings[] with latestVersion) |
applications | json | List of applications (id, status, customFields[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields[], archivedAt, job summary, creditedToUser, hiringTeam[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt) |
notes | json | List of notes (id, content, author, isPrivate, createdAt) |
offers | json | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields[]/fileHandles[]/author/approvalStatus) |
archiveReasons | json | List of archive reasons (id, text, reasonType [RejectedByCandidate/RejectedByOrg/Other], isArchived) |
sources | json | List of sources (id, title, isArchived, sourceType {id, title, isArchived}) |
customFields | json | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues[] {label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) |
customField | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) |
departments | json | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt) |
locations | json | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress) |
jobPostings | json | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt) |
openings | json | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds[]/hiringTeam[]/customFields[]) |
users | json | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt) |
interviewSchedules | json | List of interview schedules (id, applicationId, interviewStageId, interviewEvents[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt) |
interviewPlans | json | Interview plans (id, title, isArchived, createdAt, updatedAt) |
interviewStages | json | Ordered interview stages for a plan |
feedback | json | Submitted application feedback with form definitions and values |
history | json | Application stage history and allowed actions |
tags | json | List of candidate tags (id, title, isArchived) |
id | string | Resource UUID |
name | string | Resource name |
title | string | Job title or job posting title |
status | string | Status |
candidate | json | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations. |
job | json | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam[], author, location, openings[], createdAt, updatedAt) |
application | json | Application details (id, status, customFields[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam[], createdAt, updatedAt) |
offer | json | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion) |
jobPosting | json | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job [included when expandJob=true]) |
content | string | Note content |
author | json | Note author (id, firstName, lastName, email) |
isPrivate | boolean | Whether the note is private |
createdAt | string | ISO 8601 creation timestamp |
applicationId | string | UUID of the deleted application |
moreDataAvailable | boolean | Whether more pages exist |
nextCursor | string | Pagination cursor for next page |
nextSyncCursor | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output |
Creates a note on a candidate in Ashby. Supports plain text and HTML content (bold, italic, underline, links, lists, code).
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
onBehalfOfUserId | string | No | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls |
candidateId | string | Yes | The UUID of the candidate to add the note to |
note | string | Yes | The note content. If noteType is text/html, supports: <b>, <i>, <u>, <a>, <ul>, <ol>, <li>, <code>, <pre> |
noteType | string | No | Content type of the note: text/plain (default) or text/html |
sendNotifications | boolean | No | Whether to send notifications to subscribed users (default false) |
isPrivate | boolean | No | Whether the note is private (only visible to the author) |
createdAt | string | No | Backdated creation timestamp in ISO 8601 (e.g. 2024-01-01T00:00:00Z). Defaults to now. |
| Parameter | Type | Description |
|---|
id | string | Created note UUID |
createdAt | string | ISO 8601 creation timestamp |
isPrivate | boolean | Whether the note is private |
content | string | Note content |
author | object | Author of the note |
↳ id | string | Author user UUID |
↳ firstName | string | Author first name |
↳ lastName | string | Author last name |
↳ email | string | Author email |
Permanently deletes an application in Ashby. Requires the candidatesDelete permission, which is a separate module permission from candidatesWrite - a read and write key returns 403 here. There is no equivalent endpoint for deleting a candidate; candidate deletion is UI-only.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
onBehalfOfUserId | string | No | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls |
applicationId | string | Yes | UUID of the application to delete |
| Parameter | Type | Description |
|---|
applicationId | string | UUID of the deleted application |
Retrieves full details about a single application by its ID.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
applicationId | string | No | The UUID of the application to fetch |
submittedFormInstanceId | string | No | Submitted application-form instance UUID to use instead of applicationId |
expand | json | No | Ashby-supported application expansions to include |
| Parameter | Type | Description |
|---|
candidates | json | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses[], phoneNumbers[], socialLinks[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents[], tags[], applicationIds[], customFields[], resumeFileHandle, fileHandles[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
jobs | json | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds[], customFields[], jobPostingIds[], customRequisitionId, brandId, hiringTeam[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings[] with latestVersion) |
applications | json | List of applications (id, status, customFields[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields[], archivedAt, job summary, creditedToUser, hiringTeam[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt) |
notes | json | List of notes (id, content, author, isPrivate, createdAt) |
offers | json | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields[]/fileHandles[]/author/approvalStatus) |
archiveReasons | json | List of archive reasons (id, text, reasonType [RejectedByCandidate/RejectedByOrg/Other], isArchived) |
sources | json | List of sources (id, title, isArchived, sourceType {id, title, isArchived}) |
customFields | json | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues[] {label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) |
customField | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) |
departments | json | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt) |
locations | json | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress) |
jobPostings | json | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt) |
openings | json | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds[]/hiringTeam[]/customFields[]) |
users | json | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt) |
interviewSchedules | json | List of interview schedules (id, applicationId, interviewStageId, interviewEvents[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt) |
interviewPlans | json | Interview plans (id, title, isArchived, createdAt, updatedAt) |
interviewStages | json | Ordered interview stages for a plan |
feedback | json | Submitted application feedback with form definitions and values |
history | json | Application stage history and allowed actions |
tags | json | List of candidate tags (id, title, isArchived) |
id | string | Resource UUID |
name | string | Resource name |
title | string | Job title or job posting title |
status | string | Status |
candidate | json | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations. |
job | json | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam[], author, location, openings[], createdAt, updatedAt) |
application | json | Application details (id, status, customFields[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam[], createdAt, updatedAt) |
offer | json | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion) |
jobPosting | json | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job [included when expandJob=true]) |
content | string | Note content |
author | json | Note author (id, firstName, lastName, email) |
isPrivate | boolean | Whether the note is private |
createdAt | string | ISO 8601 creation timestamp |
applicationId | string | UUID of the deleted application |
moreDataAvailable | boolean | Whether more pages exist |
nextCursor | string | Pagination cursor for next page |
nextSyncCursor | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output |
Retrieves full details about a single candidate by their ID.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
candidateId | string | No | The UUID of the candidate to fetch |
externalMappingId | string | No | External mapping ID to use instead of the Ashby candidate UUID |
| Parameter | Type | Description |
|---|
candidates | json | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses[], phoneNumbers[], socialLinks[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents[], tags[], applicationIds[], customFields[], resumeFileHandle, fileHandles[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
jobs | json | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds[], customFields[], jobPostingIds[], customRequisitionId, brandId, hiringTeam[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings[] with latestVersion) |
applications | json | List of applications (id, status, customFields[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields[], archivedAt, job summary, creditedToUser, hiringTeam[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt) |
notes | json | List of notes (id, content, author, isPrivate, createdAt) |
offers | json | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields[]/fileHandles[]/author/approvalStatus) |
archiveReasons | json | List of archive reasons (id, text, reasonType [RejectedByCandidate/RejectedByOrg/Other], isArchived) |
sources | json | List of sources (id, title, isArchived, sourceType {id, title, isArchived}) |
customFields | json | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues[] {label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) |
customField | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) |
departments | json | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt) |
locations | json | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress) |
jobPostings | json | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt) |
openings | json | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds[]/hiringTeam[]/customFields[]) |
users | json | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt) |
interviewSchedules | json | List of interview schedules (id, applicationId, interviewStageId, interviewEvents[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt) |
interviewPlans | json | Interview plans (id, title, isArchived, createdAt, updatedAt) |
interviewStages | json | Ordered interview stages for a plan |
feedback | json | Submitted application feedback with form definitions and values |
history | json | Application stage history and allowed actions |
tags | json | List of candidate tags (id, title, isArchived) |
id | string | Resource UUID |
name | string | Resource name |
title | string | Job title or job posting title |
status | string | Status |
candidate | json | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations. |
job | json | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam[], author, location, openings[], createdAt, updatedAt) |
application | json | Application details (id, status, customFields[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam[], createdAt, updatedAt) |
offer | json | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion) |
jobPosting | json | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job [included when expandJob=true]) |
content | string | Note content |
author | json | Note author (id, firstName, lastName, email) |
isPrivate | boolean | Whether the note is private |
createdAt | string | ISO 8601 creation timestamp |
applicationId | string | UUID of the deleted application |
moreDataAvailable | boolean | Whether more pages exist |
nextCursor | string | Pagination cursor for next page |
nextSyncCursor | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output |
Retrieves full details about a single job by its ID.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
jobId | string | Yes | The UUID of the job to fetch |
includeUnpublishedJobPostingIds | boolean | No | Include IDs for unpublished job postings on this job |
| Parameter | Type | Description |
|---|
candidates | json | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses[], phoneNumbers[], socialLinks[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents[], tags[], applicationIds[], customFields[], resumeFileHandle, fileHandles[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
jobs | json | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds[], customFields[], jobPostingIds[], customRequisitionId, brandId, hiringTeam[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings[] with latestVersion) |
applications | json | List of applications (id, status, customFields[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields[], archivedAt, job summary, creditedToUser, hiringTeam[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt) |
notes | json | List of notes (id, content, author, isPrivate, createdAt) |
offers | json | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields[]/fileHandles[]/author/approvalStatus) |
archiveReasons | json | List of archive reasons (id, text, reasonType [RejectedByCandidate/RejectedByOrg/Other], isArchived) |
sources | json | List of sources (id, title, isArchived, sourceType {id, title, isArchived}) |
customFields | json | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues[] {label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) |
customField | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) |
departments | json | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt) |
locations | json | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress) |
jobPostings | json | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt) |
openings | json | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds[]/hiringTeam[]/customFields[]) |
users | json | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt) |
interviewSchedules | json | List of interview schedules (id, applicationId, interviewStageId, interviewEvents[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt) |
interviewPlans | json | Interview plans (id, title, isArchived, createdAt, updatedAt) |
interviewStages | json | Ordered interview stages for a plan |
feedback | json | Submitted application feedback with form definitions and values |
history | json | Application stage history and allowed actions |
tags | json | List of candidate tags (id, title, isArchived) |
id | string | Resource UUID |
name | string | Resource name |
title | string | Job title or job posting title |
status | string | Status |
candidate | json | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations. |
job | json | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam[], author, location, openings[], createdAt, updatedAt) |
application | json | Application details (id, status, customFields[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam[], createdAt, updatedAt) |
offer | json | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion) |
jobPosting | json | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job [included when expandJob=true]) |
content | string | Note content |
author | json | Note author (id, firstName, lastName, email) |
isPrivate | boolean | Whether the note is private |
createdAt | string | ISO 8601 creation timestamp |
applicationId | string | UUID of the deleted application |
moreDataAvailable | boolean | Whether more pages exist |
nextCursor | string | Pagination cursor for next page |
nextSyncCursor | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output |
Retrieves full details about a single job posting by its ID.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
jobPostingId | string | Yes | The UUID of the job posting to fetch |
jobBoardId | string | No | Optional job board UUID. If omitted, returns posting for the external job board. |
expandJob | boolean | No | Whether to expand and include the related job object in the response |
includeUnpublishedJobPostings | boolean | No | Allow retrieval of an unpublished or draft job posting |
| Parameter | Type | Description |
|---|
id | string | Job posting UUID |
title | string | Job posting title |
descriptionPlain | string | Full description in plain text |
descriptionHtml | string | Full description in HTML |
descriptionSocial | string | Shortened description for social sharing (max 200 chars) |
descriptionParts | object | Description broken into opening, body, and closing sections |
↳ descriptionOpening | object | Opening (from Job Boards theme settings) |
↳ html | string | HTML content |
↳ plain | string | Plain text content |
↳ descriptionBody | object | Main description body |
↳ html | string | HTML content |
↳ plain | string | Plain text content |
↳ descriptionClosing | object | Closing (from Job Boards theme settings) |
↳ html | string | HTML content |
↳ plain | string | Plain text content |
departmentName | string | Department name |
teamName | string | Team name |
teamNameHierarchy | array | Hierarchy of team names from root to team |
jobId | string | Associated job UUID |
locationName | string | Primary location name |
locationIds | object | Primary and secondary location UUIDs |
↳ primaryLocationId | string | Primary location UUID |
↳ secondaryLocationIds | array | Secondary location UUIDs |
address | object | Postal address of the posting location |
↳ postalAddress | object | Structured postal address |
↳ addressCountry | string | Country |
↳ addressRegion | string | State or region |
↳ addressLocality | string | City or locality |
↳ postalCode | string | Postal code |
↳ streetAddress | string | Street address |
isRemote | boolean | Whether the posting is remote |
workplaceType | string | Workplace type (OnSite, Remote, Hybrid) |
employmentType | string | Employment type (FullTime, PartTime, Intern, Contract, Temporary) |
isListed | boolean | Whether publicly listed on the job board |
suppressDescriptionOpening | boolean | Whether the theme opening is hidden on this posting |
suppressDescriptionClosing | boolean | Whether the theme closing is hidden on this posting |
publishedDate | string | ISO 8601 published date |
applicationDeadline | string | ISO 8601 application deadline |
externalLink | string | External link to the job posting |
applyLink | string | Direct apply link |
compensation | object | Compensation details for the posting |
↳ compensationTierSummary | string | Human-readable tier summary |
↳ summaryComponents | array | Structured compensation components |
↳ summary | string | Component summary |
↳ compensationTypeLabel | string | Component type label (Salary, Commission, Bonus, Equity, etc.) |
↳ interval | string | Payment interval (e.g. annual, hourly) |
↳ currencyCode | string | ISO 4217 currency code |
↳ minValue | number | Minimum value |
↳ maxValue | number | Maximum value |
↳ shouldDisplayCompensationOnJobBoard | boolean | Whether compensation is shown on the job board |
applicationLimitCalloutHtml | string | HTML callout shown when the application limit is reached |
updatedAt | string | ISO 8601 last update timestamp |
job | object | The expanded job object, only present when the request was made with expandJob=true |
Retrieves full details about a single offer by its ID.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
offerId | string | Yes | The UUID of the offer to fetch |
excludeFormDefinition | boolean | No | Omit the offer form definition from the response |
| Parameter | Type | Description |
|---|
candidates | json | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses[], phoneNumbers[], socialLinks[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents[], tags[], applicationIds[], customFields[], resumeFileHandle, fileHandles[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
jobs | json | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds[], customFields[], jobPostingIds[], customRequisitionId, brandId, hiringTeam[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings[] with latestVersion) |
applications | json | List of applications (id, status, customFields[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields[], archivedAt, job summary, creditedToUser, hiringTeam[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt) |
notes | json | List of notes (id, content, author, isPrivate, createdAt) |
offers | json | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields[]/fileHandles[]/author/approvalStatus) |
archiveReasons | json | List of archive reasons (id, text, reasonType [RejectedByCandidate/RejectedByOrg/Other], isArchived) |
sources | json | List of sources (id, title, isArchived, sourceType {id, title, isArchived}) |
customFields | json | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues[] {label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) |
customField | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) |
departments | json | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt) |
locations | json | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress) |
jobPostings | json | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt) |
openings | json | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds[]/hiringTeam[]/customFields[]) |
users | json | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt) |
interviewSchedules | json | List of interview schedules (id, applicationId, interviewStageId, interviewEvents[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt) |
interviewPlans | json | Interview plans (id, title, isArchived, createdAt, updatedAt) |
interviewStages | json | Ordered interview stages for a plan |
feedback | json | Submitted application feedback with form definitions and values |
history | json | Application stage history and allowed actions |
tags | json | List of candidate tags (id, title, isArchived) |
id | string | Resource UUID |
name | string | Resource name |
title | string | Job title or job posting title |
status | string | Status |
candidate | json | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations. |
job | json | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam[], author, location, openings[], createdAt, updatedAt) |
application | json | Application details (id, status, customFields[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam[], createdAt, updatedAt) |
offer | json | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion) |
jobPosting | json | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job [included when expandJob=true]) |
content | string | Note content |
author | json | Note author (id, firstName, lastName, email) |
isPrivate | boolean | Whether the note is private |
createdAt | string | ISO 8601 creation timestamp |
applicationId | string | UUID of the deleted application |
moreDataAvailable | boolean | Whether more pages exist |
nextCursor | string | Pagination cursor for next page |
nextSyncCursor | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output |
Retrieves one Ashby headcount opening by UUID.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
openingId | string | Yes | Opening UUID |
| Parameter | Type | Description |
|---|
candidates | json | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses[], phoneNumbers[], socialLinks[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents[], tags[], applicationIds[], customFields[], resumeFileHandle, fileHandles[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
jobs | json | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds[], customFields[], jobPostingIds[], customRequisitionId, brandId, hiringTeam[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings[] with latestVersion) |
applications | json | List of applications (id, status, customFields[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields[], archivedAt, job summary, creditedToUser, hiringTeam[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt) |
notes | json | List of notes (id, content, author, isPrivate, createdAt) |
offers | json | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields[]/fileHandles[]/author/approvalStatus) |
archiveReasons | json | List of archive reasons (id, text, reasonType [RejectedByCandidate/RejectedByOrg/Other], isArchived) |
sources | json | List of sources (id, title, isArchived, sourceType {id, title, isArchived}) |
customFields | json | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues[] {label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) |
customField | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) |
departments | json | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt) |
locations | json | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress) |
jobPostings | json | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt) |
openings | json | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds[]/hiringTeam[]/customFields[]) |
users | json | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt) |
interviewSchedules | json | List of interview schedules (id, applicationId, interviewStageId, interviewEvents[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt) |
interviewPlans | json | Interview plans (id, title, isArchived, createdAt, updatedAt) |
interviewStages | json | Ordered interview stages for a plan |
feedback | json | Submitted application feedback with form definitions and values |
history | json | Application stage history and allowed actions |
tags | json | List of candidate tags (id, title, isArchived) |
id | string | Resource UUID |
name | string | Resource name |
title | string | Job title or job posting title |
status | string | Status |
candidate | json | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations. |
job | json | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam[], author, location, openings[], createdAt, updatedAt) |
application | json | Application details (id, status, customFields[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam[], createdAt, updatedAt) |
offer | json | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion) |
jobPosting | json | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job [included when expandJob=true]) |
content | string | Note content |
author | json | Note author (id, firstName, lastName, email) |
isPrivate | boolean | Whether the note is private |
createdAt | string | ISO 8601 creation timestamp |
applicationId | string | UUID of the deleted application |
moreDataAvailable | boolean | Whether more pages exist |
nextCursor | string | Pagination cursor for next page |
nextSyncCursor | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output |
Lists submitted interview feedback, optionally for one application, with pagination and incremental sync.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
applicationId | string | No | Application UUID |
cursor | string | No | Pagination cursor |
perPage | number | No | Results per page (1-100) |
syncToken | string | No | Opaque token from a completed prior sync run |
createdAfter | string | No | Only feedback submitted after this ISO 8601 timestamp |
| Parameter | Type | Description |
|---|
feedback | array | Submitted application feedback |
↳ id | string | Feedback UUID |
↳ formDefinition | json | Feedback form sections and documented field definitions |
↳ feedbackFormDefinitionId | string | Feedback form definition UUID |
↳ applicationId | string | Application UUID |
↳ submittedValues | json | Submitted field values keyed by form field path |
↳ interviewId | string | Interview UUID |
↳ interviewEventId | string | Interview event UUID |
↳ applicationHistoryId | string | Application history UUID |
↳ submittedAt | string | Submission timestamp |
moreDataAvailable | boolean | Whether more pages exist |
nextCursor | string | Next page cursor |
nextSyncCursor | string | Next incremental sync token |
Lists the full stage history and allowed actions for an application.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
applicationId | string | Yes | Application UUID |
cursor | string | No | Pagination cursor |
perPage | number | No | Results per page (1-100) |
| Parameter | Type | Description |
|---|
history | array | Application stage history |
↳ id | string | History entry UUID |
↳ stageId | string | Stage UUID |
↳ title | string | Stage title |
↳ enteredStageAt | string | Stage entry timestamp |
↳ leftStageAt | string | Stage exit timestamp |
↳ stageNumber | number | Stage sequence number |
↳ allowedActions | array | Actions permitted at this history point |
↳ actorId | string | Acting user UUID |
moreDataAvailable | boolean | Whether more pages exist |
nextCursor | string | Next page cursor |
Lists all applications in an Ashby organization with pagination and optional filters for status, job, and creation date.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
cursor | string | No | Opaque pagination cursor from a previous response nextCursor value |
perPage | number | No | Number of results per page (default 100) |
status | string | No | Application status to include: Active, Hired, Archived, or Lead |
jobId | string | No | Filter applications by a specific job UUID |
createdAfter | string | No | Filter to applications created after this ISO 8601 timestamp (e.g. 2024-01-01T00:00:00Z) |
createdBefore | string | No | Filter to applications created before this ISO 8601 timestamp |
syncToken | string | No | Opaque token from a completed prior sync run |
expand | json | No | Ashby-supported application expansions to request |
| Parameter | Type | Description |
|---|
applications | array | List of applications |
moreDataAvailable | boolean | Whether more pages of results exist |
nextCursor | string | Opaque cursor for fetching the next page |
nextSyncCursor | string | Opaque token for the next incremental sync, returned on the final page |
Lists all archive reasons configured in Ashby.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
includeArchived | boolean | No | Whether to include archived archive reasons in the response (default false) |
| Parameter | Type | Description |
|---|
archiveReasons | array | List of archive reasons |
↳ id | string | Archive reason UUID |
↳ text | string | Archive reason text |
↳ reasonType | string | Reason type (RejectedByCandidate, RejectedByOrg, Other) |
↳ isArchived | boolean | Whether the reason is archived |
Lists all candidate tags configured in Ashby.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
includeArchived | boolean | No | Whether to include archived candidate tags (default false) |
cursor | string | No | Opaque pagination cursor from a previous response nextCursor value |
syncToken | string | No | Sync token from a previous response to fetch only changed results |
perPage | number | No | Number of results per page (default 100) |
| Parameter | Type | Description |
|---|
tags | array | List of candidate tags |
↳ id | string | Tag UUID |
↳ title | string | Tag title |
↳ isArchived | boolean | Whether the tag is archived |
moreDataAvailable | boolean | Whether more pages of results exist |
nextCursor | string | Opaque cursor for fetching the next page |
nextSyncCursor | string | Sync token to use for incremental updates in future requests |
Lists all candidates in an Ashby organization with cursor-based pagination.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
cursor | string | No | Opaque pagination cursor from a previous response nextCursor value |
perPage | number | No | Number of results per page (default 100) |
createdAfter | string | No | Only return candidates created after this ISO 8601 timestamp (e.g. 2024-01-01T00:00:00Z) |
createdBefore | string | No | Only return candidates created before this ISO 8601 timestamp |
syncToken | string | No | Opaque token from a completed prior sync run |
| Parameter | Type | Description |
|---|
candidates | array | List of candidates |
moreDataAvailable | boolean | Whether more pages of results exist |
nextCursor | string | Opaque cursor for fetching the next page |
nextSyncCursor | string | Opaque token for the next incremental sync, returned on the final page |
Lists all custom field definitions configured in Ashby.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
cursor | string | No | Opaque pagination cursor from a previous response nextCursor value |
perPage | number | No | Number of results per page (default and max 100) |
syncToken | string | No | Opaque token from a prior sync to fetch only items changed since then |
includeArchived | boolean | No | When true, includes archived custom fields in results (default false) |
| Parameter | Type | Description |
|---|
customFields | array | List of custom field definitions |
↳ id | string | Custom field UUID |
↳ title | string | Custom field title |
↳ isPrivate | boolean | Whether the custom field is private |
↳ fieldType | string | Field data type (MultiValueSelect, NumberRange, String, Date, ValueSelect, Number, Currency, Boolean, LongText, CompensationRange) |
↳ objectType | string | Object type the field applies to (Application, Candidate, Employee, Job, Offer, Opening, Talent_Project) |
↳ isArchived | boolean | Whether the custom field is archived |
↳ isRequired | boolean | Whether a value is required |
↳ selectableValues | array | Selectable values for MultiValueSelect fields (empty for other field types) |
↳ label | string | Display label |
↳ value | string | Stored value |
↳ isArchived | boolean | Whether archived |
moreDataAvailable | boolean | Whether more pages of results exist |
nextCursor | string | Opaque cursor for fetching the next page |
nextSyncCursor | string | Opaque sync token returned after the last page; pass on next sync |
Lists all departments in Ashby.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
cursor | string | No | Opaque pagination cursor from a previous response nextCursor value |
perPage | number | No | Number of results per page (default and max 100) |
syncToken | string | No | Opaque token from a prior sync to fetch only items changed since then |
includeArchived | boolean | No | When true, includes archived departments in results (default false) |
| Parameter | Type | Description |
|---|
departments | array | List of departments |
↳ id | string | Department UUID |
↳ name | string | Department name |
↳ externalName | string | Candidate-facing name used on job boards |
↳ isArchived | boolean | Whether the department is archived |
↳ parentId | string | Parent department UUID |
↳ createdAt | string | ISO 8601 creation timestamp |
↳ updatedAt | string | ISO 8601 last update timestamp |
↳ extraData | json | Free-form key-value metadata |
moreDataAvailable | boolean | Whether more pages of results exist |
nextCursor | string | Opaque cursor for fetching the next page |
nextSyncCursor | string | Opaque sync token returned after the last page; pass on next sync |
Lists interview schedules in Ashby, optionally filtered by application or interview stage.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
applicationId | string | No | The UUID of the application to list interview schedules for |
interviewStageId | string | No | The UUID of the interview stage to list interview schedules for |
cursor | string | No | Opaque pagination cursor from a previous response nextCursor value |
perPage | number | No | Number of results per page (default 100) |
createdAfter | string | No | Only return interview schedules created after this ISO 8601 timestamp (e.g. 2024-01-01T00:00:00Z) |
syncToken | string | No | Opaque token from a completed prior sync run |
| Parameter | Type | Description |
|---|
interviewSchedules | array | List of interview schedules |
↳ id | string | Interview schedule UUID |
↳ status | string | Schedule status (NeedsScheduling, WaitingOnCandidateBooking, Scheduled, Complete, Cancelled, OnHold, etc.) |
↳ applicationId | string | Associated application UUID |
↳ interviewStageId | string | Interview stage UUID |
↳ createdAt | string | ISO 8601 creation timestamp |
↳ updatedAt | string | ISO 8601 last update timestamp |
↳ interviewEvents | array | Scheduled interview events on this schedule |
↳ id | string | Event UUID |
↳ interviewId | string | Interview template UUID |
↳ interviewScheduleId | string | Parent schedule UUID |
↳ interviewerUserIds | array | User UUIDs of interviewers assigned to the event |
↳ createdAt | string | Event creation timestamp |
↳ updatedAt | string | Event last updated timestamp |
↳ startTime | string | Event start time |
↳ endTime | string | Event end time |
↳ feedbackLink | string | URL to submit feedback for the event |
↳ location | string | Physical location |
↳ meetingLink | string | Virtual meeting URL |
↳ hasSubmittedFeedback | boolean | Whether any feedback has been submitted |
moreDataAvailable | boolean | Whether more pages of results exist |
nextCursor | string | Opaque cursor for fetching the next page |
nextSyncCursor | string | Opaque token for the next incremental sync |
Lists Ashby interview plans, including optional archived plans and incremental changes.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
includeArchived | boolean | No | Include archived interview plans |
cursor | string | No | Pagination cursor |
perPage | number | No | Results per page (1-100) |
syncToken | string | No | Opaque token from a completed prior sync run |
| Parameter | Type | Description |
|---|
interviewPlans | array | Interview plans |
↳ id | string | Interview plan UUID |
↳ title | string | Plan title |
↳ isArchived | boolean | Whether archived |
↳ createdAt | string | Creation timestamp |
↳ updatedAt | string | Last update timestamp |
moreDataAvailable | boolean | Whether more pages exist |
nextCursor | string | Next page cursor |
nextSyncCursor | string | Next incremental sync token |
Lists the ordered stages in an Ashby interview plan.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
interviewPlanId | string | Yes | Interview plan UUID |
| Parameter | Type | Description |
|---|
interviewStages | array | Interview stages in plan order |
↳ id | string | Stage UUID |
↳ title | string | Stage title |
↳ type | string | Stage type |
↳ interviewPlanId | string | Parent plan UUID |
↳ orderInInterviewPlan | number | Zero-based plan order |
↳ interviewStageGroupId | string | Stage group UUID |
Lists all job postings in Ashby.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
location | string | No | Filter by location name (case sensitive) |
department | string | No | Filter by department name (case sensitive) |
listedOnly | boolean | No | When true, only returns listed (publicly visible) job postings (default false) |
includeUnpublishedJobPostings | boolean | No | When true, also returns unpublished (Draft) job postings. The endpoint already returns both listed and unlisted published postings by default, so this only adds drafts. |
jobBoardId | string | No | UUID of a specific job board to filter postings to. If omitted, returns postings on the primary external job board. |
| Parameter | Type | Description |
|---|
jobPostings | array | List of job postings |
↳ id | string | Job posting UUID |
↳ title | string | Job posting title |
↳ jobId | string | Associated job UUID |
↳ departmentName | string | Department name |
↳ teamName | string | Team name |
↳ locationName | string | Primary location display name |
↳ locationIds | object | Primary and secondary location UUIDs |
↳ primaryLocationId | string | Primary location UUID |
↳ secondaryLocationIds | array | Secondary location UUIDs |
↳ workplaceType | string | Workplace type (OnSite, Remote, Hybrid) |
↳ employmentType | string | Employment type (FullTime, PartTime, Intern, Contract, Temporary) |
↳ status | string | Posting status (Draft or Published) |
↳ isListed | boolean | Whether the posting is publicly listed |
↳ publishedDate | string | ISO 8601 published date |
↳ applicationDeadline | string | ISO 8601 application deadline |
↳ externalLink | string | External link to the job posting |
↳ applyLink | string | Direct apply link for the job posting |
↳ compensationTierSummary | string | Compensation tier summary for job boards |
↳ shouldDisplayCompensationOnJobBoard | boolean | Whether compensation is shown on the job board |
↳ updatedAt | string | ISO 8601 last update timestamp |
Lists all jobs in an Ashby organization. By default returns Open, Closed, and Archived jobs. Specify status to filter.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
cursor | string | No | Opaque pagination cursor from a previous response nextCursor value |
perPage | number | No | Number of results per page (default and max 100). Ashby silently caps larger values rather than erroring. |
syncToken | string | No | Opaque token from a prior sync to fetch only jobs changed since then. Ashby only returns a new syncToken on the last page, so drain moreDataAvailable/nextCursor before persisting it. |
status | array | No | One job status or an array of statuses to include: Open, Closed, Archived, or Draft |
createdAfter | string | No | Only return jobs created after this ISO 8601 timestamp (e.g. 2024-01-01T00:00:00Z) |
openedAfter | string | No | Only return jobs opened after this ISO 8601 timestamp |
openedBefore | string | No | Only return jobs opened before this ISO 8601 timestamp |
closedAfter | string | No | Only return jobs closed after this ISO 8601 timestamp |
closedBefore | string | No | Only return jobs closed before this ISO 8601 timestamp |
includeUnpublishedJobPostingsIds | boolean | No | Include IDs for unpublished job postings on each job |
| Parameter | Type | Description |
|---|
jobs | array | List of jobs |
moreDataAvailable | boolean | Whether more pages of results exist |
nextCursor | string | Opaque cursor for fetching the next page |
nextSyncCursor | string | Ashby's syncToken for the next incremental run, returned only once the last page is drained. Named as a cursor because that is what it is - an opaque resumption marker, not a credential - so it stays readable in block output alongside nextCursor. |
Lists all locations configured in Ashby.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
cursor | string | No | Opaque pagination cursor from a previous response nextCursor value |
perPage | number | No | Number of results per page (default and max 100) |
syncToken | string | No | Opaque token from a prior sync to fetch only items changed since then |
includeArchived | boolean | No | When true, includes archived locations in results (default false) |
includeLocationHierarchy | boolean | No | When true, includes location hierarchy components/regions (default false) |
| Parameter | Type | Description |
|---|
locations | array | List of locations |
↳ id | string | Location UUID |
↳ name | string | Location name |
↳ externalName | string | Candidate-facing name used on job boards |
↳ isArchived | boolean | Whether the location is archived |
↳ isRemote | boolean | Whether the location is remote (use workplaceType instead) |
↳ workplaceType | string | Workplace type (OnSite, Hybrid, Remote) |
↳ parentLocationId | string | Parent location UUID |
↳ type | string | Location component type (Location, LocationHierarchy) |
↳ address | object | Location postal address |
↳ addressCountry | string | Country |
↳ addressRegion | string | State or region |
↳ addressLocality | string | City or locality |
↳ postalCode | string | Postal code |
↳ streetAddress | string | Street address |
↳ extraData | json | Free-form key-value metadata |
moreDataAvailable | boolean | Whether more pages of results exist |
nextCursor | string | Opaque cursor for fetching the next page |
nextSyncCursor | string | Opaque sync token returned after the last page; pass on next sync |
Lists all notes on a candidate with pagination support.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
candidateId | string | Yes | The UUID of the candidate to list notes for |
cursor | string | No | Opaque pagination cursor from a previous response nextCursor value |
perPage | number | No | Number of results per page (1-100) |
| Parameter | Type | Description |
|---|
notes | array | List of notes on the candidate |
↳ id | string | Note UUID |
↳ content | string | Note content |
↳ isPrivate | boolean | Whether the note is private |
↳ author | object | Note author |
↳ id | string | Author user UUID |
↳ firstName | string | First name |
↳ lastName | string | Last name |
↳ email | string | Email address |
↳ createdAt | string | ISO 8601 creation timestamp |
moreDataAvailable | boolean | Whether more pages of results exist |
nextCursor | string | Opaque cursor for fetching the next page |
Lists all offers with their latest version in an Ashby organization.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
cursor | string | No | Opaque pagination cursor from a previous response nextCursor value |
perPage | number | No | Number of results per page |
createdAfter | string | No | Only return offers created after this ISO 8601 timestamp (e.g. 2024-01-01T00:00:00Z) |
syncToken | string | No | Opaque token from a prior sync to fetch only items changed since then |
applicationId | string | No | Return only offers for the specified application UUID |
offerStatus | json | No | Non-empty array of offer process statuses to include |
acceptanceStatus | json | No | Non-empty array of offer acceptance statuses to include |
approvalStatus | json | No | Non-empty array of latest-version approval statuses to include |
| Parameter | Type | Description |
|---|
offers | array | List of offers |
moreDataAvailable | boolean | Whether more pages of results exist |
nextCursor | string | Opaque cursor for fetching the next page |
nextSyncCursor | string | Opaque token for the next incremental sync, returned on the final page |
Lists all openings in Ashby with pagination.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
cursor | string | No | Opaque pagination cursor from a previous response nextCursor value |
perPage | number | No | Number of results per page (default 100) |
createdAfter | string | No | Only return openings created after this ISO 8601 timestamp (e.g. 2024-01-01T00:00:00Z) |
syncToken | string | No | Opaque token from a completed prior sync run |
| Parameter | Type | Description |
|---|
moreDataAvailable | boolean | Whether more pages of results exist |
nextCursor | string | Opaque cursor for fetching the next page |
nextSyncCursor | string | Opaque token for the next incremental sync |
Lists all candidate sources configured in Ashby.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
includeArchived | boolean | No | When true, includes archived sources in results (default false) |
| Parameter | Type | Description |
|---|
sources | array | List of sources |
↳ id | string | Source UUID |
↳ title | string | Source title |
↳ isArchived | boolean | Whether the source is archived |
↳ sourceType | object | Source type grouping |
↳ id | string | Source type UUID |
↳ title | string | Source type title |
↳ isArchived | boolean | Whether archived |
Lists all users in Ashby with pagination.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
cursor | string | No | Opaque pagination cursor from a previous response nextCursor value |
perPage | number | No | Number of results per page (default 100) |
includeDeactivated | boolean | No | When true, includes deactivated users in results (default false) |
syncToken | string | No | Opaque token from a completed prior sync run |
| Parameter | Type | Description |
|---|
users | array | List of users |
moreDataAvailable | boolean | Whether more pages of results exist |
nextCursor | string | Opaque cursor for fetching the next page |
nextSyncCursor | string | Opaque token for the next incremental sync |
Removes a tag from a candidate in Ashby and returns the updated candidate.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
onBehalfOfUserId | string | No | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls |
candidateId | string | Yes | The UUID of the candidate to remove the tag from |
tagId | string | Yes | The UUID of the tag to remove |
| Parameter | Type | Description |
|---|
candidates | json | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses[], phoneNumbers[], socialLinks[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents[], tags[], applicationIds[], customFields[], resumeFileHandle, fileHandles[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
jobs | json | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds[], customFields[], jobPostingIds[], customRequisitionId, brandId, hiringTeam[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings[] with latestVersion) |
applications | json | List of applications (id, status, customFields[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields[], archivedAt, job summary, creditedToUser, hiringTeam[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt) |
notes | json | List of notes (id, content, author, isPrivate, createdAt) |
offers | json | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields[]/fileHandles[]/author/approvalStatus) |
archiveReasons | json | List of archive reasons (id, text, reasonType [RejectedByCandidate/RejectedByOrg/Other], isArchived) |
sources | json | List of sources (id, title, isArchived, sourceType {id, title, isArchived}) |
customFields | json | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues[] {label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) |
customField | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) |
departments | json | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt) |
locations | json | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress) |
jobPostings | json | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt) |
openings | json | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds[]/hiringTeam[]/customFields[]) |
users | json | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt) |
interviewSchedules | json | List of interview schedules (id, applicationId, interviewStageId, interviewEvents[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt) |
interviewPlans | json | Interview plans (id, title, isArchived, createdAt, updatedAt) |
interviewStages | json | Ordered interview stages for a plan |
feedback | json | Submitted application feedback with form definitions and values |
history | json | Application stage history and allowed actions |
tags | json | List of candidate tags (id, title, isArchived) |
id | string | Resource UUID |
name | string | Resource name |
title | string | Job title or job posting title |
status | string | Status |
candidate | json | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations. |
job | json | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam[], author, location, openings[], createdAt, updatedAt) |
application | json | Application details (id, status, customFields[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam[], createdAt, updatedAt) |
offer | json | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion) |
jobPosting | json | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job [included when expandJob=true]) |
content | string | Note content |
author | json | Note author (id, firstName, lastName, email) |
isPrivate | boolean | Whether the note is private |
createdAt | string | ISO 8601 creation timestamp |
applicationId | string | UUID of the deleted application |
moreDataAvailable | boolean | Whether more pages exist |
nextCursor | string | Pagination cursor for next page |
nextSyncCursor | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output |
Searches for candidates by name and/or email with AND logic. Results are limited to 100 matches. Use candidate.list for full pagination.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
name | string | No | Candidate name to search for (combined with email using AND logic) |
email | string | No | Candidate email to search for (combined with name using AND logic) |
limit | number | No | Maximum matches to return (1-100) |
| Parameter | Type | Description |
|---|
candidates | array | Matching candidates (max 100 results) |
Searches Ashby jobs by title and/or requisition ID. Provide at least one of these filters.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
title | string | No | Job title search text |
requisitionId | string | No | Custom requisition ID |
limit | number | No | Maximum matches (1-100) |
| Parameter | Type | Description |
|---|
jobs | array | Matching jobs |
moreDataAvailable | boolean | Whether more matches exist |
Searches Ashby headcount openings by human-readable identifier.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
identifier | string | Yes | Opening identifier |
| Parameter | Type | Description |
|---|
candidates | json | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses[], phoneNumbers[], socialLinks[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents[], tags[], applicationIds[], customFields[], resumeFileHandle, fileHandles[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
jobs | json | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds[], customFields[], jobPostingIds[], customRequisitionId, brandId, hiringTeam[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings[] with latestVersion) |
applications | json | List of applications (id, status, customFields[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields[], archivedAt, job summary, creditedToUser, hiringTeam[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt) |
notes | json | List of notes (id, content, author, isPrivate, createdAt) |
offers | json | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields[]/fileHandles[]/author/approvalStatus) |
archiveReasons | json | List of archive reasons (id, text, reasonType [RejectedByCandidate/RejectedByOrg/Other], isArchived) |
sources | json | List of sources (id, title, isArchived, sourceType {id, title, isArchived}) |
customFields | json | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues[] {label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) |
customField | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) |
departments | json | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt) |
locations | json | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress) |
jobPostings | json | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt) |
openings | json | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds[]/hiringTeam[]/customFields[]) |
users | json | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt) |
interviewSchedules | json | List of interview schedules (id, applicationId, interviewStageId, interviewEvents[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt) |
interviewPlans | json | Interview plans (id, title, isArchived, createdAt, updatedAt) |
interviewStages | json | Ordered interview stages for a plan |
feedback | json | Submitted application feedback with form definitions and values |
history | json | Application stage history and allowed actions |
tags | json | List of candidate tags (id, title, isArchived) |
id | string | Resource UUID |
name | string | Resource name |
title | string | Job title or job posting title |
status | string | Status |
candidate | json | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations. |
job | json | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam[], author, location, openings[], createdAt, updatedAt) |
application | json | Application details (id, status, customFields[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam[], createdAt, updatedAt) |
offer | json | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion) |
jobPosting | json | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job [included when expandJob=true]) |
content | string | Note content |
author | json | Note author (id, firstName, lastName, email) |
isPrivate | boolean | Whether the note is private |
createdAt | string | ISO 8601 creation timestamp |
applicationId | string | UUID of the deleted application |
moreDataAvailable | boolean | Whether more pages exist |
nextCursor | string | Pagination cursor for next page |
nextSyncCursor | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output |
Searches Ashby users by exact email address.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
email | string | Yes | User email address |
| Parameter | Type | Description |
|---|
users | array | Matching users |
Sets the value of a single custom field on an Ashby Application, Candidate, Job, or Opening. Custom fields are the only way to annotate a job or req, since Ashby has no job notes and no job tags. Requires the candidatesWrite permission.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
onBehalfOfUserId | string | No | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls |
objectId | string | Yes | UUID of the object to set the field on (application, candidate, job, or opening) |
objectType | string | Yes | Type of the object: Application, Candidate, Job, or Opening |
fieldId | string | Yes | UUID of the custom field definition to set, as returned by List Custom Fields. This is the field definition ID, not the ID of a value already on the object. |
fieldValue | json | No | Value to write, matching the field type: boolean, number, string (String, LongText, Date, Url, or a ValueSelect option), string array (MultiValueSelect), or an object for Currency ({value, currencyCode}), NumberRange ({type, minValue, maxValue}), CompensationRange, and Location ({country, region, city}). Pass null to clear the value, which makes the annotation reversible. |
| Parameter | Type | Description |
|---|
customField | object | The custom field as stored on the object after the write |
Sets several custom field values on one Ashby Application, Candidate, Job, or Opening in a single call. Prefer this over repeated single-field writes to the same object - Ashby recommends it because concurrent single-field calls can race and overwrite each other. Requires the candidatesWrite permission.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
onBehalfOfUserId | string | No | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls |
objectId | string | Yes | UUID of the object to set the fields on (application, candidate, job, or opening) |
objectType | string | Yes | Type of the object: Application, Candidate, Job, or Opening |
values | json | Yes | Array of at least one { fieldId, fieldValue } pair. fieldId is a custom field definition UUID from List Custom Fields. fieldValue matches the field type: boolean, number, string, string array (MultiValueSelect), or an object for Currency, NumberRange, CompensationRange, and Location. Pass null as a fieldValue to clear that field. |
| Parameter | Type | Description |
|---|
candidates | json | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses[], phoneNumbers[], socialLinks[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents[], tags[], applicationIds[], customFields[], resumeFileHandle, fileHandles[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
jobs | json | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds[], customFields[], jobPostingIds[], customRequisitionId, brandId, hiringTeam[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings[] with latestVersion) |
applications | json | List of applications (id, status, customFields[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields[], archivedAt, job summary, creditedToUser, hiringTeam[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt) |
notes | json | List of notes (id, content, author, isPrivate, createdAt) |
offers | json | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields[]/fileHandles[]/author/approvalStatus) |
archiveReasons | json | List of archive reasons (id, text, reasonType [RejectedByCandidate/RejectedByOrg/Other], isArchived) |
sources | json | List of sources (id, title, isArchived, sourceType {id, title, isArchived}) |
customFields | json | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues[] {label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) |
customField | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) |
departments | json | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt) |
locations | json | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress) |
jobPostings | json | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt) |
openings | json | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds[]/hiringTeam[]/customFields[]) |
users | json | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt) |
interviewSchedules | json | List of interview schedules (id, applicationId, interviewStageId, interviewEvents[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt) |
interviewPlans | json | Interview plans (id, title, isArchived, createdAt, updatedAt) |
interviewStages | json | Ordered interview stages for a plan |
feedback | json | Submitted application feedback with form definitions and values |
history | json | Application stage history and allowed actions |
tags | json | List of candidate tags (id, title, isArchived) |
id | string | Resource UUID |
name | string | Resource name |
title | string | Job title or job posting title |
status | string | Status |
candidate | json | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations. |
job | json | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam[], author, location, openings[], createdAt, updatedAt) |
application | json | Application details (id, status, customFields[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam[], createdAt, updatedAt) |
offer | json | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion) |
jobPosting | json | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job [included when expandJob=true]) |
content | string | Note content |
author | json | Note author (id, firstName, lastName, email) |
isPrivate | boolean | Whether the note is private |
createdAt | string | ISO 8601 creation timestamp |
applicationId | string | UUID of the deleted application |
moreDataAvailable | boolean | Whether more pages exist |
nextCursor | string | Pagination cursor for next page |
nextSyncCursor | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output |
Updates an existing candidate record in Ashby. Only provided fields are changed.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
onBehalfOfUserId | string | No | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls |
candidateId | string | Yes | The UUID of the candidate to update |
name | string | No | Updated full name, or null |
email | string | No | Updated primary email address, or null |
phoneNumber | string | No | Updated primary phone number, or null |
linkedInUrl | string | No | LinkedIn profile URL, or null |
githubUrl | string | No | GitHub profile URL, or null |
websiteUrl | string | No | Personal website URL, or null |
alternateEmail | string | No | An additional email address to add to the candidate, or null |
sourceId | string | No | UUID of the source to attribute the candidate to |
creditedToUserId | string | No | UUID of the Ashby user to credit with sourcing this candidate |
clearSource | boolean | No | Explicitly clear the candidate source; mutually exclusive with sourceId |
clearCreditedToUser | boolean | No | Explicitly clear the credited Ashby user; mutually exclusive with creditedToUserId |
location | json | No | Candidate location object with optional city, region, and country; the object and its fields accept null |
createdAt | string | No | Backdated creation timestamp in ISO 8601, or null. Only updatable if originally backdated. |
sendNotifications | boolean | No | Whether to send a notification when the source is updated (default true), or null |
socialLinks | json | No | Array of social link objects to set on the candidate, e.g. [{"type":"LinkedIn","url":"https://..."}]. Replaces existing links; pass [] to clear them. Null is also accepted. Mutually exclusive with linkedInUrl, githubUrl, and websiteUrl. |
| Parameter | Type | Description |
|---|
candidates | json | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses[], phoneNumbers[], socialLinks[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents[], tags[], applicationIds[], customFields[], resumeFileHandle, fileHandles[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
jobs | json | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds[], customFields[], jobPostingIds[], customRequisitionId, brandId, hiringTeam[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings[] with latestVersion) |
applications | json | List of applications (id, status, customFields[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields[], archivedAt, job summary, creditedToUser, hiringTeam[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt) |
notes | json | List of notes (id, content, author, isPrivate, createdAt) |
offers | json | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields[]/fileHandles[]/author/approvalStatus) |
archiveReasons | json | List of archive reasons (id, text, reasonType [RejectedByCandidate/RejectedByOrg/Other], isArchived) |
sources | json | List of sources (id, title, isArchived, sourceType {id, title, isArchived}) |
customFields | json | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues[] {label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) |
customField | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) |
departments | json | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt) |
locations | json | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress) |
jobPostings | json | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt) |
openings | json | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds[]/hiringTeam[]/customFields[]) |
users | json | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt) |
interviewSchedules | json | List of interview schedules (id, applicationId, interviewStageId, interviewEvents[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt) |
interviewPlans | json | Interview plans (id, title, isArchived, createdAt, updatedAt) |
interviewStages | json | Ordered interview stages for a plan |
feedback | json | Submitted application feedback with form definitions and values |
history | json | Application stage history and allowed actions |
tags | json | List of candidate tags (id, title, isArchived) |
id | string | Resource UUID |
name | string | Resource name |
title | string | Job title or job posting title |
status | string | Status |
candidate | json | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations. |
job | json | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam[], author, location, openings[], createdAt, updatedAt) |
application | json | Application details (id, status, customFields[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam[], createdAt, updatedAt) |
offer | json | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion) |
jobPosting | json | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job [included when expandJob=true]) |
content | string | Note content |
author | json | Note author (id, firstName, lastName, email) |
isPrivate | boolean | Whether the note is private |
createdAt | string | ISO 8601 creation timestamp |
applicationId | string | UUID of the deleted application |
moreDataAvailable | boolean | Whether more pages exist |
nextCursor | string | Pagination cursor for next page |
nextSyncCursor | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output |
Transfers an application to another job, interview plan, and stage.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
onBehalfOfUserId | string | No | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls |
applicationId | string | Yes | Application UUID |
jobId | string | Yes | Destination job UUID |
interviewPlanId | string | Yes | Destination interview plan UUID |
interviewStageId | string | Yes | Destination interview stage UUID |
startAutomaticActivities | boolean | No | Start automatic activities configured for the destination stage |
| Parameter | Type | Description |
|---|
candidates | json | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses[], phoneNumbers[], socialLinks[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents[], tags[], applicationIds[], customFields[], resumeFileHandle, fileHandles[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
jobs | json | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds[], customFields[], jobPostingIds[], customRequisitionId, brandId, hiringTeam[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings[] with latestVersion) |
applications | json | List of applications (id, status, customFields[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields[], archivedAt, job summary, creditedToUser, hiringTeam[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt) |
notes | json | List of notes (id, content, author, isPrivate, createdAt) |
offers | json | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields[]/fileHandles[]/author/approvalStatus) |
archiveReasons | json | List of archive reasons (id, text, reasonType [RejectedByCandidate/RejectedByOrg/Other], isArchived) |
sources | json | List of sources (id, title, isArchived, sourceType {id, title, isArchived}) |
customFields | json | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues[] {label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) |
customField | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) |
departments | json | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt) |
locations | json | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress) |
jobPostings | json | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt) |
openings | json | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds[]/hiringTeam[]/customFields[]) |
users | json | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt) |
interviewSchedules | json | List of interview schedules (id, applicationId, interviewStageId, interviewEvents[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt) |
interviewPlans | json | Interview plans (id, title, isArchived, createdAt, updatedAt) |
interviewStages | json | Ordered interview stages for a plan |
feedback | json | Submitted application feedback with form definitions and values |
history | json | Application stage history and allowed actions |
tags | json | List of candidate tags (id, title, isArchived) |
id | string | Resource UUID |
name | string | Resource name |
title | string | Job title or job posting title |
status | string | Status |
candidate | json | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations. |
job | json | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam[], author, location, openings[], createdAt, updatedAt) |
application | json | Application details (id, status, customFields[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam[], createdAt, updatedAt) |
offer | json | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion) |
jobPosting | json | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job [included when expandJob=true]) |
content | string | Note content |
author | json | Note author (id, firstName, lastName, email) |
isPrivate | boolean | Whether the note is private |
createdAt | string | ISO 8601 creation timestamp |
applicationId | string | UUID of the deleted application |
moreDataAvailable | boolean | Whether more pages exist |
nextCursor | string | Pagination cursor for next page |
nextSyncCursor | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output |
Securely uploads a file and attaches it to an Ashby candidate.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
candidateId | string | Yes | Candidate UUID |
file | file | Yes | Stored file to attach to the candidate |
fileName | string | No | Optional filename override |
onBehalfOfUserId | string | No | Active Ashby user UUID to attribute this mutation to |
| Parameter | Type | Description |
|---|
candidates | json | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses[], phoneNumbers[], socialLinks[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents[], tags[], applicationIds[], customFields[], resumeFileHandle, fileHandles[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
jobs | json | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds[], customFields[], jobPostingIds[], customRequisitionId, brandId, hiringTeam[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings[] with latestVersion) |
applications | json | List of applications (id, status, customFields[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields[], archivedAt, job summary, creditedToUser, hiringTeam[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt) |
notes | json | List of notes (id, content, author, isPrivate, createdAt) |
offers | json | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields[]/fileHandles[]/author/approvalStatus) |
archiveReasons | json | List of archive reasons (id, text, reasonType [RejectedByCandidate/RejectedByOrg/Other], isArchived) |
sources | json | List of sources (id, title, isArchived, sourceType {id, title, isArchived}) |
customFields | json | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues[] {label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) |
customField | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) |
departments | json | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt) |
locations | json | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress) |
jobPostings | json | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt) |
openings | json | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds[]/hiringTeam[]/customFields[]) |
users | json | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt) |
interviewSchedules | json | List of interview schedules (id, applicationId, interviewStageId, interviewEvents[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt) |
interviewPlans | json | Interview plans (id, title, isArchived, createdAt, updatedAt) |
interviewStages | json | Ordered interview stages for a plan |
feedback | json | Submitted application feedback with form definitions and values |
history | json | Application stage history and allowed actions |
tags | json | List of candidate tags (id, title, isArchived) |
id | string | Resource UUID |
name | string | Resource name |
title | string | Job title or job posting title |
status | string | Status |
candidate | json | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations. |
job | json | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam[], author, location, openings[], createdAt, updatedAt) |
application | json | Application details (id, status, customFields[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam[], createdAt, updatedAt) |
offer | json | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion) |
jobPosting | json | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job [included when expandJob=true]) |
content | string | Note content |
author | json | Note author (id, firstName, lastName, email) |
isPrivate | boolean | Whether the note is private |
createdAt | string | ISO 8601 creation timestamp |
applicationId | string | UUID of the deleted application |
moreDataAvailable | boolean | Whether more pages exist |
nextCursor | string | Pagination cursor for next page |
nextSyncCursor | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output |
Securely uploads a resume and sets it as the Ashby candidate resume.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Ashby API Key |
candidateId | string | Yes | Candidate UUID |
file | file | Yes | Stored resume file |
fileName | string | No | Optional filename override |
onBehalfOfUserId | string | No | Active Ashby user UUID to attribute this mutation to |
| Parameter | Type | Description |
|---|
candidates | json | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses[], phoneNumbers[], socialLinks[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents[], tags[], applicationIds[], customFields[], resumeFileHandle, fileHandles[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
jobs | json | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds[], customFields[], jobPostingIds[], customRequisitionId, brandId, hiringTeam[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings[] with latestVersion) |
applications | json | List of applications (id, status, customFields[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields[], archivedAt, job summary, creditedToUser, hiringTeam[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt) |
notes | json | List of notes (id, content, author, isPrivate, createdAt) |
offers | json | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields[]/fileHandles[]/author/approvalStatus) |
archiveReasons | json | List of archive reasons (id, text, reasonType [RejectedByCandidate/RejectedByOrg/Other], isArchived) |
sources | json | List of sources (id, title, isArchived, sourceType {id, title, isArchived}) |
customFields | json | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues[] {label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) |
customField | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) |
departments | json | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt) |
locations | json | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress) |
jobPostings | json | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt) |
openings | json | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds[]/hiringTeam[]/customFields[]) |
users | json | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt) |
interviewSchedules | json | List of interview schedules (id, applicationId, interviewStageId, interviewEvents[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt) |
interviewPlans | json | Interview plans (id, title, isArchived, createdAt, updatedAt) |
interviewStages | json | Ordered interview stages for a plan |
feedback | json | Submitted application feedback with form definitions and values |
history | json | Application stage history and allowed actions |
tags | json | List of candidate tags (id, title, isArchived) |
id | string | Resource UUID |
name | string | Resource name |
title | string | Job title or job posting title |
status | string | Status |
candidate | json | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations. |
job | json | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam[], author, location, openings[], createdAt, updatedAt) |
application | json | Application details (id, status, customFields[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam[], createdAt, updatedAt) |
offer | json | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion) |
jobPosting | json | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job [included when expandJob=true]) |
content | string | Note content |
author | json | Note author (id, firstName, lastName, email) |
isPrivate | boolean | Whether the note is private |
createdAt | string | ISO 8601 creation timestamp |
applicationId | string | UUID of the deleted application |
moreDataAvailable | boolean | Whether more pages exist |
nextCursor | string | Pagination cursor for next page |
nextSyncCursor | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output |
A Trigger is a block that starts a workflow when an event happens in this service.
Trigger workflow when a new application is submitted
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | API Key |
| Parameter | Type | Description |
|---|
action | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
webhookActionId | string | Ashby delivery identifier, stable across retries |
application | object | application output from the tool |
↳ id | string | Application UUID |
↳ createdAt | string | Application creation timestamp (ISO 8601) |
↳ updatedAt | string | Application last update timestamp (ISO 8601) |
↳ status | string | Application status (Active, Hired, Archived, Lead) |
↳ candidate | object | candidate output from the tool |
↳ id | string | Candidate UUID |
↳ name | string | Candidate name |
↳ currentInterviewStage | object | currentInterviewStage output from the tool |
↳ id | string | Current interview stage UUID |
↳ title | string | Current interview stage title |
↳ stageType | string | Current interview stage type (e.g., Lead, Applied, Interview, Offer) |
↳ job | object | job output from the tool |
↳ id | string | Job UUID |
↳ title | string | Job title |
Trigger workflow when an application is updated
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | API Key |
| Parameter | Type | Description |
|---|
action | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
webhookActionId | string | Ashby delivery identifier, stable across retries |
application | object | application output from the tool |
↳ id | string | Application UUID |
↳ createdAt | string | Application creation timestamp (ISO 8601) |
↳ updatedAt | string | Application last update timestamp (ISO 8601) |
↳ status | string | Application status (Active, Hired, Archived, Lead) |
↳ candidate | object | candidate output from the tool |
↳ id | string | Candidate UUID |
↳ name | string | Candidate name |
↳ currentInterviewStage | object | currentInterviewStage output from the tool |
↳ id | string | Current interview stage UUID |
↳ title | string | Current interview stage title |
↳ stageType | string | Current interview stage type (e.g., Lead, Applied, Interview, Offer) |
↳ job | object | job output from the tool |
↳ id | string | Job UUID |
↳ title | string | Job title |
Trigger workflow when a candidate is deleted
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | API Key |
| Parameter | Type | Description |
|---|
action | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
webhookActionId | string | Ashby delivery identifier, stable across retries |
candidate | object | candidate output from the tool |
↳ id | string | Deleted candidate UUID |
Trigger workflow when a candidate is hired
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | API Key |
| Parameter | Type | Description |
|---|
action | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
webhookActionId | string | Ashby delivery identifier, stable across retries |
application | object | application output from the tool |
↳ id | string | Application UUID |
↳ createdAt | string | Application creation timestamp (ISO 8601) |
↳ updatedAt | string | Application last update timestamp (ISO 8601) |
↳ status | string | Application status (Hired) |
↳ candidate | object | candidate output from the tool |
↳ id | string | Candidate UUID |
↳ name | string | Candidate name |
↳ currentInterviewStage | object | currentInterviewStage output from the tool |
↳ id | string | Current interview stage UUID |
↳ title | string | Current interview stage title |
↳ stageType | string | Current interview stage type (e.g., Lead, Applied, Interview, Offer) |
↳ job | object | job output from the tool |
↳ id | string | Job UUID |
↳ title | string | Job title |
offer | object | offer output from the tool |
↳ id | string | Accepted offer UUID |
↳ applicationId | string | Associated application UUID |
↳ acceptanceStatus | string | Offer acceptance status |
↳ offerStatus | string | Offer process status |
↳ decidedAt | string | Offer decision timestamp (ISO 8601) |
↳ latestVersion | object | latestVersion output from the tool |
↳ id | string | Latest offer version UUID |
Trigger workflow when two candidate records are merged
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | API Key |
| Parameter | Type | Description |
|---|
action | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
webhookActionId | string | Ashby delivery identifier, stable across retries |
deletedCandidate | object | deletedCandidate output from the tool |
↳ id | string | Deleted candidate UUID |
mergedCandidate | object | mergedCandidate output from the tool |
↳ id | string | Final merged candidate UUID |
Trigger workflow when a candidate changes interview stages
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | API Key |
| Parameter | Type | Description |
|---|
action | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
webhookActionId | string | Ashby delivery identifier, stable across retries |
application | object | application output from the tool |
↳ id | string | Application UUID |
↳ createdAt | string | Application creation timestamp (ISO 8601) |
↳ updatedAt | string | Application last update timestamp (ISO 8601) |
↳ status | string | Application status (Active, Hired, Archived, Lead) |
↳ candidate | object | candidate output from the tool |
↳ id | string | Candidate UUID |
↳ name | string | Candidate name |
↳ currentInterviewStage | object | currentInterviewStage output from the tool |
↳ id | string | Current interview stage UUID |
↳ title | string | Current interview stage title |
↳ stageType | string | Current interview stage type (e.g., Lead, Applied, Interview, Offer) |
↳ job | object | job output from the tool |
↳ id | string | Job UUID |
↳ title | string | Job title |
Trigger workflow when an interview schedule is created
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | API Key |
| Parameter | Type | Description |
|---|
action | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
webhookActionId | string | Ashby delivery identifier, stable across retries |
interviewSchedule | object | interviewSchedule output from the tool |
↳ id | string | Interview schedule UUID |
↳ status | string | Interview schedule status |
↳ applicationId | string | Application UUID |
↳ interviewStageId | string | Interview stage UUID |
↳ scheduledBy | json | Scheduling user |
↳ createdAt | string | Creation timestamp |
↳ updatedAt | string | Last update timestamp |
↳ interviewEvents | json | Scheduled interview events |
Trigger workflow when an interview schedule is updated
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | API Key |
| Parameter | Type | Description |
|---|
action | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
webhookActionId | string | Ashby delivery identifier, stable across retries |
interviewSchedule | object | interviewSchedule output from the tool |
↳ id | string | Interview schedule UUID |
↳ status | string | Interview schedule status |
↳ applicationId | string | Application UUID |
↳ interviewStageId | string | Interview stage UUID |
↳ candidateId | string | Candidate UUID |
↳ scheduledBy | json | Scheduling user |
↳ createdAt | string | Creation timestamp |
↳ updatedAt | string | Last update timestamp |
↳ interviewEvents | json | Scheduled interview events |
Trigger workflow when a new job is created
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | API Key |
| Parameter | Type | Description |
|---|
action | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
webhookActionId | string | Ashby delivery identifier, stable across retries |
job | object | job output from the tool |
↳ id | string | Job UUID |
↳ title | string | Job title |
↳ confidential | boolean | Whether the job is confidential |
↳ status | string | Job status (Open, Closed, Draft, Archived) |
↳ employmentType | string | Employment type (FullTime, PartTime, Intern, Contract, Temporary) |
Trigger workflow when a job posting is deleted
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | API Key |
| Parameter | Type | Description |
|---|
action | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
webhookActionId | string | Ashby delivery identifier, stable across retries |
jobPosting | object | jobPosting output from the tool |
↳ id | string | Deleted job posting UUID |
↳ jobId | string | Associated job UUID |
Trigger workflow when a job posting is updated
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | API Key |
| Parameter | Type | Description |
|---|
action | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
webhookActionId | string | Ashby delivery identifier, stable across retries |
jobPosting | object | jobPosting output from the tool |
↳ id | string | Job posting UUID |
↳ title | string | Job posting title |
↳ jobId | string | Associated job UUID |
↳ departmentName | string | Department name |
↳ teamName | string | Team name |
↳ teamNameHierarchy | json | Department-to-team name hierarchy |
↳ locationName | string | Location name |
↳ isListed | boolean | Whether publicly listed |
↳ publishedDate | string | Publication timestamp |
↳ updatedAt | string | Last update timestamp |
Trigger workflow when a job is updated
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | API Key |
| Parameter | Type | Description |
|---|
action | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
webhookActionId | string | Ashby delivery identifier, stable across retries |
job | object | job output from the tool |
↳ id | string | Job UUID |
↳ title | string | Job title |
↳ confidential | boolean | Whether the job is confidential |
↳ status | string | Job status (Open, Closed, Draft, Archived) |
↳ employmentType | string | Employment type (FullTime, PartTime, Intern, Contract, Temporary) |
Trigger workflow when a new offer is created
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | API Key |
| Parameter | Type | Description |
|---|
action | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
webhookActionId | string | Ashby delivery identifier, stable across retries |
offer | object | offer output from the tool |
↳ id | string | Offer UUID |
↳ applicationId | string | Associated application UUID |
↳ acceptanceStatus | string | Offer acceptance status (Accepted, Declined, Pending, Created, Cancelled) |
↳ offerStatus | string | Offer process status (WaitingOnApprovalStart, WaitingOnOfferApproval, WaitingOnApprovalDefinition, WaitingOnCandidateResponse, CandidateRejected, CandidateAccepted, OfferCancelled) |
↳ decidedAt | string | Offer decision timestamp (ISO 8601). Typically null at creation; populated after candidate responds. |
↳ latestVersion | object | latestVersion output from the tool |
↳ id | string | Latest offer version UUID |
Trigger workflow when an offer is deleted
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | API Key |
| Parameter | Type | Description |
|---|
action | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
webhookActionId | string | Ashby delivery identifier, stable across retries |
offer | object | offer output from the tool |
↳ id | string | Deleted offer UUID |
↳ applicationId | string | Associated application UUID |
Trigger workflow when an offer is updated
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | API Key |
| Parameter | Type | Description |
|---|
action | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
webhookActionId | string | Ashby delivery identifier, stable across retries |
offer | object | offer output from the tool |
↳ id | string | Offer UUID |
↳ applicationId | string | Associated application UUID |
↳ acceptanceStatus | string | Offer acceptance status (Accepted, Declined, Pending, Created, Cancelled) |
↳ offerStatus | string | Offer process status (WaitingOnApprovalStart, WaitingOnOfferApproval, WaitingOnApprovalDefinition, WaitingOnCandidateResponse, CandidateRejected, CandidateAccepted, OfferCancelled) |
↳ decidedAt | string | Offer decision timestamp (ISO 8601). Typically null at creation; populated after candidate responds. |
↳ latestVersion | object | latestVersion output from the tool |
↳ id | string | Latest offer version UUID |
Trigger workflow when a headcount opening is created
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | API Key |
| Parameter | Type | Description |
|---|
action | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
webhookActionId | string | Ashby delivery identifier, stable across retries |
opening | object | opening output from the tool |
↳ id | string | Opening UUID |
↳ openedAt | string | Open timestamp |
↳ closedAt | string | Close timestamp |
↳ isArchived | boolean | Whether archived |
↳ archivedAt | string | Archive timestamp |
↳ closeReasonId | string | Close reason UUID |
↳ openingState | string | Opening state |
↳ latestVersion | json | Latest opening version |
Trigger workflow when an e-signature request changes state
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | API Key |
| Parameter | Type | Description |
|---|
action | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
webhookActionId | string | Ashby delivery identifier, stable across retries |
relatedEntityType | string | Related entity type: application or offer |
applicationId | string | Related application UUID |
offerId | string | Related offer UUID |
offerVersionId | string | Related offer version UUID |
eventType | string | Signature request event: sent, cancelled, completed, or deleted |