Ashby logo

Integrate Ashby with your AI CRM

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

Explore Triggers and Actions

Application Signature Request Updated

Triggers when an e-signature request attached to an application — an NDA, a consent form — is sent, cancelled, completed or deleted. Signature requests on offer letters are a separate trigger, because Ashby gives the two different fields.

TriggerwebhookTry it

Application Submitted

Triggers when a candidate submits an application, or a recruiter adds one by hand. Does not fire for bulk imports or integration syncs, and does not fire when an existing application later changes.

TriggerwebhookTry it

Application Updated

Triggers when anything on an existing application changes — its fields, custom fields, archive state, or the job it is transferred to. Also fires alongside a hire and alongside a stage change, so enabling those triggers too gives two deliveries per action.

TriggerwebhookTry it

Candidate Deleted

Triggers when a candidate record is deleted from Ashby. Distinct from a merge, where the candidate's history is folded into another record rather than lost.

TriggerwebhookTry it

Candidate Emails Changed

Triggers when a candidate's recent email messages may have changed. Carries no message content — use the watermark in the payload to refetch them; Ashby marks this webhook beta and may not enable it for every organisation.

TriggerwebhookTry it

Candidate Hired

Triggers when a candidate is marked hired in Ashby, including hires on confidential jobs. Pushing that hire to an HRIS is a separate, later trigger.

TriggerwebhookTry it

Candidate Merged

Triggers when two candidate records are merged into one. Like a deletion this is the only way to observe it, but unlike a deletion the candidate's history survives on the record named here.

TriggerwebhookTry it

Candidate Moved To Interview Stage

Triggers when an application moves into a different interview stage, in either direction. Ashby also emits an application-updated event for the same move, and emits this one itself when a candidate is hired.

TriggerwebhookTry it

Candidate Pushed To HRIS

Triggers when a hired candidate is pushed from Ashby into an HRIS. This is the explicit downstream hand-off, which can follow the hire itself by minutes or days; the hire fires the candidate-hired trigger.

TriggerwebhookTry it

Interview Schedule Created

Triggers when an interview loop is first booked for an application. Ashby also emits an interview-schedule-updated event for the same booking, so enabling both gives two deliveries.

TriggerwebhookTry it

Interview Schedule Updated

Triggers when a booked interview loop changes, including a change to one interview inside it. Also fires once when the loop is first booked, alongside the interview-schedule-created trigger.

TriggerwebhookTry it

Job Created

Triggers when a job — the internal requisition, not its public posting — is created. Confidential jobs are never delivered.

TriggerwebhookTry it

Job Interview Plan Switched

Triggers when a job is moved onto a different interview plan, remapping the stages of every application in flight. Ashby also emits a job-updated event for the same switch.

TriggerwebhookTry it

Job Posting Deleted

Triggers when a job posting is deleted. Taking a posting off its job board without deleting it fires the job-posting-unpublished trigger instead.

TriggerwebhookTry it

Job Posting Published

Triggers when a job posting is published to a job board. Ashby also emits a job-posting-updated event for the same publish, so enabling both gives two deliveries.

TriggerwebhookTry it

Job Posting Unpublished

Triggers when a job posting is removed from its job board but kept in Ashby. Deleting the posting outright fires the job-posting-deleted trigger instead.

TriggerwebhookTry it

Job Posting Updated

Triggers when anything on a job posting changes — its title, department, locations, compensation or deadline. Also fires alongside a publish and an unpublish, so enabling those triggers too gives two deliveries per action.

TriggerwebhookTry it

Job Updated

Triggers when a job — the internal requisition, not its public posting — changes, including when it opens, closes, or moves to a different interview plan. Confidential jobs are never delivered.

TriggerwebhookTry it

Offer Created

Triggers when an offer process is started for a candidate. Later changes to that offer — new versions, approvals, the candidate's response — fire the offer-updated trigger instead.

TriggerwebhookTry it

Offer Deleted

Triggers when an offer process is deleted. This is the only way to observe the deletion — a deleted offer no longer appears in any Ashby list endpoint.

TriggerwebhookTry it

Offer Signature Request Updated

Triggers when an e-signature request on an offer letter is sent, cancelled, completed or deleted. Signature requests attached to an application — an NDA, a consent form — are a separate trigger, because Ashby gives the two different fields.

TriggerwebhookTry it

Offer Updated

Triggers when an offer changes — a new version is drafted, it moves through the approval chain, or the candidate accepts or declines. Creation of the offer fires the offer-created trigger instead.

TriggerwebhookTry it

Opening Created

Triggers when an opening — Ashby's headcount record, which jobs hire against — is created. Ashby publishes no update or delete event for openings, so this is the only opening event available.

TriggerwebhookTry it

Survey Submitted

Triggers when a candidate submits a survey. Ashby never includes the answers for Diversity and EEOC surveys, anonymous or not, and does not fire at all for an anonymous Candidate Experience submission.

