# Ashby

Ashby delivers an applicant tracking system for modern teams, offering features like job postings, candidate management, and data-driven hiring insights to streamline the recruitment process

- **Category:** hr talent & recruitment
- **Auth:** API_KEY
- **Composio Managed App Available?** N/A
- **Tools:** 125
- **Triggers:** 0
- **Slug:** `ASHBY`
- **Version:** 20260316_00

## Tools

### Add Candidate to Project

**Slug:** `ASHBY_ADD_CANDIDATE_PROJECT`

Add a candidate to a project in Ashby. Projects are sourcing initiatives or recruiting campaigns used to organize and track candidate pipelines. Use this to associate candidates with specific sourcing efforts. Common use cases: - Adding sourced candidates to recruiting campaigns - Organizing candidates by sourcing channel or initiative - Tracking candidates in specific hiring projects Requires candidatesWrite permission. Returns the updated candidate object on success, or error details if the candidate or project is not found.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `projectId` | string | Yes | UUID of the project to associate the candidate with. Use LIST_PROJECTS or SEARCH_PROJECTS to find project IDs. Projects are sourcing initiatives or recruiting campaigns. |
| `candidateId` | string | Yes | UUID of the candidate to add to the project. Use LIST_CANDIDATES or SEARCH_CANDIDATES to find candidate IDs. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Add Candidate Tag

**Slug:** `ASHBY_ADD_CANDIDATE_TAG`

Add a tag to a candidate in Ashby. Use this to categorize and organize candidates with existing tags from the system. This action allows you to apply labels/tags to candidates for filtering, searching, and organizational purposes. Tags must already exist in the system - use LIST_CANDIDATE_TAGS to view available tags or CREATE_CANDIDATE_TAG to create new ones. The response includes the full updated candidate object when successful, showing the newly added tag in the candidate's tags array. If a candidate already has the tag, the operation will still succeed idempotently.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tagId` | string | Yes | The ID of the tag to add to the candidate. Use LIST_CANDIDATE_TAGS to get available tag IDs, or CREATE_CANDIDATE_TAG to create a new tag. |
| `candidateId` | string | Yes | The unique identifier of the candidate. Use LIST_CANDIDATES or GET_CANDIDATE_INFO to obtain valid candidate IDs. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Add Hiring Team Member

**Slug:** `ASHBY_ADD_HIRING_TEAM_MEMBER`

Add an Ashby user to a hiring team at the application, job, or opening level. Use this when you need to assign a team member to participate in the hiring process with a specific role. Requires the organizationWrite permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `jobId` | string | No | ID of the job to add team member to. Either applicationId, jobId, or openingId must be provided, but not multiple. |
| `roleId` | string | Yes | ID of the hiring team role to assign to the user. This must be a valid UUID from your organization's hiring team roles. |
| `openingId` | string | No | ID of the opening to add team member to. Either applicationId, jobId, or openingId must be provided, but not multiple. |
| `teamMemberId` | string | Yes | ID of the Ashby user to add to the hiring team. |
| `applicationId` | string | No | ID of the application to add team member to. Either applicationId, jobId, or openingId must be provided, but not multiple. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Add User to Interviewer Pool

**Slug:** `ASHBY_ADD_INTERVIEWER_POOL_USER`

Add a user to an interviewer pool. Use this to assign interviewers to interview pools for scheduling and coordination. Requires the hiringProcessMetadataWrite permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `userId` | string | Yes | UUID of the user to add to the interviewer pool |
| `interviewerPoolId` | string | Yes | UUID of the interviewer pool to add the user to |
| `interviewerPoolTrainingPathStageId` | string | No | Optional UUID of the training path stage to assign the user to within the interviewer pool. If provided, the user will be added as a trainee at this stage. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Add Opening Job

**Slug:** `ASHBY_ADD_OPENING_JOB`

Adds a job to an opening (job requisition) in Ashby ATS. An opening represents a position to be filled, while a job defines the role details. This action associates an existing job with an existing opening, allowing multiple jobs to be linked to a single opening. Use this when you need to add job definitions to an opening or when creating multi-role requisitions. Requires the jobsWrite permission. On success, returns the updated opening with the job added to its jobIds array. On failure, returns error details with specific error codes.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `jobId` | string | Yes | The unique identifier of the job to be added to the opening |
| `openingId` | string | Yes | The unique identifier of the opening to add the job to |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Add Opening Location

**Slug:** `ASHBY_ADD_OPENING_LOCATION`

Tool to add a location to an opening (job requisition). Use when you need to associate a location with an existing opening. Requires the jobsWrite permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `openingId` | string | Yes | The UUID of the opening to add the location to |
| `locationId` | string | Yes | The UUID of the location to add to the opening |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Anonymize Candidate

**Slug:** `ASHBY_ANONYMIZE_CANDIDATE`

Anonymize a candidate by removing personally identifiable information. Use this when you need to permanently anonymize a candidate's data. This action cannot be reversed and requires all of the candidate's applications to be in the archived or hired state.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `candidateId` | string | Yes | The unique identifier of the candidate to anonymize. All of the candidate's applications must be in the archived or hired state. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Approve Offer

**Slug:** `ASHBY_APPROVE_OFFER`

Approve an offer or a specific approval step within an offer's approval process. This action supports two modes: - Complete offer approval: Provide only offerId to approve the entire offer - Step-specific approval: Provide offerId, approvalStepId, and userId to approve a specific step When approving a specific step, both approvalStepId and userId are required together. Requires the 'offersWrite' permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `userId` | string | No | Unique identifier (UUID) of the user performing the step-specific approval. Required when approving a specific step (must be used with approvalStepId). |
| `offerId` | string | Yes | Unique identifier (UUID) for the offer to approve. Required for all approval operations. |
| `approvalStepId` | string | No | Unique identifier (UUID) for a particular approval step. Required when approving a specific step (must be used with userId). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Archive Department

**Slug:** `ASHBY_ARCHIVE_DEPARTMENT`

Archive a department by its unique identifier. Archiving a department marks it as inactive while preserving all its data and historical records. Archived departments are excluded from active department lists by default but can be restored later using the restore department action. This action is idempotent - archiving an already archived department will succeed and return the same result. Required permission: organizationWrite

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `departmentId` | string | Yes | The unique identifier of the department to archive |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Archive Interviewer Pool

**Slug:** `ASHBY_ARCHIVE_INTERVIEWER_POOL`

Archive an interviewer pool in Ashby. This marks the pool as archived, making it unavailable for new interview assignments while preserving historical data. Use this when an interviewer pool is no longer needed (e.g., for deprecated roles or outdated interview formats). The operation is idempotent - archiving an already archived pool will succeed without errors. Requires the hiringProcessMetadataWrite permission. To restore an archived pool, use the ASHBY_RESTORE_INTERVIEWER_POOL action.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `interviewerPoolId` | string | Yes | The unique identifier (UUID) of the interviewer pool to archive. You can get this ID from LIST_INTERVIEWER_POOLS or GET_INTERVIEWER_POOL_INFO actions. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Archive Location

**Slug:** `ASHBY_ARCHIVE_LOCATION`

Archives a location or location hierarchy in Ashby. When archived, the location is marked as inactive (isArchived=true) and typically becomes unavailable for new job postings or assignments. The operation is idempotent - archiving an already archived location succeeds without error. Requires the organizationWrite permission. Common use cases: - Decommissioning office locations that are no longer in use - Removing obsolete location entries from active use - Managing location lifecycle when restructuring office locations Note: Use restore_location to unarchive a location if needed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `locationId` | string | Yes | The unique identifier (UUID) of the location to archive. Can be obtained from list_locations or other location endpoints. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Change Application Source

**Slug:** `ASHBY_CHANGE_APPLICATION_SOURCE`

Change the source attribution of an application. Use this to update which source and user should be credited for bringing in the candidate.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `sourceId` | string | Yes | The ID of the source to assign to the application |
| `applicationId` | string | Yes | The unique identifier of the application to update |
| `creditedToUserId` | string | No | The ID of the user to credit for sourcing this application |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Change Application Stage

**Slug:** `ASHBY_CHANGE_APPLICATION_STAGE`