TriggerwebhookTry it

Take-Home Assignment Assigned

Triggers when a take-home assignment is issued to a candidate and enters Waiting On Submission. The candidate has not submitted anything yet.

TriggerwebhookTry it

Take-Home Assignment Cancelled

Triggers when a take-home assignment is cancelled, whether or not the candidate had already submitted.

TriggerwebhookTry it

Take-Home Assignment Completed

Triggers when a take-home assignment reaches Complete, which happens once reviewers finish rather than when the candidate submits.

TriggerwebhookTry it

Take-Home Assignment Submitted

Triggers when a candidate submits their take-home and it enters Waiting On Feedback. Review has not happened yet — that fires the take-home-assignment-completed trigger.

TriggerwebhookTry it

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.

ActionTry it

Add Candidate to 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.

ActionTry it

Add Completed Assessment to Candidate

Add a completed partner assessment to an Ashby candidate. Supply the candidate and partner UUIDs, the partner's assessment identifiers, name, result and at least one metadata entry. The completion timestamp is in milliseconds since the Unix epoch, not seconds. This records an already completed assessment; it does not launch a new assessment or fetch result URLs. Requires candidatesWrite permission.

ActionTry it

Add Existing Email Message to Candidate

Attach an existing email message from a partner system to an Ashby candidate. Imports an email record; does not send or deliver email. The partner message ID must be unique per API key. Requires candidatesWrite permission. Creating or viewing private emails additionally requires the API key permission "Allow access to non-offer private fields?".

ActionTry it

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.

ActionTry it

Add Hiring Team Member to Application

Add an Ashby user to the hiring team of a specific application. Assigns the user the specified hiring team role at the application level, not at the job or opening level. Requires candidatesWrite permission. Returns the assigned member's user ID, name, email, and role.

ActionTry it

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.

ActionTry it

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.

ActionTry it

Add Sequence

Enroll a candidate in a reusable sourcing sequence. Requires sourcingWrite. start=false creates an editable draft; start=true validates and attempts to start immediately, potentially sending outreach. Inspect startResult: blocked validation or required actions return NotStarted with status Blocked even when success is true. applicationId fixes the application used for token resolution. Optional from.email must be a Primary, PersonalAlias or OrganizationAlias from emailSender.list for the same acting user. NoReply senders are always rejected, including custom-domain no-reply addresses. x-on-behalf-of requests create a draft owned by that user. A duplicate draft for the same candidate, template and actor returns sequence_draft_already_exists; errorInfo.meta.existingSequenceId identifies it. This action does not perform sender discovery or start retries.

ActionTry it

Add User to Interviewer Pool

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

ActionTry it

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.

ActionTry it

Approve Offer

Approve an offer or a specific step in its approval process using Ashby's Force Approve behavior, which allows an admin to override the approval process. Requires offersWrite permission.

ActionTry it

Archive Candidate Tag

Archive an Ashby candidate tag definition by UUID. Requires hiringProcessMetadataWrite permission. This archives the tag itself; use the candidate tag removal action to remove a tag from an individual candidate. Returns the tag's ID, title, and archived status.

ActionTry it

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

ActionTry it

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.

ActionTry it

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.

ActionTry it

Archive Project

Archive an Ashby project by UUID and return the updated project. Already archived projects succeed. Candidate memberships, history, authorship, confidentiality, descriptions and custom-field values are preserved; this does not permanently delete projects or candidates. Requires projectsWrite and an effective actor authorized to edit the project, including on-behalf-of requests.

ActionTry it

Cancel Interview Schedule

Cancel an Ashby interview schedule by UUID. Requires interviewsWrite. Optionally specify whether the schedule can be rescheduled using allowReschedule. Returns the updated schedule, including its status and interview events.

ActionTry it

Cancel Sequence

Cancel a running sourcing sequence (campaign) for a candidate in Ashby. Requires either candidatesWrite or sourcingWrite permission. The only supported cancellation reason is booked_meeting, also the default when omitted. Returns the cancelled sequence ID.

ActionTry it

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.

ActionTry it

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.

ActionTry it

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.

ActionTry it

Create Application Feedback Request

Request feedback on an application without scheduling an interview. Requires application, interview, and interviewer user IDs. The interview must be configured to request feedback. Use the returned interviewEventId with applicationFeedback.submit to complete the request. Requires candidatesWrite.

ActionTry it

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.

ActionTry it

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.

ActionTry it

Create Candidate Tag

Create a candidate tag in Ashby for categorizing and organizing candidates. If a tag with the given title already exists, the existing tag is returned.

ActionTry it

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.

ActionTry it

Create Department

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

ActionTry it

Create Email Sync Blocked Address

Add 1-100 email addresses to the candidate email sync blocklist. The organization must have the blocklist enabled. Blocking applies only to addresses stored on candidate profiles. Matching ignores case but is otherwise exact: person+tag@example.com and person@example.com are separate. Malformed addresses reject the entire batch; already-blocked addresses return their existing entries. Requires organizationWrite permission.

ActionTry it

Create Interview Schedule

Create a scheduled interview in Ashby for an application. Supply event start and end times and interviewer emails for users in Ashby. Each event may specify an interview UUID; otherwise the organization's default interview is used. Optional event metadata has 100-character key, 512-character value and under-1-KB total limits. Requires interviewsWrite permission.

ActionTry it

Create Interviewer Pause User

Create an interviewer pause for an Ashby user. While paused, the user will not be scheduled for interviews. Only userId is required: startsAt defaults to the current time, and omitting endsAt makes the pause indefinite. A user may have only one pause at a time, whether active or scheduled; creating another returns an error rather than updating the existing pause. Requires an API key with organizationWrite permission.

ActionTry it

Create Interviewer Pool

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

ActionTry it

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

ActionTry it

Create Job Posting

Create a job posting for an existing job. Requires jobsWrite permission. Only jobId is required: title and primary location inherit from the job, status defaults to Draft, isListed defaults to true, and the application form defaults to the organization form. Published postings require a description. The posting always attaches to the external board for the job's brand; board selection and internal-board creation are not supported. isListed=false does not detach it. Confidential jobs force isListed=false. If the job has no default posting, the new posting becomes its default. Repeated calls create new postings.

ActionTry it

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.

ActionTry it

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).

ActionTry it

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.

ActionTry it

Create Project

Create an active project with no candidates; the effective actor becomes its author. Author assignment is not supported. Supply all active required Project custom fields; hidden, inaccessible, or unsupported required fields prevent creation. Custom fields require availability and applicable private/API-only permissions. Confidential projects require Plus, Legacy Plus, or Enterprise availability. Requires projectsWrite. Manage candidate membership using separate endpoints.

ActionTry it

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.

ActionTry it

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.

ActionTry it

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.

ActionTry it

Delete Application

Delete an application by ID in Ashby. Requires candidatesDelete permission. This destructive action deletes the application, not the candidate record. Returns the deleted application's ID on success.

ActionTry it

Delete Email Sync Blocked Address

Remove email addresses from the candidate email sync blocklist. Supply 1-100 addresses exactly as listed; no normalization is performed. Removing an address not on the list succeeds, but that address is omitted from removedAddresses. Removes the blocklist entry, not candidate records or emails. Requires organizationWrite permission.

ActionTry it

Delete Referral

Delete an Ashby referral submission by its ID from referral.list. Requires candidatesDelete permission. The application is not deleted. By default, attribution is unchanged. CreditedToUser removes credited-user attribution while preserving Referral sourcing analytics; Source clears the source; All clears both. Attribution is cleared only if the credited user is still the referral's referrer or the source is still its built-in Referral/Referral Link source, respectively. Response flags report actual changes. Restoring the referral within seven days restores only the referral row, not cleared attribution. referral_not_found can mean the referral does not exist or is not visible to the acting user.

ActionTry it

Delete User Interviewer Pause

Delete an interviewer pause by its pause ID and return the deleted ID. Supply interviewerPauseId, not a user ID. This deletes the pause, not the user. Requires an API key with organizationWrite permission.

ActionTry it

Discard Sequence Draft

Permanently discard a NotStarted sourcing sequence draft owned by the acting user. Drafts created with x-on-behalf-of require that same acting user for discard. Repeating a successful discard is safe. IDs absent from the acting organization also succeed, without confirming prior existence. Existing but inaccessible, other-user-owned, or non-sourcing sequences return sequence_not_found. Started sequences return invalid_input. Requires sourcingWrite permission.

ActionTry it

Generate Report

Start asynchronous Ashby report generation or poll it once. Start with reportId; poll with reportId and returned requestId every second until complete or failed. No automatic polling or downloads. Repeat resultStyle on every poll; omission defaults to inline. Inline caps uncompressed data at 5 MB; overflow returns failed/ReportTooLargeForInline with URL-shaped data. URL style avoids the cap and requires includeHeadersInData=true or omitted. Single-aggregate Show All reports may fall back to inline: inspect data vs url. Presigned URLs are short-lived; downloads require Brotli decoding. Starts: 15/minute, 3 concurrent builds per organization shared with report.synchronous; slots may outlast HTTP calls. Polls bypass these limits. Inspect results.status/failureReason even when success is true. Suitable for builds exceeding 30 seconds. Requires reportsRead.

ActionTry it

Get API Key Info

Retrieve information about the current API key, including its permissions, to check its access level. Requires the apiKeysRead permission.

ActionTry it

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.

ActionTry it

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.

ActionTry it

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.

ActionTry it

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.

ActionTry it

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.

ActionTry it

Get File Info