Move an application to a different interview stage in the hiring pipeline. Use this to: - Advance candidates to the next interview stage (e.g., from "Application Review" to "First Round") - Move candidates to any stage within their job's interview plan (forward or backward) - Archive applications by moving to an Archived stage (requires archiveReasonId) - Move to Offer or Hired stages when progressing candidates Important: The interview stage must belong to the same interview plan as the application's job. Use LIST_INTERVIEW_STAGES with the application's job interview plan ID to get valid stage options.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `applicationId` | string | Yes | The unique UUID of the application to update (obtain from LIST_APPLICATIONS or GET_APPLICATION_INFO) |
| `archiveReasonId` | string | No | Archive reason UUID - REQUIRED when moving to an Archived interview stage type. Optional for all other stage types. Obtain from LIST_ARCHIVE_REASONS. |
| `interviewStageId` | string | Yes | The UUID of the target interview stage to move the application to (obtain from LIST_INTERVIEW_STAGES for the application's job interview plan) |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Application

**Slug:** `ASHBY_CREATE_APPLICATION`

Create a new job application by associating a candidate with a job opening in Ashby ATS. Use this action to: - Add a candidate to a job's hiring pipeline and interview process - Track the source of the application (referral, job board, etc.) - Credit a user (recruiter/referrer) for bringing in the candidate - Place the candidate directly into a specific interview stage (optional) The created application will automatically be assigned to the job's hiring team and start tracking the candidate's progress through the interview stages. Required: candidateId and jobId must reference existing entities in Ashby.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `jobId` | string | Yes | UUID of the job position to apply the candidate to. Must be an existing job ID obtained from job listing endpoints. |
| `sourceId` | string | No | UUID of the source that referred or brought in this candidate (e.g., LinkedIn, Referral, Job Board). Optional - if not provided, the application will have no associated source. |
| `candidateId` | string | Yes | UUID of the candidate to create an application for. Must be an existing candidate ID obtained from candidate creation or listing endpoints. |
| `creditedToUserId` | string | No | UUID of the user who should receive credit for this application (e.g., recruiter or referrer). Optional - if not provided, no user will be credited. |
| `interviewStageId` | string | No | UUID of the interview stage to initially place the application in. Must be a valid stage from the job's interview plan. Optional - if not provided, the candidate will be placed in the default first stage (typically 'New Lead'). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Candidate

**Slug:** `ASHBY_CREATE_CANDIDATE`

Create a new candidate in the system. Use this to add candidates with their contact information and social profiles before applying them to jobs.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Full name of the candidate |
| `email` | string | No | Primary email address of the candidate |
| `githubUrl` | string | No | GitHub profile URL of the candidate |
| `websiteUrl` | string | No | Personal website URL of the candidate |
| `linkedInUrl` | string | No | LinkedIn profile URL of the candidate |
| `phoneNumber` | string | No | Phone number of the candidate |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Candidate Note

**Slug:** `ASHBY_CREATE_CANDIDATE_NOTE`

Create a note on a candidate profile. Use this to add comments, observations, or feedback about a candidate during the recruitment process.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `note` | string | Yes | The note content. Can be a plain text string or an object with 'value' and 'type' properties. For HTML notes (type='text/html'), supported elements include: <b>, <i>, <u>, <a>, <ul>, <ol>, <li>, <code>, <pre>. Unsupported elements will be stripped. |
| `candidateId` | string | Yes | The unique identifier of the candidate to add the note to |
| `sendNotifications` | boolean | No | Whether to send notifications about this note to relevant team members. If not specified, follows the default notification settings. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Candidate Tag

**Slug:** `ASHBY_CREATE_CANDIDATE_TAG`

Create a new candidate tag in Ashby for categorizing and organizing candidates. Tags are labels that help you filter, search, and group candidates for better organization and workflow management. Use this action to create custom tags based on skills, experience levels, departments, or any other criteria relevant to your hiring process. Returns the newly created tag with its unique ID, title, and archived status. Tags are created in an active (non-archived) state by default.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `title` | string | Yes | The title/name of the tag. Must be a non-empty string. Examples: 'Engineering', 'Senior Leadership', 'Remote-First' |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Custom Field

**Slug:** `ASHBY_CREATE_CUSTOM_FIELD`

Create a new custom field in Ashby. Custom fields allow you to track additional structured data on Ashby objects like candidates, applications, and jobs. This action creates the field definition that can then be populated with values using the set custom field value actions. Supported field types: - String: Free text input - Number: Numeric values - Boolean: True/false values - Date: Date values (optionally date-only without time) - ValueSelect: Single selection from predefined options - MultiValueSelect: Multiple selections from predefined options - Employee: Reference to an Ashby employee (limited object type support) Note: ValueSelect and MultiValueSelect field types require the selectableValues parameter. Requires the hiringProcessMetadataWrite permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `title` | string | Yes | The name/title of the custom field |
| `fieldType` | string | Yes | The type of custom field. Valid values: String, Number, Boolean, Date, ValueSelect, MultiValueSelect, Employee |
| `objectType` | string | Yes | The type of object this custom field applies to. Common values include: Candidate, Application, Job. Note: Not all field types are supported on all object types. |
| `description` | string | No | Optional description of the custom field |
| `isDateOnlyField` | boolean | No | Whether the field is date-only (no time). Only applicable when fieldType is Date. |
| `selectableValues` | array | No | Array of selectable values with 'label' and 'value' keys. Required for ValueSelect and MultiValueSelect field types. Each item must have 'label' and 'value' keys. |
| `isExposableToCandidate` | boolean | No | Whether the field can be exposed to candidates |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Department

**Slug:** `ASHBY_CREATE_DEPARTMENT`

Create a new department. Use this to add organizational departments or teams for structuring jobs and hierarchy.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | The name of the department |
| `parentId` | string | No | The ID of the parent department (for nested departments) |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Interviewer Pool

**Slug:** `ASHBY_CREATE_INTERVIEWER_POOL`

Create a new interviewer pool. Use this to organize interviewers into groups by expertise or interview type. Requires the hiringProcessMetadataWrite permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `title` | string | Yes | The title/name of the interviewer pool |
| `requiresTraining` | boolean | No | Indicates whether the pool requires training before members can participate |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Job

**Slug:** `ASHBY_CREATE_JOB`

Create a new job opening in Ashby ATS. Use this action to: - Add a new role to your organization with a title, department, location, and brand - Set up the job structure before publishing or opening it to candidates - Optionally assign a default interview plan to define the hiring process Important notes: - Newly created jobs start in 'Draft' status and cannot accept applications yet - To open the job for applications, you must set a defaultInterviewPlanId either during creation or update it later - Use LIST_DEPARTMENTS, LIST_LOCATIONS, LIST_BRAND, and LIST_INTERVIEW_PLANS actions to get valid IDs - The job creator is automatically set as the author

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `title` | string | Yes | The job title (e.g., 'Senior Software Engineer', 'Product Manager') |
| `teamId` | string | Yes | The department/team ID from LIST_DEPARTMENTS action. Jobs are organized under departments in the org hierarchy |
| `brandId` | string | Yes | The brand ID from LIST_BRAND action. Brand defines employer branding for job postings |
| `locationId` | string | Yes | The location ID from LIST_LOCATIONS action where this job is based (office location or remote) |
| `jobTemplateId` | string | No | The job template ID to pre-populate job details. Only active templates are allowed |
| `defaultInterviewPlanId` | string | No | The interview plan ID from LIST_INTERVIEW_PLANS action. Required to open/publish the job. Defines the interview process and stages |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Location

**Slug:** `ASHBY_CREATE_LOCATION`

Create a new location or location hierarchy. Use this to add office locations, remote work settings, or nested location structures for organizational management.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | The name of the location |
| `type` | string | Yes | The type of location. Must be 'Location' |
| `address` | object | No | Location address. |
| `isRemote` | boolean | No | Boolean indicating if this is a remote location |
| `workplaceType` | string ("Hybrid" | "OnSite") | No | Workplace type. Valid values: 'Hybrid' or 'OnSite' |
| `parentLocationId` | string | No | ID of parent location for creating hierarchies. Note: parent location must support hierarchy to be used as a parent |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Offer

**Slug:** `ASHBY_CREATE_OFFER`

Create a new offer for a candidate in Ashby ATS. Use this to generate formal job offers with all required field values after starting an offer process and obtaining the form definition. Prerequisites: Must first call offerProcess.start to get offerProcessId, then offer.start to get offerFormId and field definitions. Date fields must use YYYY-MM-DD format (not ISO timestamp).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `offerForm` | object | Yes | The offer form data containing all field submissions. Each field submission includes a path (field UUID) and value based on the field type (date, currency, number, string, boolean, or select). |
| `offerFormId` | string | Yes | The UUID of the form associated with the offer. This value is the id included in the response of the offer.start API. The form defines which fields need to be filled for the offer. |
| `offerProcessId` | string | Yes | The UUID of the offer process associated with the offer you're creating. This value is the id included in the response of the offerProcess.start API. Each offer must be associated with an active offer process. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Opening

**Slug:** `ASHBY_CREATE_OPENING`

Create a new opening (job requisition) in Ashby ATS. An opening represents a job requisition - a request to hire for a specific position. All parameters are optional, but typically you'll want to provide at least a title, job IDs, and location IDs for a meaningful opening. Use this action to: - Create a new job opening with specific requirements - Associate openings with existing jobs, locations, and teams - Set hiring targets, employment type, and opening state - Track backfill positions vs new roles Required permission: openingsWrite Note: To get valid IDs for teamId, locationIds, and jobIds, use the corresponding List Departments, List Locations, and List Jobs actions.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `title` | string | No | Title of the opening |
| `jobIds` | array | No | Array of job IDs (UUIDs) to associate with the opening. Use List Jobs action to get valid job IDs. |
| `teamId` | string | No | Department/team ID (UUID) to associate with the opening. Use List Departments action to get valid team IDs. |
| `identifier` | string | No | Opening identifier (custom reference code) |
| `isBackfill` | boolean | No | Boolean indicating if this is a backfill position |
| `description` | string | No | Description of the opening |
| `locationIds` | array | No | Array of location IDs (UUIDs) for the opening. Use List Locations action to get valid location IDs. |
| `openingState` | string | No | State of the opening. Valid values: Draft, Open, Closed, Approved, Filled |
| `employmentType` | string | No | Type of employment. Valid values: FullTime, PartTime, Intern, Contract, Temporary |
| `targetHireDate` | string | No | Target date for hiring (ISO 8601 date format) |
| `targetStartDate` | string | No | Target start date for the hire (ISO 8601 date format) |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Referral

**Slug:** `ASHBY_CREATE_REFERRAL`

Create a referral in Ashby ATS by submitting a referral form with candidate information. Use this action to formally submit employee referrals for job openings, which creates both a candidate record (if new) and an application linked to the specified job.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The referral form ID. Use the get_referral_form action to retrieve the default form ID. |
| `createdAt` | string | No | Optional timestamp for when the referral was created (ISO 8601 format) |
| `creditedToUserId` | string | Yes | The ID of the user submitting the referral. Use the list_users action to get valid user IDs. |
| `fieldSubmissions` | array | Yes | Array of field submissions. Required fields depend on the form definition but typically include: '_systemfield.job' (job ID from list_jobs), '_systemfield_name' (candidate name), '_systemfield_email' (candidate email), and any custom fields from the form definition. Each item has 'path' (the field identifier) and 'value' (the submitted value). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Survey Request

**Slug:** `ASHBY_CREATE_SURVEY_REQUEST`

Generate a survey request and receive a survey URL to send to a candidate. Use this when you need to collect feedback or information from candidates via a survey. Requires candidatesWrite permission. Note that calling this endpoint does not automatically email the survey to the candidate.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `candidateId` | string | Yes | The unique identifier (UUID) for the candidate |
| `applicationId` | string | Yes | The unique identifier (UUID) for the application |
| `surveyFormDefinitionId` | string | Yes | The unique identifier (UUID) for the survey form definition to be used |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Survey Submission

**Slug:** `ASHBY_CREATE_SURVEY_SUBMISSION`

Create a new survey submission for a candidate's application. Use this to submit candidate survey responses programmatically, such as candidate experience ratings or feedback forms. Requires the candidatesWrite permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `candidateId` | string | Yes | The UUID of the candidate for whom the survey submission is being created |
| `applicationId` | string | Yes | The UUID of the application associated with the survey submission |
| `submittedValues` | object | Yes | An object containing the survey responses as key-value pairs. Keys are field identifiers (e.g., '_systemfield_overall_candexp_rating') and values are the submitted responses. MultiValueSelect fields accept lists of strings, while single-value fields accept scalar values (str, int, float, bool, or null) |
| `surveyFormDefinitionId` | string | Yes | The UUID of the survey form definition to use for this submission |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get API Key Info

**Slug:** `ASHBY_GET_API_KEY_INFO`

Retrieve information about the current API key, including associated organization, user details, and permissions. Use this to verify API key validity and check what access level the key has. Useful as a prerequisite check before write operations (e.g., ASHBY_UPDATE_CANDIDATE) or list operations (e.g., ASHBY_LIST_APPLICATIONS) to confirm the key has required scopes.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Application Info

**Slug:** `ASHBY_GET_APPLICATION_INFO`

Retrieve detailed information about a specific application by its ID. Returns complete details including candidate info, interview stages, and hiring team nested under data.results. To find a recruiting coordinator, match hiringTeam entries where role == "Recruiting Coordinator" (exact string). Optional fields such as primaryEmailAddress may be null; handle accordingly.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `applicationId` | string | Yes | The unique identifier of the application A single candidate may have multiple application IDs; only call for relevant IDs rather than every ID from a bulk list. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Candidate Info

**Slug:** `ASHBY_GET_CANDIDATE_INFO`

Retrieve detailed information about a specific candidate by their ID. This action returns comprehensive candidate data including: - Basic information (name, position, company, school) - Contact details (email addresses, phone numbers) - Social profiles (LinkedIn, etc.) - Associated applications and tags - Custom field values - Source and credited user information - Location and timezone - Profile URL Use this when you need complete details about a specific candidate. To find candidate IDs, use the list_candidates or search_candidates actions first.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `candidateId` | string | Yes | The unique identifier (UUID) of the candidate to retrieve. Can be obtained from list_candidates or search_candidates actions. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Custom Field Info

**Slug:** `ASHBY_GET_CUSTOM_FIELD_INFO`

Retrieve detailed information about a specific custom field by its ID. Use this to get custom field details including title, object type, field type, and selectable values. Requires the hiringProcessMetadataRead permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `customFieldId` | string | Yes | The UUID of the custom field to retrieve information about |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Department Info

**Slug:** `ASHBY_GET_DEPARTMENT_INFO`

Retrieve detailed information about a specific department by its ID. Returns comprehensive department details including: - Department name (internal and external) - Parent department relationship (parentId for hierarchical structure) - Archive status (isArchived) - Creation and last update timestamps Use this action when you need information about a specific department (e.g., to verify a department exists, check its archive status, or understand organizational hierarchy). For listing all departments or finding department IDs, use the List Departments action instead. Requires 'organizationRead' permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `departmentId` | string | Yes | The unique identifier (UUID) of the department to retrieve. Get valid department IDs using the List Departments action. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Feedback Form Definition

**Slug:** `ASHBY_GET_FEEDBACK_FORM_DEFINITION`

Retrieve detailed information about a specific feedback form definition by its ID. Use this action to: - Get the complete structure of a feedback form including all sections and fields - View field types (ValueSelect, MultiValueSelect, Boolean, RichText) and their configurations - Check if a form is the default form or a custom scorecard - See which interview the form is linked to (if any) - Access selectable values and field metadata for form rendering To find available feedback form IDs, use the List Feedback Form Definitions action first. Requires the hiringProcessMetadataRead permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `feedbackFormDefinitionId` | string | Yes | The unique identifier of the feedback form definition. Use the List Feedback Form Definitions action to discover available form IDs. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get File Info

**Slug:** `ASHBY_GET_FILE_INFO`

Retrieve the URL of a file associated with a candidate. Use this to get a pre-signed S3 URL for accessing candidate files like resumes. Requires the candidatesRead permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `fileHandle` | string | Yes | A file handle string retrieved from the public API. This is typically found in the 'fileHandles' array or 'resumeFileHandle' field in candidate.list or candidate.info responses. The handle is a base64-encoded string containing file metadata and signature. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Interviewer Pool Info

**Slug:** `ASHBY_GET_INTERVIEWER_POOL_INFO`

Retrieve detailed information about a specific interviewer pool by its ID. Returns comprehensive pool information including: - Basic details (ID, title, archived status) - Qualified members who can conduct interviews - Trainees currently in training - Training path configuration with stages and requirements Use this to view interviewer pool composition, training programs, and member status for scheduling interviews or managing interviewer assignments.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `interviewerPoolId` | string | Yes | The unique identifier (UUID) of the interviewer pool to retrieve |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Interviewer User Settings

**Slug:** `ASHBY_GET_INTERVIEWER_USER_SETTINGS`

Get interviewer settings for a specific user by their ID. Use this to retrieve daily and weekly interview limits configured for the user. Requires the organizationRead permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `userId` | string | Yes | The unique identifier of the user to get interviewer settings for |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Interview Info

**Slug:** `ASHBY_GET_INTERVIEW_INFO`

Retrieve detailed information about a specific interview type by its ID. Use this to get interview details including title, instructions, and feedback form configuration.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `interviewId` | string | Yes | The unique identifier (UUID) of the interview type to retrieve. Use the 'List Interviews' action to get available interview IDs. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Interview Stage Info

**Slug:** `ASHBY_GET_INTERVIEW_STAGE_INFO`

Tool to fetch interview stage details by ID. Use when you need specific information about an interview stage including its title, type, order, and parent interview plan. Requires the interviewsRead permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `interviewStageId` | string | Yes | The unique identifier (UUID) of the interview stage |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Job Info

**Slug:** `ASHBY_GET_JOB_INFO`

Retrieve detailed information about a specific job by its ID. Use this to get complete details about a job including title, status, hiring team, interview plans, and more. Job offer payloads omit full job details; combine with ASHBY_LIST_APPLICATIONS and ASHBY_GET_APPLICATION_INFO for complete reporting data.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `jobId` | string | Yes | The unique identifier of the job |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Job Interview Plan Info

**Slug:** `ASHBY_GET_JOB_INTERVIEW_PLAN_INFO`

Retrieve the interview plan information for a specific job. Use this to get details about the interview stages and process configured for a job.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `jobId` | string | Yes | The unique identifier of the job to get the interview plan for |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Job Posting Info

**Slug:** `ASHBY_GET_JOB_POSTING_INFO`

Retrieve detailed information about a specific job posting by its ID. Use this to get complete job posting details including full description, application form fields, compensation, and publish settings.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `jobPostingId` | string | Yes | The unique identifier of the job posting |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Location Info

**Slug:** `ASHBY_GET_LOCATION_INFO`

Retrieve detailed information about a specific location by its ID. Use this to get complete location details including address, remote status, and workplace type.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `locationId` | string | Yes | The unique identifier of the location |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Offer Info

**Slug:** `ASHBY_GET_OFFER_INFO`

Retrieve detailed information about a specific offer by its ID. This action returns comprehensive offer data including application ID, status, version, timestamps, candidate ID, job ID, start date, and custom fields. Use this when you need complete details about a specific offer. To find offer IDs, use the list_offers action first. Requires the 'offersRead' permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `offerId` | string | Yes | The unique identifier (UUID) of the offer to retrieve. Can be obtained from list_offers action. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Opening Info

**Slug:** `ASHBY_GET_OPENING_INFO`

Retrieve detailed information about a specific opening (job requisition) by its ID. An opening represents a headcount position that needs to be filled. Each opening belongs to a job and tracks hiring progress including state (Open/Closed), hiring team members, employment type, and target dates. Use this action to: - Get complete details about a specific opening including its current state - View the hiring team assigned to the opening - Check employment type, target hire date, and target start date - Access custom fields associated with the opening Returns opening details on success, or error information if the opening ID is invalid.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `openingId` | string | Yes | The unique identifier (UUID) of the opening to retrieve. Obtain this from the list_openings action or from job details. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Referral Form

**Slug:** `ASHBY_GET_REFERRAL_FORM`

Fetches the default referral form or creates a default referral form if none exists. Requires the hiringProcessMetadataRead permission.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Survey Form Definition

**Slug:** `ASHBY_GET_SURVEY_FORM_DEFINITION`

Retrieve detailed information about a specific survey form definition by its ID. This action returns comprehensive details about a survey form including: - Survey title and type (e.g., Diversity, EEOC, QualityOfHire) - Form definition with sections and fields - Field types (ValueSelect, MultiValueSelect, RichText, LinearRating, etc.) - Selectable values for choice fields - Required field indicators - Archive status Use the LIST_SURVEY_FORM_DEFINITIONS action first to discover available survey form IDs. Common survey types include candidate experience surveys, hiring manager assessments, quality of hire evaluations, and EEOC compliance forms. Requires the hiringProcessMetadataRead permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `surveyFormDefinitionId` | string | Yes | The unique identifier (UUID) of the survey form definition to retrieve. Use the LIST_SURVEY_FORM_DEFINITIONS action to discover available survey form IDs. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get User Info

**Slug:** `ASHBY_GET_USER_INFO`

Retrieve detailed information about a specific user by their ID. Use this to get user details including name, email, role, and permissions.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `userId` | string | Yes | The unique identifier (UUID) of the user to retrieve |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Application Criteria Evaluations

**Slug:** `ASHBY_LIST_APPLICATION_CRITERIA_EVALUATIONS`

Retrieve AI-generated criteria evaluations for an application. Use this to get the AI assessment of how well a candidate meets specific job requirements, including evaluation outcomes and reasoning.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `applicationId` | string | Yes | The unique identifier of the application |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Application Feedback

**Slug:** `ASHBY_LIST_APPLICATION_FEEDBACK`

Retrieve all feedback submissions for an application. Use this to view interviewer feedback, evaluations, and notes collected throughout the hiring process.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `applicationId` | string | Yes | The unique identifier of the application |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Application Hiring Team Roles

**Slug:** `ASHBY_LIST_APPLICATION_HIRING_TEAM_ROLE`

Retrieve all available hiring team roles for applications in the organization. These roles can be assigned to hiring team members at the application level (e.g., Recruiter, Hiring Manager, Recruiting Coordinator, Sourcer). Use this endpoint to get the complete list of role IDs and titles that are available for assignment. Requires candidatesRead permission. Note: This differs from the general hiring team roles list - this specifically returns roles used at the application level in the hiring workflow.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Application History

**Slug:** `ASHBY_LIST_APPLICATION_HISTORY`

Retrieve the complete history of stage transitions for an application. Use this to get detailed information about when and how a candidate moved through different interview stages.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of history items to return per page. Default and maximum is 100. |
| `cursor` | string | No | Pagination cursor token for retrieving subsequent pages of history entries. Use the nextCursor value from a previous response. |
| `applicationId` | string | Yes | The unique identifier (UUID) of the application to retrieve history for. Obtain this from list_applications or create_application actions. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Applications

**Slug:** `ASHBY_LIST_APPLICATIONS`

Retrieve a list of applications with optional pagination and sync-token filtering for incremental updates. No server-side recruiter filter exists; attribute applications to team members client-side.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `jobId` | string | No | Filter applications by job UUID. |
| `limit` | integer | No | Maximum number of items to return per page (1-100). Defaults to 100 if not specified. |
| `cursor` | string | No | Cursor for pagination to fetch the next set of results. Loop until `nextCursor` is null or `moreDataAvailable` is false to avoid missing records; each page returns up to ~100 results. |
| `expand` | array | No | List of related object fields to expand and include in the response. |
| `status` | string | No | Filter applications by status. Allowed values: Hired, Archived, Active, Lead. |
| `syncToken` | string | No | Sync token to fetch only applications that have changed since last sync. |
| `createdAfter` | integer | No | Unix timestamp in milliseconds. Only returns applications created after this date. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Approvals

**Slug:** `ASHBY_LIST_APPROVAL`

Retrieve a list of approvals (offer approvals, job approvals, etc.). Use this to track approval workflows and pending approvals.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Cursor for pagination to fetch the next set of results |
| `perPage` | integer | No | Number of results to return per page |
| `syncToken` | string | No | Sync token to fetch only approvals that have changed since last sync |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Archive Reasons

**Slug:** `ASHBY_LIST_ARCHIVE_REASONS`

Retrieve a list of all archive reasons. Use this to see available reasons for archiving candidates or applications, such as rejection categories.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Brands

**Slug:** `ASHBY_LIST_BRAND`

Retrieve a list of all brands for the organization. Use this to get available brands for job postings and employer branding. Requires organizationRead permission.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Candidate Client Info

**Slug:** `ASHBY_LIST_CANDIDATE_CLIENT_INFO`

Retrieve all client info records for a specific candidate with pagination support. Client info records contain additional client-specific information associated with candidates in your Ashby account. This endpoint supports pagination and incremental synchronization for efficient data retrieval. Use the cursor and limit parameters to paginate through large result sets. For incremental syncing, use the syncToken to fetch only changes since your last sync. Requires candidatesRead permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of records to return per request. Default and maximum is 100 |
| `cursor` | string | No | Opaque cursor for fetching the next page of results. Use the nextCursor from the previous response |
| `syncToken` | string | No | Token representing the last successful sync for incremental synchronization. Use this to fetch only changes since last sync |
| `candidateId` | string | Yes | The unique identifier (UUID) of the candidate to retrieve client info for |
| `createdAfter` | integer | No | Timestamp in milliseconds since Unix epoch. Only return records created after this time |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Candidate Notes

**Slug:** `ASHBY_LIST_CANDIDATE_NOTES`

Retrieve all notes for a specific candidate in Ashby. Use this action to view comments, observations, and internal notes added by recruiters and hiring team members during the hiring process. Common use cases: - Review feedback and observations from interviewers - Check historical communication and decisions about a candidate - Audit the hiring process for a specific candidate Prerequisites: - You need a valid candidateId. Get this from list_candidates or search_candidates. - Requires 'candidatesRead' permission in Ashby. Returns an empty list if the candidate has no notes.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of notes to return per page. If not specified, the API will use its default limit. |
| `cursor` | string | No | Pagination cursor for fetching the next page of results. Use the nextCursor value from a previous response to get more notes. |
| `syncToken` | string | No | Sync token for incremental updates. Use this to fetch only notes that have changed since your last sync. |
| `candidateId` | string | Yes | The unique identifier (UUID) of the candidate whose notes you want to retrieve. Get this ID from list_candidates or search_candidates actions. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Candidate Projects

**Slug:** `ASHBY_LIST_CANDIDATE_PROJECTS`

Retrieve all projects associated with a candidate. Use this to see which sourcing projects or recruiting initiatives a candidate is part of.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `candidateId` | string | Yes | The unique identifier (UUID) of the candidate whose project associations to retrieve |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Candidates

**Slug:** `ASHBY_LIST_CANDIDATES`

Retrieve a list of candidates. Use this to fetch all candidates with optional pagination and filtering by sync token for incremental updates.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Cursor for pagination to fetch the next set of results Loop using the returned `nextCursor` value until it is null or `moreDataAvailable` is false to avoid missing records. |
| `perPage` | integer | No | Number of results to return per page |
| `syncToken` | string | No | Sync token to fetch only candidates that have changed since last sync |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Candidate Tags

**Slug:** `ASHBY_LIST_CANDIDATE_TAGS`

Retrieve a list of all candidate tags in your Ashby account. Tags are labels used to categorize and organize candidates for filtering and search purposes. Use this action to: - Get all available tags for tagging candidates - Implement incremental sync using the syncToken parameter - Paginate through large sets of tags using cursor Returns tag id, title, and archived status for each tag.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Cursor for pagination to fetch the next set of results |
| `perPage` | integer | No | Number of results to return per page (1-100) |
| `syncToken` | string | No | Sync token to fetch only tags that have changed since last sync. Use the syncToken from a previous response to get incremental updates. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Close Reasons

**Slug:** `ASHBY_LIST_CLOSE_REASONS`

Lists all close reasons for jobs or openings. Close reasons categorize why a job or opening was closed (e.g., rejected by candidate, rejected by organization, or other reasons). Requires hiringProcessMetadataRead permission.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Communication Templates

**Slug:** `ASHBY_LIST_COMMUNICATION_TEMPLATES`

Retrieve a list of all communication templates. Use this to see available email and message templates for candidate outreach.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Custom Fields

**Slug:** `ASHBY_LIST_CUSTOM_FIELDS`

Retrieve a list of all custom field definitions configured in Ashby. Use this action to discover what custom fields are available for candidates, applications, jobs, offers, and openings. This is useful when you need to: - Know what custom fields exist before setting values on resources - Understand the data types and available options for each field - Identify the IDs of custom fields needed for other API operations Returns fields with their types (String, Number, Boolean, Date, ValueSelect, MultiValueSelect, Currency, CompensationRange) and selectable values for dropdown fields.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Departments

**Slug:** `ASHBY_LIST_DEPARTMENTS`

Retrieve a list of all departments in the organization. Use this action to: - Get all departments for organizing jobs and candidates by team structure - Find department IDs needed for creating or filtering jobs - Understand the organizational hierarchy via parentId relationships - Perform incremental syncs to detect newly created or updated departments Supports pagination for large organizations. When moreDataAvailable is true, use the nextCursor value in subsequent requests to fetch more results.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of departments to return per page. Must be between 1 and 100. Defaults to API maximum if not specified. |
| `cursor` | string | No | Pagination cursor from a previous response's nextCursor field. Omit for the first page of results. |
| `syncToken` | string | No | Token from a previous sync to fetch only departments updated since then. Use for incremental synchronization workflows. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Feedback Form Definitions

**Slug:** `ASHBY_LIST_FEEDBACK_FORM_DEFINITIONS`

Retrieve all feedback form definitions from your Ashby organization. Use this action to: - Discover available interview feedback templates - Get form IDs for use with other feedback-related actions - Understand the structure of feedback forms including fields and sections - Identify the default feedback form vs custom scorecards Returns a list of feedback forms with their complete structure, including field types (ValueSelect, MultiValueSelect, Boolean, RichText) and selectable values.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Hiring Team Roles

**Slug:** `ASHBY_LIST_HIRING_TEAM_ROLE`

Retrieve a list of possible hiring team roles in the organization. Use this to get available roles that can be assigned to members of a hiring team (e.g., Hiring Manager, Recruiter, Recruiting Coordinator, Sourcer). Requires the organizationRead permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `namesOnly` | boolean | No | If true (default), returns an array of role titles. If false, returns an array of objects with each role's id and title. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Interviewer Pools

**Slug:** `ASHBY_LIST_INTERVIEWER_POOLS`

Retrieve a list of all interviewer pools. Interviewer pools are groups of interviewers organized by expertise, role, or interview type (e.g., "Backend Engineer", "Bar Raiser"). Use this to see available interviewer pools for scheduling interviews or managing interview assignments. Supports pagination via cursor and incremental sync via syncToken.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Cursor for pagination to fetch the next set of results |
| `perPage` | integer | No | Number of results to return per page |
| `syncToken` | string | No | Sync token to fetch only interviewer pools that have changed since last sync |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Interview Events

**Slug:** `ASHBY_LIST_INTERVIEW_EVENTS`

Retrieves all interview events for a specific interview schedule. Each interview event represents a scheduled time slot with assigned interviewers for conducting interviews. Use this action to: - Get details about scheduled interviews including start/end times, locations, and meeting links - View which interviewers are assigned to each interview event - Check feedback submission status for interviews - Access feedback submission links for interviewers Key information returned: - Event timing (start/end times in ISO 8601 format) - Interviewer details (names, emails, roles) - Meeting logistics (physical location or virtual meeting link) - Feedback status and submission links Supports pagination via cursor and incremental synchronization via syncToken. Requires interviewsRead permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Optional. Maximum number of interview events to return per page (1-100). Defaults to API's default page size if not specified. |
| `cursor` | string | No | Optional. Pagination cursor from a previous response's nextCursor field. Use this to fetch subsequent pages of results when moreDataAvailable is true. |
| `syncToken` | string | No | Optional. Sync token from a previous response. When provided, returns only events that have been created or updated since that token was issued. Useful for incremental data synchronization. |
| `interviewScheduleId` | string | Yes | Required. The unique identifier (UUID) of the interview schedule to retrieve events for. Obtain this from LIST_INTERVIEW_SCHEDULES action. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Interview Plans

**Slug:** `ASHBY_LIST_INTERVIEW_PLANS`

Retrieve a list of interview plans. Use this to get the structured interview processes and stages configured for different roles.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Cursor for pagination to fetch the next set of results |
| `perPage` | integer | No | Number of results to return per page |
| `syncToken` | string | No | Sync token to fetch only interview plans that have changed since last sync |
| `includeArchived` | boolean | No | Whether to include archived interview plans in the results |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Interview Types

**Slug:** `ASHBY_LIST_INTERVIEWS`

List all interview types defined in Ashby. Returns interview templates/definitions (e.g., 'Technical Phone Screen', 'Debrief', 'Intro Call with CEO') rather than scheduled interview instances. Use this to discover available interview types for building interview plans or to sync interview type data. Supports pagination via cursor and incremental sync via syncToken.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Pagination cursor from a previous response's nextCursor field. Use this to fetch subsequent pages of results. |
| `perPage` | integer | No | Number of interview records to return per page. Defaults to server default if not specified. |
| `syncToken` | string | No | Sync token from a previous response. When provided, only returns interviews that have been created or updated since the token was issued. Useful for incremental syncing. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Interview Schedules

**Slug:** `ASHBY_LIST_INTERVIEW_SCHEDULES`

Retrieve a list of interview schedules. Use this to fetch all scheduled interviews with candidates, including timing, interviewers, and interview details.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Cursor for pagination to fetch the next set of results |
| `perPage` | integer | No | Number of results to return per page |
| `syncToken` | string | No | Sync token to fetch only interview schedules that have changed since last sync |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Interview Stage Groups

**Slug:** `ASHBY_LIST_INTERVIEW_STAGE_GROUPS`

Retrieve a list of interview stage groups. Use this to see how interview stages are organized into logical groups within interview plans.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Interview Stages

**Slug:** `ASHBY_LIST_INTERVIEW_STAGES`

Retrieve all interview stages for an interview plan in order. Use this to get the structured sequence of stages a candidate progresses through during the interview process for a specific role. Requires interviewsRead permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `interviewPlanId` | string | Yes | UUID of the interview plan to list stages for |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Job Boards

**Slug:** `ASHBY_LIST_JOB_BOARDS`

Retrieve a list of job boards. Use this to see where job postings can be published (e.g., LinkedIn, Indeed, company career page).

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Job Postings

**Slug:** `ASHBY_LIST_JOB_POSTINGS`

Retrieve a list of job postings. Use this to fetch all public job postings with optional pagination and filtering. May return zero results even when open jobs exist; if so, use ASHBY_LIST_JOBS as a fallback.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Cursor for pagination to fetch the next set of results Check the moreDataAvailable flag in each response; if true, pass the returned cursor into the next call. Stopping early silently omits remaining job postings. |
| `perPage` | integer | No | Number of results to return per page |
| `syncToken` | string | No | Sync token to fetch only job postings that have changed since last sync |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Jobs

**Slug:** `ASHBY_LIST_JOBS`

Retrieve a list of all jobs from Ashby ATS (Applicant Tracking System). Use this action to: - Fetch all open, closed, or draft jobs in your organization - Get job details including title, status, employment type, department, and hiring team - Paginate through large result sets using cursor-based pagination - Perform incremental syncs using syncToken to only fetch changed jobs Each job includes comprehensive information such as hiring team members, interview plan IDs, job posting IDs, custom fields, and timestamps. When ASHBY_LIST_JOB_POSTINGS returns zero results, use this action as the authoritative source for open job data. Job payloads exclude application details; follow up with ASHBY_LIST_APPLICATIONS or ASHBY_GET_APPLICATION_INFO for complete data.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Cursor for pagination to fetch the next set of results |
| `perPage` | integer | No | Number of results to return per page |
| `syncToken` | string | No | Sync token to fetch only jobs that have changed since last sync |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Job Templates

**Slug:** `ASHBY_LIST_JOB_TEMPLATES`

Retrieve a list of all job templates from Ashby ATS. Use this action to: - Discover available job templates for creating standardized job postings - View both active and inactive templates in your organization - Get template details including title, department, location, and employment type - Paginate through results using cursor-based pagination - Perform incremental syncs using syncToken to only fetch changed templates Job templates provide reusable configurations that help maintain consistency when creating new jobs in your organization.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of job templates to return per page. Default and maximum is 100. |
| `cursor` | string | No | Opaque cursor for pagination. Pass the 'nextCursor' value from a previous response to fetch the next page of results. |
| `syncToken` | string | No | Token for incremental sync. Pass a syncToken from a previous response to only fetch job templates that have changed since then. |
| `createdAfter` | integer | No | Unix epoch timestamp in milliseconds. Only return job templates created after this time. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Locations

**Slug:** `ASHBY_LIST_LOCATIONS`

Retrieve a list of all locations. Use this to get available office locations and remote work settings for jobs.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Offers

**Slug:** `ASHBY_LIST_OFFERS`

Retrieve a list of job offers with their latest versions. This action fetches all offers made to candidates in your Ashby account. Use pagination (cursor/perPage) to handle large result sets efficiently. Use syncToken for incremental updates to fetch only changed offers since last sync. Use createdAfter to filter offers by creation time. Requires the 'offersRead' permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Pagination cursor to fetch the next page of results. Use the nextCursor value from a previous response. Stop paginating when moreDataAvailable is false or nextCursor is null. |
| `perPage` | integer | No | Number of offers to return per page (1-100). Defaults to 100 if not specified. |
| `syncToken` | string | No | Sync token for incremental updates. Fetches only offers that changed since the last sync. Use the syncToken from a previous response. |
| `createdAfter` | integer | No | Unix timestamp in milliseconds. Returns only offers created after this time. Filters on offer creation time; response also includes decidedAt for decision timestamps. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Openings

**Slug:** `ASHBY_LIST_OPENINGS`

Retrieve a list of openings (job requisitions). Use this to fetch all openings with optional pagination and filtering. Each opening may represent multiple hires; inspect headcount fields rather than assuming one opening equals one hire.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Cursor for pagination to fetch the next set of results Check the `moreDataAvailable` flag in each response; if true, pass the returned `cursor` into the next call to retrieve additional pages. |
| `perPage` | integer | No | Number of results to return per page |
| `syncToken` | string | No | Sync token to fetch only openings that have changed since last sync |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Projects

**Slug:** `ASHBY_LIST_PROJECTS`

Retrieve a list of all projects. Use this to see candidate sourcing projects and recruiting initiatives.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Cursor for pagination to fetch the next set of results |
| `perPage` | integer | No | Number of results to return per page |
| `syncToken` | string | No | Sync token to fetch only projects that have changed since last sync |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Sources

**Slug:** `ASHBY_LIST_SOURCES`

Retrieve a list of all candidate sources. Use this to get available sources for categorizing how candidates were sourced (e.g., LinkedIn, referrals, job boards).

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Source Tracking Links

**Slug:** `ASHBY_LIST_SOURCE_TRACKING_LINKS`

Retrieve all source tracking links configured in Ashby. Source tracking links are UTM-tagged URLs used to track where candidates are coming from (e.g., LinkedIn, job boards, referral campaigns). Use this action to: - View all active and inactive tracking links - Get tracking codes for analytics and reporting - Find the sourceId associated with each tracking link This is a read-only operation that requires no parameters.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Survey Form Definitions

**Slug:** `ASHBY_LIST_SURVEY_FORM_DEFINITIONS`

Retrieve a list of all survey form definitions from Ashby. Use this action to discover available candidate survey templates including: - Candidate Experience Surveys (NPS ratings for candidate feedback) - Hiring Manager Experience Surveys (feedback on recruiting process) - Quality of Hire Assessments (post-hire performance ratings) - EEOC Surveys (equal employment opportunity information collection) Each survey form contains sections with fields defining the questions and response types. This is a read-only operation that does not require any parameters.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Survey Submissions

**Slug:** `ASHBY_LIST_SURVEY_SUBMISSIONS`

Lists all survey submissions of a given survey type from Ashby. Survey submissions contain candidate responses to surveys sent during the hiring process. Use this action to: - Retrieve candidate experience survey responses - Access submitted survey data including answers and metadata - Paginate through large sets of submissions using cursor - Sync only new/updated submissions using syncToken - Filter submissions by creation date using createdAfter The most common survey type is 'CandidateExperience'. This action returns empty results if no submissions exist for the specified type. Requires candidatesRead permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of results to return (1-100) |
| `cursor` | string | No | Pagination cursor for fetching the next page of results |
| `syncToken` | string | No | Token for data synchronization to fetch only submissions that have changed since last sync |
| `surveyType` | string | Yes | The type of survey submissions to fetch. Use 'CandidateExperience' for candidate experience surveys. Note: The valid survey types for this endpoint may differ from the surveyType field returned by surveyFormDefinition.list. |
| `createdAfter` | integer | No | Unix timestamp in milliseconds to filter submissions created after this date |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Users

**Slug:** `ASHBY_LIST_USERS`

Retrieve a list of all users in the organization. Use this to get information about team members, their roles, and permissions.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Move Department

**Slug:** `ASHBY_MOVE_DEPARTMENT`

Tool to move a department to another parent in the organizational hierarchy. Use when reorganizing department structure or changing parent-child relationships. Requires the organizationWrite permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `parentId` | string | No | UUID of the new parent department. Set to null to make it a top-level department with no parent |
| `departmentId` | string | Yes | UUID of the department to be moved |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Move Location

**Slug:** `ASHBY_MOVE_LOCATION`

Tool to move a location to a different parent in the location hierarchy. Use when reorganizing location structure or changing parent-child relationships. Requires the organizationWrite permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `locationId` | string | Yes | UUID of the location to be moved |
| `parentLocationHierarchyId` | string | Yes | UUID of the parent location hierarchy where the location will be moved. Must be a LocationHierarchy type, not a Location type |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Remove Hiring Team Member

**Slug:** `ASHBY_REMOVE_HIRING_TEAM_MEMBER`

Remove an Ashby user from a hiring team at the application, job, or opening level. Use this when you need to unassign a team member from participating in the hiring process. Requires the jobsWrite permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `jobId` | string | No | ID of the job to remove team member from. Either applicationId, jobId, or openingId must be provided, but not multiple. |
| `roleId` | string | Yes | ID of the hiring team role from which to remove the user. This must be a valid UUID from your organization's hiring team roles. |
| `openingId` | string | No | ID of the opening to remove team member from. Either applicationId, jobId, or openingId must be provided, but not multiple. |
| `teamMemberId` | string | Yes | ID of the Ashby user to remove from the hiring team. |
| `applicationId` | string | No | ID of the application to remove team member from. Either applicationId, jobId, or openingId must be provided, but not multiple. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Remove User from Interviewer Pool

**Slug:** `ASHBY_REMOVE_INTERVIEWER_POOL_USER`

Remove a user from an interviewer pool. Use this to unassign interviewers from specific interview pools when they should no longer be part of that pool's roster. This removes the user from either the qualified members list or trainees list, depending on their current status in the pool. Requires the hiringProcessMetadataWrite permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `userId` | string | Yes | UUID of the user to remove from the interviewer pool |
| `interviewerPoolId` | string | Yes | UUID of the interviewer pool from which to remove the user |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Remove Opening Job

**Slug:** `ASHBY_REMOVE_OPENING_JOB`

Remove a job from an opening (job requisition) in Ashby ATS. Use this action to disassociate a job from a specific opening. This is useful when: - A job was added to the wrong opening - You need to reorganize job-opening associations - An opening should no longer be associated with a particular job The action removes the job from the opening's jobIds list and returns the updated opening object. Both the opening and job must exist and be valid. Requires jobsWrite permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `jobId` | string | Yes | The unique identifier of the job to be removed from the opening |
| `openingId` | string | Yes | The unique identifier of the opening from which to remove the job |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Remove Opening Location

**Slug:** `ASHBY_REMOVE_OPENING_LOCATION`

Tool to remove a location from an opening (job requisition). Use when you need to disassociate a location from an existing opening. Requires the jobsWrite permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `openingId` | string | Yes | The UUID of the opening to remove the location from |
| `locationId` | string | Yes | The UUID of the location to be removed from the opening |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Restore Department

**Slug:** `ASHBY_RESTORE_DEPARTMENT`

Restore an archived department by its unique identifier. Restoring a department marks it as active again, making it available in active department lists and allowing it to be used for new jobs and organizational structures. All historical data and relationships are preserved. This action is idempotent - restoring an already active department will succeed and return the same result. Use cases: - Reactivate a previously archived department that is needed again - Undo an accidental archive operation - Restore departments as part of organizational restructuring Required permission: organizationWrite

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `departmentId` | string | Yes | The unique identifier of the archived department to restore |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Restore Interviewer Pool

**Slug:** `ASHBY_RESTORE_INTERVIEWER_POOL`

Restore an archived interviewer pool in Ashby. This unarchives the pool, making it available again for new interview assignments. Use this when you need to reactivate an interviewer pool that was previously archived (e.g., reviving a pool for a role that's hiring again or correcting an accidental archive). The operation is idempotent - restoring an already active pool will succeed without errors. Requires the hiringProcessMetadataWrite permission. To archive a pool, use the ASHBY_ARCHIVE_INTERVIEWER_POOL action.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `interviewerPoolId` | string | Yes | The unique identifier (UUID) of the interviewer pool to restore. You can get this ID from LIST_INTERVIEWER_POOLS or GET_INTERVIEWER_POOL_INFO actions. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Restore Location

**Slug:** `ASHBY_RESTORE_LOCATION`

Restores an archived location or location hierarchy in Ashby. When restored, the location is marked as active (isArchived=false) and becomes available again for job postings, assignments, and other location-based operations. The operation is idempotent - restoring an already active location succeeds without error. Requires the organizationWrite permission. Common use cases: - Reactivating previously closed office locations - Undoing accidental location archives - Bringing back seasonal or temporary office locations - Restoring location availability during organizational restructuring Note: Use archive_location to archive a location if needed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `locationId` | string | Yes | The UUID of the archived location to restore |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Search Candidates

**Slug:** `ASHBY_SEARCH_CANDIDATES`

Search for candidates by email or name. Use this for quick lookups to find specific candidates without pagination. Supports exact email match or partial name match.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Name to search for (partial match) |
| `email` | string | No | Email address to search for (exact match) |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Search Jobs

**Slug:** `ASHBY_SEARCH_JOBS`

Search for jobs by title in Ashby ATS (Applicant Tracking System). Use this action to: - Quickly find jobs by title without pagination - Perform partial match searches (e.g., "engineer" matches "Backend Engineer") - Look up specific job openings by name Returns matching jobs with full details including hiring team, department, location, interview plans, and job postings. Note: For listing all jobs or paginated results, use the List Jobs action instead.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `title` | string | Yes | Job title to search for (required). Performs a partial match search - e.g., 'engineer' will match 'Backend Engineer', 'Frontend Engineer', etc. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Search Opening

**Slug:** `ASHBY_SEARCH_OPENING`

Search for openings by identifier. Use this for quick lookups to find specific openings without pagination. Returns empty results if no match found.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `identifier` | string | Yes | The opening identifier to search for (e.g., '1', '2', '3'). Returns empty results array if no match found. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Search Projects

**Slug:** `ASHBY_SEARCH_PROJECTS`

Search for projects by title in Ashby. Projects in Ashby are used to track sourcing initiatives, recruiting campaigns, or candidate portfolios. Use this action to: - Quickly find projects by title without pagination - Perform partial match searches (e.g., "recruiting" matches "Engineering Recruiting 2024") - Look up specific sourcing projects or initiatives by name - Build project autocomplete features Returns matching projects with details including id, title, archive status, confidentiality settings, author, and creation timestamp. Note: Results are limited to 100 matches. If you need to browse all projects or expect more results, use the List Projects action instead for paginated access.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `title` | string | Yes | Project title to search for (required). Performs a partial match search - e.g., 'recruiting' will match 'Engineering Recruiting 2024', 'Sales Recruiting', etc. Use keywords from the project name you're looking for. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Search Users

**Slug:** `ASHBY_SEARCH_USERS`

Search for an Ashby user by email address. Use this to find specific team members in the organization when you know their email. Returns matching user details including their ID, name, role, and status. Requires organizationRead permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `email` | string | Yes | Email address of the user to search for. Must be a valid email format. The API performs case-insensitive exact matching on the email address. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Set Custom Field Value

**Slug:** `ASHBY_SET_CUSTOM_FIELD_VALUE`

Set the value of a custom field for a given object (candidate, application, job, etc.). Use when you need to update a single custom field value. Important: When updating multiple custom fields on the same object, use customField.setValues instead to avoid race conditions.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `fieldId` | string | Yes | The ID of the custom field to set. Use the List Custom Fields action to get available field IDs |
| `objectId` | string | Yes | The ID of the object to update (e.g., candidate ID, application ID, job ID) |
| `fieldValue` | string | Yes | The value to set. Type depends on the field: Boolean for boolean fields, ISO date string for Date fields, string for text fields (String, Email, Phone, LongText), number for Number fields, array of strings for MultiValueSelect, NumberRangeValue object for NumberRange, CompensationRangeValue object for CompensationRange |
| `objectType` | string | Yes | The type of object being updated. Valid values: Candidate, Application, Job, Offer, Opening, CandidateAvailability, InterviewSchedule, Location, User |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Set Custom Field Values

**Slug:** `ASHBY_SET_CUSTOM_FIELD_VALUES`

Set the values of multiple custom fields for a given object in a single call. Use when you need to update multiple custom fields on the same object (candidate, application, job, or opening). This is the recommended approach to avoid race conditions that can occur with concurrent customField.setValue calls.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `values` | array | Yes | Array of custom field updates to apply. Must contain at least one item |
| `objectId` | string | Yes | The ID of the object to update (e.g., candidate ID, application ID, job ID, opening ID) |
| `objectType` | string ("Application" | "Candidate" | "Job" | "Opening") | Yes | The type of object being updated |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Set Job Status

**Slug:** `ASHBY_SET_JOB_STATUS`

Set the status of a job in Ashby ATS (Applicant Tracking System). Use this action to change the workflow state of a job: - Set to 'Open' to make a job actively accept applications - Set to 'Closed' to stop accepting applications for a job - Set to 'Draft' to put a job back into preparation mode Common use cases: - Close a job after filling the position - Open a draft job to start accepting applications - Transition a job through the hiring workflow Important limitations: - Cannot transition from Open to Draft (must close first) - Cannot transition from Closed to Open (create a new job instead) Returns the updated job details on success, or error information if the status transition is not allowed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `jobId` | string | Yes | The unique identifier (UUID) of the job to update. You can obtain this from the list_jobs or search_jobs actions. |
| `status` | string ("Open" | "Closed" | "Draft") | Yes | The new status to set for the job. Valid values are: 'Open' (job is actively accepting applications), 'Closed' (job is no longer accepting applications), 'Draft' (job is in preparation). Note: Some transitions may not be allowed (e.g., Closed to Open). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Set Opening Archived

**Slug:** `ASHBY_SET_OPENING_ARCHIVED`

Sets the archived state of an opening. Requires the jobsWrite permission. Use this to archive or unarchive job openings.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `archive` | boolean | Yes | Boolean indicating the desired archived state (true to archive, false to unarchive) |
| `openingId` | string | Yes | The unique identifier of the opening |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Set Opening State

**Slug:** `ASHBY_SET_OPENING_OPENING_STATE`

Set the workflow state of an opening (job requisition). Use this to transition an opening between states: Draft, Approved, Open, or Closed. Important notes: - When setting state to 'Closed', you must provide a closeReasonId (use LIST_CLOSE_REASONS to get valid IDs) - Not all state transitions are allowed by Ashby's workflow rules; the API will return an error for invalid transitions - Common valid transitions: Open ↔ Closed, Approved → Open - Returns the updated opening details including the new state, timestamps, and close reason if applicable

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `openingId` | string | Yes | The unique identifier of the opening to update |
| `openingState` | string | Yes | The new state for the opening. Valid values: 'Draft', 'Approved', 'Open', 'Closed'. Note: Not all state transitions are allowed; the API enforces valid workflow transitions (e.g., you can transition from Open to Closed, or Closed to Open, but not from Open to Draft) |
| `closeReasonId` | string | No | The ID of the close reason. Required when setting openingState to 'Closed', otherwise optional |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Start Offer

**Slug:** `ASHBY_START_OFFER`

Create a new offer version instance for an in-progress offer process. The returned offer version can be filled out and submitted using the Create Offer action. Use this action before creating a finalized offer to initialize the offer version that will hold the offer details. After starting the offer, use the Create Offer endpoint to populate and submit the offer form. Requires the 'offersWrite' permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `offerProcessId` | string | Yes | ID of the offer process to start. This identifies the candidate's in-progress offer process for which a new version will be created. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Start Offer Process

**Slug:** `ASHBY_START_OFFER_PROCESS`

Start an offer process for a candidate's application in Ashby ATS. Use this action when you need to initiate the formal offer workflow for a candidate who has progressed through interviews and is ready to receive an offer. The application must be in the Offer stage before starting an offer process. Once started, the offer process will have a status (typically 'WaitingOnOfferCreation') and a unique identifier that can be used to track and manage the offer through completion. Requires the 'offersWrite' permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `applicationId` | string | Yes | UUID of the application to start the offer process for. The application must be in the Offer stage to start an offer process. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Submit Application Feedback

**Slug:** `ASHBY_SUBMIT_APPLICATION_FEEDBACK`

Submit structured feedback for an application using a feedback form. Use this for formal interview feedback and scorecards, not for informal notes or comments.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `userId` | string | Yes | The ID of the user the feedback will be credited to. The user must be an interviewer on the interview event that feedback is being submitted for. This is REQUIRED for proper feedback attribution. |
| `applicationId` | string | Yes | The ID of the application to submit feedback for |
| `fieldSubmissions` | array | Yes | Array of field submissions. Each item has 'path' (the field identifier) and 'value' (the submitted value). Value format depends on field type: Boolean (boolean), Date (YYYY-MM-DD string), Email (string), Number (integer), RichText ({type: 'PlainText', value: 'text'}), Score ({score: 1-4}), Phone/String (string), ValueSelect (string matching option), MultiValueSelect (array of strings) |
| `formDefinitionId` | string | Yes | The ID of the feedback form definition to use for this submission |
| `interviewEventId` | string | Yes | The ID of the interview event you're submitting feedback for. This is REQUIRED for proper feedback attribution. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Transfer Application

**Slug:** `ASHBY_TRANSFER_APPLICATION`

Transfer an application to a different job position in Ashby ATS. Use this action to move a candidate's application from one job opening to another while optionally preserving their application history and context. This is useful when: - A candidate is better suited for a different open position - Job requirements change and the candidate should be considered for an alternative role - Internal mobility scenarios where employees are being considered for different positions The transfer will update the application's associated job, interview plan, and current interview stage. You can optionally trigger automatic activities (emails, tasks) configured for the target stage.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `jobId` | string | Yes | UUID of the destination job to transfer the application to. Must be an existing job ID obtained from job listing endpoints. |
| `applicationId` | string | Yes | UUID of the application to transfer. Must be an existing application ID obtained from application listing endpoints. |
| `interviewPlanId` | string | Yes | UUID of the interview plan to use for the transferred application. Must be a valid interview plan associated with the destination job. |
| `interviewStageId` | string | Yes | UUID of the interview stage to place the application in after transfer. Must be a valid stage from the specified interview plan. |
| `startAutomaticActivities` | boolean | No | Whether to automatically start activities configured for the target interview stage. Set to true to trigger automatic email sequences, tasks, or other activities. Defaults to false. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Application

**Slug:** `ASHBY_UPDATE_APPLICATION`

Update an application's properties in Ashby. Use this action to modify application metadata such as: - Source attribution (how the candidate found or was found for the job) - Credited user (who should get credit for sourcing the candidate) - Creation date (useful for backdating imported applications) - Notification settings for the update Note: To update custom fields on applications, use the customFields.setValue endpoint instead. To change the application's interview stage, use change_application_stage. To archive/unarchive, use the archive actions. Returns the full updated application object with all current field values.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `sourceId` | string | No | The unique identifier (UUID) of the source to assign to this application. Get available sources from the list_sources action. Use this to update how the candidate was sourced (e.g., 'Referral', 'LinkedIn', 'Applied'). |
| `createdAt` | string | No | ISO 8601 timestamp to set as the application's creation date (e.g., '2025-01-15T10:30:00.000Z'). Use this to backdate applications that were imported or created retroactively. |
| `applicationId` | string | Yes | The unique identifier (UUID) of the application to update. You can get this from the list_applications action or application.list endpoint. |
| `creditedToUserId` | string | No | The unique identifier (UUID) of the user who should be credited for this application. Get available users from the list_users action. This is typically the recruiter or sourcer who brought in the candidate. |
| `sendNotifications` | boolean | No | Whether to send notifications when updating the application. Set to false to make silent updates without triggering email notifications. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Application History

**Slug:** `ASHBY_UPDATE_APPLICATION_HISTORY`

Update the complete history of an application's stage transitions. Use this to modify stage entry times, delete history events, or update existing history records. CRITICAL: This endpoint requires sending the COMPLETE application history array - use ASHBY_GET_APPLICATION_INFO first to retrieve all existing entries, then modify and send back the full array. Requires the 'candidatesWrite' permission and the 'Allow updating application history?' setting enabled in your admin API key configuration.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `applicationId` | string | Yes | The unique identifier of the application whose history is being updated |
| `applicationHistory` | array | Yes | IMPORTANT: Must include the COMPLETE application history array, not just the entries being modified. Partial history will cause errors. Each entry represents a stage transition in chronological order. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Candidate

**Slug:** `ASHBY_UPDATE_CANDIDATE`

Update an existing candidate's profile information in Ashby ATS. Use this action to modify candidate details like name, email, phone number, job title, company, school, and social profiles (LinkedIn, GitHub, website). Requires a valid candidateId which can be obtained from list_candidates or search_candidates actions. Note: To update custom fields, use the customFields.setValue endpoint separately.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | The candidate's full name (e.g., 'John Doe') |
| `email` | string | No | Primary email address for the candidate (e.g., 'john.doe@example.com') |
| `school` | string | No | The candidate's educational institution (e.g., 'Stanford University') |
| `company` | string | No | The candidate's current or most recent company name (e.g., 'Google') |
| `position` | string | No | The candidate's current job title or position (e.g., 'Senior Software Engineer') |
| `sourceId` | string | No | The ID of the source to associate with this candidate (from list_sources action) |
| `githubUrl` | string | No | GitHub profile URL (e.g., 'https://github.com/johndoe') |
| `websiteUrl` | string | No | Personal website or portfolio URL |
| `candidateId` | string | Yes | The unique identifier (UUID) of the candidate to update. Can be obtained from list_candidates or search_candidates actions. |
| `linkedInUrl` | string | No | LinkedIn profile URL (e.g., 'https://linkedin.com/in/johndoe') |
| `phoneNumber` | string | No | Primary phone number for the candidate (e.g., '+1 555-123-4567') |
| `alternateEmail` | string | No | Secondary/alternate email address for the candidate |
| `creditedToUserId` | string | No | The ID of the user to credit for this candidate (from list_users action) |
| `sendNotifications` | boolean | No | Whether to send notifications about this update (default: true) |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Job Compensation

**Slug:** `ASHBY_UPDATE_COMPENSATION_JOB`

Update a job's compensation tiers in Ashby ATS. Use this action to define or modify the compensation structure for a job posting. You can specify multiple tiers (e.g., 'Junior', 'Senior', 'Staff') and each tier can include multiple compensation components like: - Salary (with min/max range, currency, and payment interval) - Equity (as percentage or cash value) - Bonus compensation - Commission structures Example use cases: - Setting salary ranges for a new job posting - Adding equity compensation to existing jobs - Updating compensation to reflect market changes - Creating tiered compensation for different experience levels Prerequisites: - You need a valid jobId from list_jobs or search_jobs - Compensation amounts should be appropriate for the currency and interval - At least one compensation tier with one component is required

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `jobId` | string | Yes | The unique identifier (UUID) of the job to update compensation for. Get this from list_jobs or search_jobs actions. |
| `compensationTiers` | array | Yes | Array of compensation tiers for the job. Each tier can contain multiple compensation components (salary, equity, bonus, commission). At least one tier with one component is required. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Department

**Slug:** `ASHBY_UPDATE_DEPARTMENT`

Update an existing department's information such as its name. Use this action to: - Rename a department to reflect organizational changes - Update department names with Unicode/international characters - Modify department details as your organization evolves Prerequisites: - You need a valid departmentId (obtain from list_departments action) - The department must not be archived - At least one field (e.g., name) must be provided for the update Note: The externalName is automatically updated to match the name.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | The new name for the department. Supports Unicode characters for international department names. At least one field must be provided to update. |
| `departmentId` | string | Yes | The unique identifier (UUID) of the department to update. Obtain this from the list_departments action or department.info response. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Interviewer Pool

**Slug:** `ASHBY_UPDATE_INTERVIEWER_POOL`

Update an existing interviewer pool's title or training requirements. Interviewer pools are groups of interviewers organized by expertise or role (e.g., "Backend Engineers", "Bar Raiser Interviews"). Use this action to: - Rename an interviewer pool by updating its title - Enable or disable training requirements for the pool - Update both title and training settings simultaneously At least one of title or requiresTraining must be provided. Use LIST_INTERVIEWER_POOLS to get valid pool IDs. Requires hiringProcessMetadataWrite permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `title` | string | No | New title/name for the interviewer pool (e.g., 'Senior Backend Engineers', 'Technical Interview Panel'). Supports Unicode characters including emojis. |
| `requiresTraining` | boolean | No | Whether training is required for interviewers in this pool. When set to true, creates a training path with Shadow and ReverseShadow stages. |
| `interviewerPoolId` | string | Yes | The UUID of the interviewer pool to update. Use LIST_INTERVIEWER_POOLS to get valid pool IDs. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Job

**Slug:** `ASHBY_UPDATE_JOB`

Update an existing job's properties in Ashby ATS. Use this action to modify job details such as: - Job title (e.g., change "Engineer" to "Senior Engineer") - Department/team assignment - Office location - Default interview plan - Confidentiality settings - Custom requisition ID Prerequisites: - You need a valid jobId from list_jobs or search_jobs - For teamId, get valid IDs from list_departments - For locationId, get valid IDs from list_locations - For defaultInterviewPlanId, get valid IDs from list_interview_plans Note: To update custom fields, use the customFields.setValue endpoint instead. To change job status (open/close/archive), use the set_job_status action.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `jobId` | string | Yes | The unique identifier (UUID) of the job to update. Get this from list_jobs or search_jobs actions. |
| `title` | string | No | The new title for the job position (e.g., 'Senior Software Engineer', 'Product Manager - Growth') |
| `teamId` | string | No | The ID of the department/team to assign the job to. Get this from list_departments action. |
| `locationId` | string | No | The ID of the office location for the job. Get this from list_locations action. |
| `confidential` | boolean | No | Whether the job should be confidential (hidden from most users). Set to true for sensitive executive searches. |
| `customRequisitionId` | string | No | A custom requisition ID/number for the job (e.g., 'REQ-2024-001'). Used for internal tracking. |
| `defaultInterviewPlanId` | string | No | The ID of the default interview plan to use for this job. Get this from list_interview_plans action. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Job Posting

**Slug:** `ASHBY_UPDATE_JOB_POSTING`

Update an existing job posting's details including title, description, and visibility status. This action allows you to modify public job postings properties such as: - Title: Change the job posting title - Description: Update the job description (HTML format, certain tags supported) - Listing Status: Control whether the posting is publicly visible on job boards - Description Customization: Suppress opening/closing sections for full API control Use this to keep job postings current, control visibility, or customize descriptions. Requires the jobsWrite permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `title` | string | No | The new title for the job posting |
| `isListed` | boolean | No | Whether the job posting should be publicly listed/visible on job boards. Set to true to publish, false to unpublish. |
| `description` | string | No | The new description for the job posting in HTML format. Only certain HTML tags are supported. Note: When suppressDescriptionOpening and suppressDescriptionClosing are false, some content may not be modifiable via API. |
| `jobPostingId` | string | Yes | The unique identifier of the job posting to update |
| `suppressDescriptionClosing` | boolean | No | If true, suppresses the description closing section. Set to true along with suppressDescriptionOpening to fully customize the description via API. |
| `suppressDescriptionOpening` | boolean | No | If true, suppresses the description opening section. Set to true along with suppressDescriptionClosing to fully customize the description via API. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Location Address

**Slug:** `ASHBY_UPDATE_LOCATION_ADDRESS`

Update the address of a location or location hierarchy. Use this when you need to modify location address details such as city, region, country, or postal code. Requires the organizationWrite permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `address` | object | Yes | Address object containing postalAddress with optional fields: addressLocality (city), addressRegion (state/province), addressCountry (country), postalCode (ZIP/postal code), and streetAddress (street details). All postalAddress fields are optional, allowing partial address updates. |
| `locationId` | string | Yes | The unique identifier (UUID) of the location to update. Use list_locations to find valid location IDs. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Location External Name

**Slug:** `ASHBY_UPDATE_LOCATION_EXTERNAL_NAME`

Update a location's external (candidate-facing) name. Use this to set or clear an alternate name for a location that is displayed on job boards and used in the API.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `locationId` | string | Yes | The unique identifier of the location to update |
| `externalName` | string | No | An alternate candidate-facing name for this location used on job boards and in the API. Pass null to clear the external name. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Location Name

**Slug:** `ASHBY_UPDATE_LOCATION_NAME`

Update a location's name. Use this to rename an existing location. Requires the organizationWrite permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | The new name for the location |
| `locationId` | string | Yes | The unique identifier of the location to update |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Location Remote Status

**Slug:** `ASHBY_UPDATE_LOCATION_REMOTE_STATUS`

Tool to update a location's remote status. Use when you need to mark a location as remote or non-remote. Requires organizationWrite permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `isRemote` | boolean | Yes | Whether the location is remote. Set to true for remote locations, false otherwise. |
| `locationId` | string | Yes | The unique identifier (UUID) of the location to update. Use LIST_LOCATIONS to find valid location IDs. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Location Workplace Type

**Slug:** `ASHBY_UPDATE_LOCATION_WORKPLACE_TYPE`

Tool to update a location's workplace type (OnSite, Remote, or Hybrid). Use when you need to modify the workplace setting for an office location. Requires organizationWrite permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `locationId` | string | Yes | The unique identifier of the location to update |
| `workplaceType` | string ("OnSite" | "Remote" | "Hybrid") | Yes | The workplace type for the location. OnSite: employees work from the office location; Remote: employees work remotely; Hybrid: combination of on-site and remote work |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Opening

**Slug:** `ASHBY_UPDATE_OPENING`

Update properties of an existing opening (job requisition). Use this to modify opening details such as description, team, hire dates, and employment type. Requires jobsWrite permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `teamId` | string | No | The team associated with the opening |
| `openingId` | string | Yes | The unique identifier of the opening to update |
| `identifier` | string | No | Custom identifier for the opening |
| `isBackfill` | boolean | No | Boolean indicating if this is a backfill position |
| `description` | string | No | Description of the opening |
| `employmentType` | string | No | Type of employment (e.g., FullTime, PartTime, Contract) |
| `targetHireDate` | string | No | Target date for hiring (ISO 8601 format) |
| `targetStartDate` | string | No | Target start date for the hire (ISO 8601 format) |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Selectable Values Custom Field

**Slug:** `ASHBY_UPDATE_SELECTABLE_VALUES_CUSTOM_FIELD`

Update the selectable values for a ValueSelect or MultiValueSelect custom field. Use this to add new options, modify existing option labels, or archive outdated options. Values are merged with existing options - matching values are updated, new values are added.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `customFieldId` | string | Yes | The UUID of the custom field to update. Must be a ValueSelect or MultiValueSelect field type. |
| `selectableValues` | array | Yes | Array of selectable values to merge with existing values. Values with matching 'value' fields will be updated; new values will be added. To archive a value, include it with isArchived=true. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update User Interviewer Settings

**Slug:** `ASHBY_UPDATE_USER_INTERVIEWER_SETTINGS`

Update interviewer settings for a user, including daily and weekly interview limits. Use this when you need to set or modify interview scheduling constraints for a user. Either limit can be provided individually or both together; unprovided limits remain unchanged.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `userId` | string | Yes | The unique identifier of the user whose interviewer settings to update |
| `dailyLimit` | integer | No | Daily interview limit for the user. Set to null to unset. If only weeklyLimit is provided, dailyLimit remains unchanged. |
| `weeklyLimit` | integer | No | Weekly interview limit for the user. Set to null to unset. If only dailyLimit is provided, weeklyLimit remains unchanged. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