Retrieve a pre-signed URL for a file referenced by a public API file handle, such as a candidate file, resume, offer letter, or signature-request file.

ActionTry it

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.

ActionTry it

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.

ActionTry it

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.

ActionTry it

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.

ActionTry it

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.

ActionTry it

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.

ActionTry it

Get Job Posting Info

Retrieve detailed information about a published job posting by its ID, including description, application form fields, compensation, and listing settings.

ActionTry it

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.

ActionTry it

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.

ActionTry it

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.

ActionTry it

Get Referral Form

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

ActionTry it

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.

ActionTry it

Get Take-Home Assignment Info

Retrieve one take-home assignment, its submission, and assigned reviewers by ID. interviewId links to the interview definition; pass expand=["interview"] to include it. Missing or invisible assignments return take_home_assignment_not_found. Resolve submitted file handles separately with file.info. Requires interviewsRead.

ActionTry it

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.

ActionTry it

Info Interview Briefing

Retrieve briefing data for an Ashby interview event. Returns application, interview and stage IDs, per-interviewer feedback and training status, and the feedback form definition ID needed to render a briefing or submit feedback through applicationFeedback.submit. By default, interviewers contain userId and status flags only. Expand interviewers for full user and pool details; other expansions include application, candidate, job, interview and feedback form definition inline. Requires interviewsRead.

ActionTry it

Info Notetaker Transcript

Fetch AI Notetaker transcript metadata and a presigned JSON download URL. Requires notetakerRead permission and the organization's AI Notetaker add-on. Discover transcript IDs via interviewEvent.list or interviewSchedule.list. The URL expires after five minutes; call again to refresh it. This action returns the resource URL without downloading the transcript. Free-tier transcripts expire after a retention period; unlimited AI Notetaker avoids that retention expiry. Not-found errors can also mean insufficient access.

ActionTry it

Info Project

Retrieve an Ashby project by UUID, including descriptions and custom fields. Requires an API key with either projectsRead or candidatesRead permission.

ActionTry it

Info Sequence

Retrieve a candidate's sourcing sequence enrollment visible to the acting user. Not-started email stages include resolved, editable subject and HTML body; preserve Ashby token markers when editing. Started sequences return stage metadata without message content. Drafts are visible only to their creator: requests using x-on-behalf-of must continue using the same acting user. Missing, inaccessible and non-sourcing sequences return sequence_not_found. Requires sourcingRead permission.

ActionTry it

Info Sequence Template

Retrieve metadata for a reusable sourcing sequence template visible to the caller. Archived templates may be returned. Message subjects and bodies are not exposed. Returns sequence_template_not_found if the template is missing, is not a reusable sourcing template, or is not visible to the caller. Requires sourcingRead.

ActionTry it

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.

ActionTry it

List Application Feedback

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

ActionTry it

List Application Hiring Team Roles

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.

ActionTry it

List Application History

Retrieve a paginated history of stage transitions for an application, including when a candidate moved through interview stages. Follow the returned cursor to retrieve subsequent pages.

ActionTry it

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.

ActionTry it

List Approvals

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

ActionTry it

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.

ActionTry it

List Brands

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

ActionTry it

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.

ActionTry it

List Candidate Fraud Checks

List one page of fraud checks performed on a candidate in Ashby. Returns checks and their detected fraud signals. Pass nextCursor as cursor to retrieve subsequent pages. Signal categories, names, descriptions, and values are unstable and may change. Requires candidatesRead permission.

ActionTry it

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.

ActionTry it

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.

ActionTry it

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.

ActionTry it

List Candidates

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

ActionTry it

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.

ActionTry it

List Communication Templates

List enabled communication templates, including available email and message templates for candidate outreach. Requires hiringProcessMetadataRead permission.

ActionTry it

List Custom Fields

Retrieve a page of custom field definitions in Ashby, including field types and selectable values where available. Use it to discover fields for candidates, applications, jobs, offers, and openings.

ActionTry it

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.

ActionTry it

List Email Sender

List email addresses available to the acting identity for sending through Ashby. Includes primary addresses, personal aliases, organization aliases and no-reply addresses across brands. Sending endpoints may accept only a subset; sequence.add always rejects NoReply senders. Without X-On-Behalf-Of, the acting identity is the API service user, generally with organization-wide and no-reply addresses. Use authorized X-On-Behalf-Of connection headers to discover a user's personal addresses. Requires sourcingRead permission. No request parameters.

ActionTry it

List Email Sync Blocked Address

List one page of addresses on the candidate email-sync blocklist, oldest first. Use cursor=start for the first page, then pass nextCursor unchanged to retrieve subsequent pages when moreDataAvailable is true. The maximum page size is 100. Returns pagination metadata and the final-page syncToken when provided by Ashby; this endpoint's documented request supports cursor and limit only, not a sync token input. Requires an API key with organizationRead permission.

ActionTry it

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.

ActionTry it

List Hiring Team Roles

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.

ActionTry it

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.

ActionTry it

List Interview Plans

List published interview plans, with an option to include archived plans. Draft interview plans are not returned.

ActionTry it

List Interview Schedules

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

ActionTry it

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.

ActionTry it

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.

ActionTry it

List Interview Types

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.

ActionTry it

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.

ActionTry it

List Job Boards

Retrieve a list of enabled job boards where job postings can be published.

ActionTry it

List Job Postings

List job postings with optional pagination and incremental sync. Published postings are returned by default; unpublished drafts can also be included.

ActionTry it

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.

ActionTry it

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.

ActionTry it

List Locations

List locations and their office and remote work settings. Results are paginated; regions are not returned.

ActionTry it

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.

ActionTry it

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.

ActionTry it

List Projects

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

ActionTry it

List Referrals

List one page of referral submissions visible to the acting user. Optionally filter by application or creation time, or supply a sync token for incremental updates. Continue with nextCursor while moreDataAvailable is true; save the last page's syncToken for future syncs. Beta includeVisibilityConditions returns conditional form rules when available. Requires candidatesRead permission.

ActionTry it

List Sequence

List one page of visible sourcing enrollments across the organization or for a candidate. Lists Running, Paused, Completed, Cancelled and Unsubscribed sequences, not NotStarted drafts. Delayed enrollments appear as Running. Pass nextCursor unchanged to continue paging; use the final-page syncToken for a future incremental sync. Perform a new full sync after changing the acting identity or its visibility. Author-profile-only changes do not cause unchanged enrollments to be returned again. Requires sourcingRead permission.

ActionTry it

List Sequence Template

List one page of reusable sourcing sequence templates visible to the caller. Returns template and cadence metadata only, not message subjects or bodies. Archived templates are excluded by default; set includeArchived=true when maintaining a complete synchronized catalog. Pass nextCursor unchanged to continue paging and use the final-page syncToken for a future incremental sync. Page size defaults to 100 and cannot exceed 100. Requires sourcingRead.

ActionTry it

List Source Tracking Links

List Ashby source tracking links, including their tracking codes, URLs, enabled status, and source IDs. Supports cursor pagination and incremental synchronization; additional pages may be needed to retrieve all links.

ActionTry it

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).

ActionTry it

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.

ActionTry it

List Survey Requests

List one page of existing Ashby survey requests of the required survey type. Requires candidatesRead permission. Supports CandidateExperience or Questionnaire surveys, optional application/candidate filters, and a created-at-or-after filter in Unix milliseconds. Pass nextCursor as cursor for later pages; store the final syncToken for incremental syncs. Returns candidate survey URLs without visiting them. Does not create requests, submit responses, or email candidates.

ActionTry it

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.

ActionTry it

List Take Home Assignments

List one page of take-home assignments visible to the caller. Requires interviewsRead permission. Includes candidate submission metadata and reviewer feedback status. Optionally filter by application or candidate and expand ['interview'] for the linked definition. Pass nextCursor as cursor to continue; retain the final syncToken for incremental syncs. Returned file handles can be resolved separately with file.info; this action does not download files.

ActionTry it

List User Interviewer Pauses

List all active or scheduled interviewer pauses for an Ashby user. Requires organizationRead permission. When called with X-On-Behalf-Of, the acting user must have permission to administer users unless requesting their own data. A null endsAt indicates an indefinite pause. Returns the complete list without pagination; does not create or change pauses.

ActionTry it

List Users

Retrieve a paginated list of users in the organization, including team member details and roles. By default, only active users are returned; deactivated users can be included.

ActionTry it

List Version

List available Ashby API versions and their lifecycle statuses. Callable by any credential; no permission is required.

ActionTry it

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.

ActionTry it

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.

ActionTry it

Reject Offer Approval

Reject the current offer approval step, rejecting the approval process and cancelling the offer. Obtain the offer version entityId, current step, and an eligible approver from approval.list. This does not record a candidate declining an extended offer; use offer.setStatus for that. Requires offersWrite permission.

ActionTry it

Remove Application Hiring Team Member

Unassign a hiring team role from an Ashby user on a specific application. Requires application, team member, and hiring team role IDs and an API key with candidatesWrite permission. Does not delete the user or application. Returns the remaining hiring team members, or an empty list when none remain.

ActionTry it

Remove Candidate from Project

Remove a candidate from a project in Ashby. Supply the candidateId and projectId of the membership to remove. This removes the association, not the candidate or project. Returns the updated candidate. Requires candidatesWrite permission.

ActionTry it

Remove Hiring Team Member

Remove an Ashby user from a hiring team role at the application, job, or opening level. Requires the organizationWrite permission.

ActionTry it

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.

ActionTry it

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.

ActionTry it

Remove Tag Candidate

Remove a tag from an Ashby candidate using the candidate and tag UUIDs. Returns the updated candidate. This removes the association only, not the tag definition. Requires an API key with candidatesWrite permission.

ActionTry it

Remove User from Interviewer Pool

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.

ActionTry it

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

ActionTry it

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.

ActionTry it

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.

ActionTry it

Restore Project

Restore an archived Ashby project, returning the project record. Calling this on an already active project also succeeds. Candidate memberships, history, authorship, confidentiality, descriptions, and custom-field values are preserved. Does not permanently delete projects or candidates. Requires projectsWrite permission and an effective actor allowed to edit the project, including for authorized on-behalf-of requests.

ActionTry it

Search Candidate Suggestions

Search candidates by email and/or name for typeahead suggestions. Returns only candidate ID, name, and primary email, not full candidate records. Requires an API key with the candidatesRead permission.

ActionTry it

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.

ActionTry it

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.

ActionTry it

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.

ActionTry it

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.

ActionTry it

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.

ActionTry it

Set Candidate Fraud Status

Update a candidate's manual fraud-review status and return the updated candidate. Set Fraudulent, NotFraudulent, or Unsure; automatic statuses cannot be set here. Requires an API key with candidatesWrite permission.

ActionTry it

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.

ActionTry it

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.

ActionTry it

Set Custom Field Values Project

Replace a nonempty batch of distinct custom fields on an Ashby project. Includes archived projects. Use null to clear optional fields; required fields cannot be cleared. False and zero are valid. Multi-select values replace all selections. Omitted fields and unrelated properties remain unchanged. Invalid batches update nothing. Avoid concurrent updates: last completed write wins, and retrying can overwrite newer values. Requires projectsWrite, Project custom fields availability, and an effective actor allowed to edit the project. Private and API-only permissions apply; delegated humans cannot change or clear API-only fields. New User references must be active nonservice organization users visible to the actor; unchanged historical references must still belong to the organization and remain visible. Missing historical required fields do not block edits. This action performs no discovery; definition discovery separately needs hiringProcessMetadata:read and User discovery needs organization:read.

ActionTry it

Set Custom Field Values User

Set multiple custom field values on an Ashby employee in one call. Prefer this batch operation over concurrent user.setCustomFieldValue calls to avoid race conditions. Supply a nonempty values array; identify each field by fieldId or its exact beta referenceIdentifier. Values must match the custom field's configured type; see customField.setValue for accepted types. Returns custom field entries, not a full user object. Requires organizationWrite.

ActionTry it

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.

ActionTry it

Set Offer Acceptance Status

Update an Ashby offer's acceptance status to Accepted, Declined, or Cancelled. Requires offersWrite permission. Ashby derives offerStatus from acceptanceStatus; offerStatus cannot be set independently. Set excludeFormDefinition=true to omit the offer form definition from the returned offer.

ActionTry it

Set Offer Decision Timestamp

Update an offer's decidedAt timestamp to the time it was accepted or declined. Requires the offer ID and a UTC decision timestamp. This endpoint updates the timestamp, not the offer's acceptance or approval status. Use excludeFormDefinition to omit the form schema from the response. Requires offersWrite permission.

ActionTry it

Set Opening Archived

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

ActionTry it

Set 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

ActionTry it

Set Project Custom Field Value

Update or clear one project custom field, including on archived projects. Unrelated fields and project properties remain unchanged. Requires projectsWrite, project edit permission, Project custom fields availability, and applicable private and API-only field permissions. Delegated humans cannot change or clear API-only values. New User references must be active nonservice users in the organization visible to the effective actor. Historical references must remain in the organization and visible. Avoid concurrent updates: last completed write wins, and retries can overwrite newer values. Discover definitions and users using separate endpoints.

ActionTry it

Set Status Job Posting

Publish or unpublish an Ashby job posting by UUID. Set Published to publish a draft or Draft to unpublish a published posting. Publishing requires a title, description, and an open parent job. A valid compensation tier is also required if the organization requires compensation display. Ashby validates these existing-state prerequisites. Returns the updated posting. Requires an API key with jobsWrite permission.

ActionTry it

Set User Custom Field Value

Set one custom field value on an Ashby employee. Identify the employee by userId and the field by fieldId or its beta referenceIdentifier. Supply a fieldValue matching the field's type, including explicit null. For location fields, any combination of country, region and city is accepted and geocoded; provide all three for best results. Use user.setCustomFieldValues instead when updating multiple fields on the same employee to avoid race conditions. Requires organizationWrite permission.

ActionTry it

Start Job Approval Process

Start a job's approval process, creating an instance and submitting it to approvers. Requires approvalsWrite permission, organization approvals API access, a matching approval definition, and a job that passes approval validation. An already-pending approval returns an error rather than creating a duplicate. Job-not-found errors can also mean the API key cannot access the job. Optionally attach a plain-text or HTML note. This action submits the request; it does not approve the job.

ActionTry it

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.

ActionTry it

Start Offer Approval Process

Start approval for an offer in WaitingOnApprovalStart state. Sends approval to the configured approvers. Pass the offer version ID from offer.info or offer.list's latestVersion.id, not the offer ID. Optionally attach a note or omit the form definition from the response. Requires offersWrite.

ActionTry it

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.

ActionTry it

Start Sequence Draft

Validate and start an existing NotStarted sourcing sequence draft owned by the acting user. Starting can initiate outreach. Drafts created with x-on-behalf-of must be started with that same acting user. Inspect results.startResult.status: Blocked leaves the draft NotStarted and editable, with errors/requiredActions to resolve. Warnings and informational entries do not block starting. Started returns the updated sequence status. Missing, inaccessible, non-sourcing, or already-started sequences return sequence_not_found. Requires sourcingWrite permission.

ActionTry it

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.

ActionTry it

Submit Application Form

Submit a completed application form for an Ashby job posting using JSON. Use the posting's application form definition to provide field paths and JSON values. This action does not fetch arbitrary URLs, download files, or construct multipart uploads. Unpublished postings are allowed by default; set allowSubmissionForUnpublishedJobPosting=false to reject them. Inspect results.formMessages.blocked even when success is true: a blocking rule may have blocked the application. Requires candidatesWrite permission.

ActionTry it

Synchronous Report

Retrieve Ashby report data synchronously. Requires reportsRead permission. Provider timeout is 30 seconds; use report.generate for long-running reports. Inline data defaults to including headers and has a 5 MB uncompressed cap. Larger inline reports fail with ReportTooLargeForInline and URL-shaped data; request resultStyle=url to avoid that cap, with includeHeadersInData=true or omitted. URL mode may fall back to inline for single aggregate-count Show All reports or legacy cached results; inspect the returned shape, not just the input. This action does not download the presigned URL. Its body is Brotli-compressed JSON and the downloading client must decode Content-Encoding: br; do not attach Ashby API authorization to S3 downloads. Organization limits are 15 requests per minute and 3 concurrent operations, shared with report.generate; build slots can outlast the HTTP request. On 429 wait before retrying. Failed builds raise an error with reportResults retained, including any fallback download URL.

ActionTry it

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.

ActionTry it

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.

ActionTry it

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.

ActionTry it

Update Approval Definition

Create or update the approval definition for an API-managed offer entity. The entity must be within scope of an Ashby approval marked as managed by the API. Use the approval entity ID, such as an offer version ID, not the offer process ID. Steps are ordered, while approvers within each step are unordered. WARNING: an empty approvalStepDefinitions list skips approval and advances the entity to its next stage; the success response then omits results. Set submitApprovalRequest=true to submit immediately, otherwise submission is manual in Ashby (default false). Requires approvalsWrite permission.

ActionTry it

Update Assessment

Update Ashby about the status of a started assessment. Supply a millisecond Unix timestamp and status, or a cancellation reason. Providing assessment_result signals completion and requires assessment_profile_url with type url. All assessment data identifiers must be unique. A status value of Started records the start timestamp. Requires candidatesWrite permission.

ActionTry it

Update Candidate

Update an existing candidate's profile information in Ashby, including contact details, employment and education information, and social profiles.

ActionTry it

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.

ActionTry it

Update Interview Schedule

Add, update or cancel events on an Ashby interview schedule. Only schedules created by the requesting API key can be updated. Supply one event or an array in interviewEvent. Include interviewEventId from interviewSchedule.create to update an existing event; omitting it creates a new event. Each event requires startTime, endTime and interviewers. Cancel one or multiple events with interviewEventIdToCancel. Cancellation with submitted feedback is blocked unless allowFeedbackDeletion=true, which permits deleting that feedback. Returns the updated schedule. Requires interviewsWrite permission.

ActionTry it

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.

ActionTry it

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.

ActionTry it

Update Job Compensation

Replace a job's compensation tiers in Ashby, using components such as salary, equity, bonus, and commission. An empty tier list clears existing compensation.

ActionTry it

Update Job Compensation Settings

Update compensation display settings for a specific Ashby job. Omitted fields remain untouched. Explicit null clears a job-level override to inherit from the parent brand; other values set overrides, including false. This changes display settings, not compensation tiers. Organization-level pay transparency (such as globalRequiredOnPostings) can force compensation display on regardless, so configured values may differ from candidate-visible behavior. Requires jobsWrite permission.

ActionTry it

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.

ActionTry it

Update Job Posting Compensation

Update compensation for an existing Ashby job posting. Requires jobsWrite. A non-empty compensationTiers array replaces posting compensation and stops parent-job inheritance; null restores inheritance. Multiple tiers require titles. Set includeUnpublishedJobPostings=true for draft postings. Returns the updated posting, including configured display settings and computed compensation display; organization-level pay transparency rules can force compensation display on.

ActionTry it

Update Job Posting Compensation Settings

Update compensation display settings for one job posting, not its compensation ranges. Omit a setting to leave it unchanged, pass null to inherit from the parent job, or supply a value to override it. Set includeUnpublishedJobPostings=true for draft postings. Organization pay transparency requirements may force compensation on despite configured settings; inspect computed shouldDisplayCompensation separately. Requires an API key with jobsWrite permission.

ActionTry it

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.

ActionTry it

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.

ActionTry it

Update Location Name

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

ActionTry it

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.

ActionTry it

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.

ActionTry it

Update Offer

Update an existing Ashby offer by submitting its form values. Creates a new offer version and retriggers any necessary approval steps; repeated calls are not a no-op. Retrieve the form with offer.info first. Ordinary fields require path. Offer custom fields may use beta referenceIdentifier instead; when both are supplied they must identify the same field, which Ashby verifies. Set excludeFormDefinition=true to omit the response form. Requires an API key with offersWrite permission.

ActionTry it

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.

ActionTry it

Update Project

Update a project's title or description, including archived projects. Supply at least one editable field. Omitted fields remain unchanged; null or empty descriptions clear existing content. Plain-text whitespace is preserved. Author, confidentiality, archive state, candidate memberships and custom fields are preserved. Missing historical required custom fields do not block edits. Requires projectsWrite and an effective actor allowed to edit the project, including for authorized on-behalf-of requests.

ActionTry it

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.

ActionTry it

Update Sequence Stage

Replace subject or HTML body of one email stage in a not-started sequence. Requires sourcingWrite permission and at least one of subject or body. Only supplied fields are replaced; the reusable template is unchanged. Drafts are editable only by their creating acting user, so X-On-Behalf-Of requests must keep the same user. sequence_not_found may mean inaccessible. HTML may preserve, move, repeat, or remove Ashby token markers returned by sequence.info or sequence.add; unknown or malformed markers cause invalid_input. Ashby controls token identity and final send-time values. This action does not start the sequence.

ActionTry it

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.

ActionTry it

Upload File Candidate

Attach an already-uploaded file to a candidate using a JSON fileHandle. First call file.createFileUploadHandle and upload the file to its presigned URL, then pass the returned handle here. This action does not upload bytes, accept local paths, or implement the multipart branch. Returns the updated candidate. Requires candidatesWrite permission.

ActionTry it

Upload Resume Candidate

Attach an uploaded resume to an existing candidate using a file handle. First call file.createFileUploadHandle and upload the resume file bytes to the returned presigned URL. Then pass that handle as resumeHandle here. This action sends JSON only, does not fetch arbitrary URLs, and does not accept multipart files or local paths. Requires candidatesWrite permission.

ActionTry it

How the Ashby integration works

The Ashby integration connects your Dench AI CRM directly to Ashby, so agents can read and act on your Ashby data as part of everyday work — answering questions in chat, keeping your CRM in sync, and running automations without anyone copying data between tools.

191 actions are available for agents to invoke on your behalf, and 28 triggers can start a Dench automation the moment something changes in Ashby. Every call runs through Ashby's own authorization, scoped to the account you connect.

Set up Ashby in Dench

  1. 1

    Sign in to your Dench workspace and open Integrations.

  2. 2

    Find Ashby and click Connect — you'll authorize access through Ashby's own sign-in flow. No API keys or code required.

  3. 3

    Ask an agent to use Ashby in chat, or wire a Ashby trigger into an automation.

  4. 4

    Manage or disconnect the connection any time from workspace settings.

Frequently asked questions

How does the Ashby integration work with Dench?

The Dench Ashby integration connects your AI CRM to Ashby, so AI agents can work with your Ashby data as part of chats, automations, and CRM workflows. You connect your account once, and every agent in your workspace can use it — governed by your workspace permissions.

What actions can AI agents perform with Ashby via Dench?

The Ashby integration currently exposes 191 actions, including Add Candidate Tag, Add Candidate to Project, Add Completed Assessment to Candidate, Add Existing Email Message to Candidate, Add Hiring Team Member, and Add Hiring Team Member to Application. Agents invoke them on your behalf from chat or from automations.

Can Dench react to events in Ashby automatically?

Yes. The Ashby integration provides 28 triggers — such as Application Signature Request Updated, Application Submitted, Application Updated, and Candidate Deleted — that can start a Dench automation the moment something happens in Ashby.

Do I need to write code to connect Ashby to Dench?

No. You connect Ashby from your Dench workspace using Ashby's own sign-in and authorization flow — no API keys to copy, no glue code to maintain.

Is the Ashby integration secure?

Connections are authorized through Ashby's own authentication flow, and Dench stores only the authorization needed to act on your behalf. You can review and disconnect the Ashby connection from your workspace settings at any time.

Ashby | Dench AI CRM