---
title: Ashby API Integration on Truto
slug: ashby
category: ATS
canonical: "https://truto.one/integrations/detail/ashby/"
---

# Ashby API Integration on Truto



**Category:** ATS  
**Status:** Generally available

## Unified APIs

### Unified ATS API

- **Activities** — The activity on a candidate performed by a user.
- **Applications** — The applications represent an application for a job.
- **Attachments** — The attachments represent an attachment for a candidate.
- **Candidates** — The candidates represent a candidate.
- **Departments** — The departments represent a department.
- **Interviews** — The interviews represent an interview.
- **Job Form Fields** — The form fields used to apply to a job.
- **Job Interview Stages** — The job interview stages represent a job interview stage.
- **Jobs** — The jobs represent a job.
- **Offers** — The offers represent an offer.
- **Offices** — The offices represent an office.
- **Reject Reasons** — The reject reasons represent a reject reason.
- **Scorecards** — The scorecards represent a scorecard.
- **Tags** — The tags represent a tag for a candidate.
- **Users** — The users represent a user.

## MCP-ready AI tools

Truto exposes 111 tools for Ashby that AI agents can call directly.

- **list_all_ashby_jobs** — List all jobs in Ashby with optional filtering by status. Returns job id, title, status, employmentType, locationId, departmentId, jobPostingIds, and hiringTeam details.
- **get_single_ashby_job_by_id** — Get information about a specific job in Ashby. Returns fields including id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds, customFields, jobPostingIds, customRequisitionId, brandId, hiringTeam, author, createdAt, and updatedAt.
- **create_a_ashby_job** — Create a new job in Ashby with required parameters title, teamId, and locationId. Returns job id, title, status, locationId, departmentId, defaultInterviewPlanId, brandId, hiringTeam, author, and timestamps.
- **update_a_ashby_job_by_id** — Update an existing job in Ashby by jobId. Returns updated job fields including id, title, status, locationId, defaultInterviewPlanId, customRequisitionId, hiringTeam, author, createdAt, updatedAt, openedAt, and closedAt.
- **ashby_jobs_set_status** — Set the status of a job by id in Ashby. Requires jobId and status. Returns updated job fields including id, title, status, employmentType, locationId, departmentId, hiringTeam, author, createdAt, updatedAt, openedAt, and closedAt.
- **get_single_ashby_job_posting_by_id** — Retrieve an individual job posting by id in Ashby. Returns fields including title, descriptionPlain, descriptionHtml, departmentName, teamName, locationName, and linkedData for rich search engine results.
- **list_all_ashby_job_postings** — List all published job postings in Ashby. Returns id, title, jobId, departmentName, teamName, locationName, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, and updatedAt fields. Use listedOnly=true to fetch only publicly displayable job postings.
- **list_all_ashby_users** — Get a list of all Ashby users. Returns id, firstName, lastName, email, globalRole (user's access level), isEnabled, and updatedAt fields. Requires organizationRead permission.
- **get_single_ashby_user_by_id** — Get an Ashby user by id. Requires userId. Returns id, firstName, lastName, email, globalRole, isEnabled, and updatedAt fields in the response.
- **list_all_ashby_candidates** — List candidates in Ashby. Returns candidate id, createdAt, updatedAt, name, primaryEmailAddress, emailAddresses, primaryPhoneNumber, phoneNumbers, socialLinks, and tags fields in the response.
- **get_single_ashby_candidate_by_id** — Get a single candidate by externalMappingId in Ashby. Returns candidate details including id and externalMappingId.
- **update_a_ashby_candidate_by_id** — Update an existing candidate by candidateId in Ashby. Returns updated candidate fields including id, createdAt, updatedAt, name, primaryEmailAddress, phoneNumbers, socialLinks, tags, position, company, school, applicationIds, and resumeFileHandle.
- **ashby_candidates_project** — Add a candidate to a project in Ashby. Requires candidateId and projectId. Returns candidate details including id, name, primaryEmailAddress, phoneNumbers, socialLinks, tags, position, and company.
- **ashby_candidates_tag** — Add a tag to a candidate in Ashby using candidateId and tagId. Returns candidate details including id, name, primaryEmailAddress, phoneNumbers, socialLinks, tags, position, and company.
- **ashby_candidates_anonymize** — Anonymize a candidate by id in Ashby. Requires candidateId. This action cannot be reversed and requires all of the candidate's applications to be archived or hired. Returns candidate fields including id, createdAt, updatedAt, name, primaryEmailAddress, emailAddresses, primaryPhoneNumber, phoneNumbers, socialLinks, tags, position, and company.
- **list_all_ashby_applications** — Get all applications in the organization in Ashby. Returns application id, createdAt, updatedAt, status, candidate info (id, name, primaryEmailAddress, primaryPhoneNumber), currentInterviewStage (id, title, type), and source (id, title, isArchived). Requires candidatesRead permission.
- **get_single_ashby_application_by_id** — Fetch application details by id in Ashby. Requires applicationId. Returns id, createdAt, updatedAt, status, candidate info, currentInterviewStage, and source fields.
- **ashby_applications_change_stage** — Change the stage of an application by applicationId and interviewStageId in Ashby. Returns updated application id, status, candidate info, currentInterviewStage, and source details. Pass archiveReasonId and archiveEmail when moving to an Archived stage.
- **create_a_ashby_application** — Create an application by considering a candidate for a job in Ashby. Requires candidateId and jobId. Returns application id, createdAt, updatedAt, status, candidate details, currentInterviewStage, and source information.
- **update_a_ashby_application_by_id** — Update an application by id in Ashby. Requires applicationId. Returns updated application fields including id, createdAt, updatedAt, status, customFields, candidate details, currentInterviewStage, and source.
- **ashby_applications_transfer** — Transfer an application with applicationId to a different job with jobId, interviewPlanId, and interviewStageId in Ashby. Returns updated application id, status, candidate info, current interview stage, and source.
- **ashby_applications_change_source** — Change the source of an application in Ashby. Requires applicationId and sourceId. Returns updated application fields including id, createdAt, updatedAt, status, customFields, candidate details, currentInterviewStage, and source information.
- **get_single_ashby_file_by_id** — Retrieve the URL of a file associated with a candidate in Ashby using fileHandle. Returns the file URL. Note: URL expires after 30 days.
- **ashby_files_download** — Use this endpoint to download a file from the system by specifying the file’s path in the request URL. The path should contain the full location or URL of the file you want to retrieve. The response returns the file as a binary stream, allowing you to save or process it as needed
- **create_a_ashby_webhook** — Create a webhook setting with webhookType, requestUrl, and secretToken in Ashby. Returns id, enabled status, requestUrl, secretToken, and webhookType in the response.
- **list_all_ashby_interview_stages** — List all interview stages for an interview plan in Ashby. Requires interviewPlanId. Returns stages in order.
- **get_single_ashby_interview_stage_by_id** — Fetch interview stage details by id in Ashby. Requires interviewStageId. Returns detailed information about the interview stage including its unique id and related metadata.
- **list_all_ashby_hiring_team_roles** — List possible hiring team roles in an organization in Ashby. Returns an array of role titles or objects with id and title based on namesOnly parameter.
- **list_all_ashby_locations** — List all locations in Ashby. Returns id, name, isArchived, address, isRemote, workplaceType, parentLocationId, and type fields for each location. Does not return regions.
- **get_single_ashby_location_by_id** — Get details for a single location by id in Ashby. Returns id, name, isArchived, address (including postalAddress with country, region, locality, postalCode, streetAddress), isRemote, workplaceType, parentLocationId, and type.
- **create_a_ashby_location** — Create a location with required parameters name and type in Ashby. Returns the created location's id, name, type, address details, parentLocationId, isRemote, and workplaceType.
- **ashby_locations_archive** — Archive a location by id in Ashby. Returns the location's id, name, isArchived status, address details, isRemote flag, workplaceType, parentLocationId, and type.
- **ashby_locations_move** — Move a location by specifying locationId and parentLocationHierarchyId in Ashby. Returns updated location fields including id, name, isArchived, address, isRemote, workplaceType, parentLocationId, and type.
- **ashby_locations_restore** — Restore an archived location by locationId in Ashby. Returns id, name, isArchived status, address details, isRemote, workplaceType, parentLocationId, and type fields in the response.
- **list_all_ashby_departments** — List all departments in Ashby. Returns id, name, isArchived, and parentId fields for each department.
- **get_single_ashby_department_by_id** — Fetch department details by id in Ashby. Requires departmentId. Returns id, name, isArchived, and parentId fields in the response.
- **create_a_ashby_department** — Create a department with name and optional parentId in Ashby. Returns id, name, isArchived, and parentId of the created department.
- **update_a_ashby_department_by_id** — Update a department using departmentId and name in Ashby. Returns id, name, isArchived, and parentId of the updated department.
- **delete_a_ashby_department_by_id** — Archive a department by departmentId in Ashby. Returns the department's id, name, isArchived status, and parentId in the response.
- **ashby_departments_move** — Move a department by departmentId to another parent using parentId in Ashby. Returns id, name, isArchived, and parentId of the moved department.
- **ashby_departments_restore** — Restore a department by departmentId in Ashby. Returns the department's id, name, isArchived status, and parentId.
- **list_all_ashby_candidate_tags** — List all candidate tags in Ashby. Returns id, title, and isArchived fields for each candidate tag. Requires includeArchived parameter to specify if archived tags should be included.
- **create_a_ashby_candidate_tag** — Create a candidate tag with the required title in Ashby. Returns id, title, and isArchived status of the created or existing tag.
- **list_all_ashby_sources** — List all sources in Ashby. Returns fields id, title, isArchived, and sourceType with its id, title, and isArchived. Requires includeArchived parameter to include archived items.
- **list_all_ashby_archive_reasons** — List archive reasons in Ashby. Returns id, text, reasonType, and isArchived fields for each archive reason. Requires includeArchived parameter to specify if archived reasons are included.
- **list_all_ashby_feedback_form_definitions** — List all feedback form definitions in Ashby. Returns id, title, isArchived, formDefinition with sections and fields, organizationId, isDefaultForm, and interviewId.
- **get_single_ashby_feedback_form_definition_by_id** — Get a single feedback form by id in Ashby. Requires feedbackFormDefinitionId. Returns id, title, isArchived, formDefinition with sections and fields, organizationId, isDefaultForm, and interviewId.
- **list_all_ashby_interview_plans** — List all interview plans in Ashby. Returns id, title, and isArchived fields for each interview plan. Requires includeArchived parameter to specify if archived plans are included.
- **list_all_ashby_interviews** — List all interviews in Ashby. Returns id, title, isArchived, isDebrief, instructionsHtml, instructionsPlain, jobId, and feedbackFormDefinitionId for each interview. Requires interviewsRead permission.
- **get_single_ashby_interview_by_id** — Fetch interview details by id in Ashby. Requires id. Returns id, title, isArchived, isDebrief, instructionsHtml, instructionsPlain, jobId, and feedbackFormDefinitionId fields.
- **list_all_ashby_openings** — List openings in Ashby. Returns id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, and latestVersion with details like description, authorId, createdAt, teamId, jobIds, targetHireDate, targetStartDate, isBackfill, employmentType, locationIds, hiringTeam, and customFields.
- **get_single_ashby_opening_by_id** — Get information about a specific opening by id in Ashby. Returns fields including id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, and latestVersion with details like description, authorId, jobIds, hiringTeam, and customFields.
- **create_a_ashby_opening** — Create an opening in Ashby with required parameters including jobIds, teamId, and employmentType. Returns the created opening with fields such as identifier, description, targetHireDate, and openingState.
- **update_a_ashby_opening_by_id** — Update an opening by openingId in Ashby. Returns updated opening fields including id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, and latestVersion with details like identifier, description, teamId, jobIds, targetHireDate, targetStartDate, isBackfill, employmentType, locationIds, hiringTeam, and customFields.
- **list_all_ashby_candidate_notes** — List all notes for a candidate in Ashby using candidateId. Returns note id, createdAt timestamp, content, and author details including id, firstName, lastName, and email.
- **create_a_ashby_candidate_note** — Create a note on a candidate in Ashby with candidateId, note content, and type. Returns id, createdAt, content, and author details including id, firstName, lastName, and email.
- **list_all_ashby_interview_schedules** — Get all interview schedules. Returns id, status, applicationId, interviewStageId, and interviewEvents including event id, startTime, endTime, location, meetingLink, and interview details in Ashby.
- **create_a_ashby_interview_schedule** — Create a scheduled interview in Ashby with applicationId and interviewEvents including startTime, endTime, and interviewers with email and feedbackRequired. Returns confirmation of the created schedule.
- **update_a_ashby_interview_schedule_by_id** — Update an interview schedule by interviewScheduleId in Ashby. Requires interviewScheduleId and interviewEvent with startTime, endTime, and interviewers. To update an event, include interviewEventId. Returns updated schedule details.
- **ashby_interview_schedules_cancel** — Cancel an interview schedule by id in Ashby. Requires id parameter. Returns success or error response indicating the cancellation status.
- **list_all_ashby_interview_events** — List interview events for a given interviewScheduleId in Ashby. Returns id, interviewId, interviewScheduleId, interviewerUserIds, createdAt, startTime, endTime, feedbackLink, location, meetingLink, hasSubmittedFeedback, and nested interview details including id, title, isArchived, isDebrief, instructionsHtml, instructionsPlain, jobId, and feedbackFormDefinitionId.
- **list_all_ashby_application_feedbacks** — List all feedback associated with an application in Ashby. Requires applicationId. Returns id, formDefinition, submittedValues, and submittedByUser fields in the response.
- **create_a_ashby_application_feedback** — Submit application feedback for applicationId, userId, interviewEventId, and formDefinitionId in Ashby. Returns submittedValues containing the feedback fields and their submitted values.
- **list_all_ashby_offers** — Get a list of all offers with their latest version in Ashby. Returns id, decidedAt, applicationId, acceptanceStatus, offerStatus, and latestVersion including startDate, salary, createdAt, openingId, customFields, fileHandles, and author details.
- **get_single_ashby_offer_by_id** — Get details about a single offer by id in Ashby. Requires offer id. Returns fields including id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with salary and author details, versions, and formDefinition.
- **create_a_ashby_offer** — Create a new offer with offerProcessId, offerFormId, and offerForm containing fieldSubmissions in Ashby. Returns offer id, acceptanceStatus, offerStatus, latestVersion details including startDate, salary, customFields, fileHandles, and author info.
- **update_a_ashby_offer_by_id** — Update an existing offer by providing offerId and offerForm with fieldSubmissions in Ashby. Returns updated offer details including id, acceptanceStatus, offerStatus, latestVersion with salary, startDate, customFields, fileHandles, and author information.
- **list_all_ashby_survey_form_definitions** — List all survey form definitions in Ashby. Returns id, title, isArchived, formDefinition with sections and fields, and surveyType for each survey form definition.
- **list_all_ashby_survey_submissions** — List all survey submissions by surveyType in Ashby. Returns id, submittedAt, candidateId, applicationId, surveyType, formDefinition, and submittedValues fields in the response.
- **create_a_ashby_survey_submission** — Create a new survey submission with candidateId, applicationId, surveyFormDefinitionId, and submittedValues in Ashby. Returns id, submittedAt, candidateId, applicationId, surveyType, formDefinition, and submittedValues.
- **list_all_ashby_applications_history** — Fetch a paginated list of application history items for an application in Ashby. Requires applicationId. Returns id, stageId, title, enteredStageAt, leftStageAt, stageNumber, allowedActions, and actorId fields in the response.
- **update_a_ashby_applications_history_by_id** — Update the history of an application in Ashby. Requires applicationId and applicationHistory array containing all history events. Returns success response confirming the update.
- **create_a_ashby_applications_hiring_team_member** — Add a user to the hiring team for an application in Ashby. Requires applicationId, teamMemberId, and roleId. Returns success response confirming the addition.
- **delete_a_ashby_applications_hiring_team_member_by_id** — Remove a hiring team member from an application in Ashby using applicationId, teamMemberId, and roleId. The response confirms the removal.
- **create_a_ashby_application_form** — Submit an application for a job posting in Ashby with jobPostingId and applicationForm. Returns submitted form instance including id, form definition with sections and fields, and submitted values.
- **update_a_ashby_approval_definition_by_id** — Create or update an approval definition for an entityType and entityId in Ashby. Returns id, entityType, entityId, and approvalStepDefinitions with approvalsRequired and approvers.
- **list_all_ashby_assessment** — List assessments in Ashby. Returns assessment_type_id, name, and description for each assessment.
- **create_a_ashby_assessment** — Add a completed assessment to a candidate in Ashby. Requires candidateId, partnerId, and assessment object with timestamp. Returns applicationId, assessmentId, assessmentName, assessmentTypeId, candidateId, metadata, and result fields.
- **update_a_ashby_assessment_by_id** — Update the status of a started assessment in Ashby. Requires assessment_id and timestamp. Include assessment_status unless cancelled_reason is provided. Response confirms update success.
- **ashby_assessment_cancel** — Cancel an assessment by assessment_id in Ashby. Returns update_request with assessment_id, assessment_status, assessment_profile_url, assessment_result, cancelled_reason, and metadata fields.
- **list_all_ashby_candidate_search** — Search candidates by email and name in Ashby. Requires email and/or name. Returns candidate id, name, primaryEmailAddress, position, company, school, tags, and resumeFileHandle in the response. Results limited to 100.
- **list_all_ashby_close_reason** — List all close reasons with includeArchived parameter in Ashby. Returns id, reasonText, and isArchived fields for each close reason.
- **list_all_ashby_communication_template** — List all enabled communication templates in Ashby. Returns id, createdAt, updatedAt, title, and intendedTypes fields for each template.
- **list_all_ashby_custom_field** — List all custom fields in Ashby. Returns fields including id, title, objectType, fieldType, isPrivate, isArchived, and selectableValues.
- **get_single_ashby_custom_field_by_id** — Get information about a custom field by customFieldId in Ashby. Returns id, isPrivate, title, objectType, isArchived, fieldType, and selectableValues with label, value, and isArchived.
- **create_a_ashby_custom_field** — Create a new custom field in Ashby with fieldType, objectType, and title. Returns id, title, objectType, fieldType, isPrivate, isArchived, and selectableValues if applicable.
- **ashby_custom_field_set_value** — Set the value of a custom field for a given object in Ashby. Requires objectId, objectType, and fieldId. Returns id, title, and value of the updated custom field.
- **create_a_ashby_hiring_team** — Add a user to the hiring team at the application, job, or opening level in Ashby. Requires applicationId, jobId, or openingId, teamMemberId, and roleId. Returns success or error response.
- **delete_a_ashby_hiring_team_by_id** — Remove a user from the hiring team by unassigning a role using openingId, teamMemberId, and roleId in Ashby.
- **list_all_ashby_interview_stage_groups** — List all interview stage groups for an interview plan in Ashby. Returns an array of interview stage group objects in order.
- **list_all_ashby_interviewer_pools** — List all interviewer pools in Ashby. Returns id, title, isArchived, and trainingPath including trainingStages with details such as interviewerRole, interviewsRequired, approvalRequired, and approvers.
- **get_single_ashby_interviewer_pool_by_id** — Get information about an interviewer pool by id in Ashby. Returns id, title, isArchived status, trainingPath details including trainingStages and approvers, qualifiedMembers, and trainees with their currentProgress.
- **create_a_ashby_interviewer_pool** — Create an interviewer pool with title and requiresTraining in Ashby. Returns id, title, isArchived, trainingPath with trainingStages and approvers, qualifiedMembers, and trainees with currentProgress.
- **update_a_ashby_interviewer_pool_by_id** — Update an interviewer pool with id. Returns id, title, isArchived, trainingPath with trainingStages and approvers, qualifiedMembers, and trainees with currentProgress in Ashby.
- **ashby_interviewer_pools_archive** — Archive an interviewer pool by providing interviewerPoolId. Returns id, title, isArchived status, trainingPath details, qualifiedMembers, and trainees in the response.
- **ashby_interviewer_pools_restore** — Restore an archived interviewer pool by providing interviewerPoolId. Returns id, title, isArchived status, trainingPath details, qualifiedMembers, and trainees in Ashby.
- **create_a_ashby_interviewer_pool_user** — Add a user to an interviewer pool in Ashby with required parameters interviewerPoolId and userId. Returns the pool's id, title, isArchived status, trainingPath details, qualifiedMembers, and trainees.
- **delete_a_ashby_interviewer_pool_user_by_id** — Remove a user from an interviewer pool in Ashby. Requires interviewerPoolId and userId. Returns updated pool details including id, title, isArchived, trainingPath, qualifiedMembers, and trainees.
- **list_all_ashby_job_search** — Search jobs by requisitionId in Ashby. Returns job details including id, title, status, employmentType, locationId, departmentId, hiringTeam, author, createdAt, updatedAt, openedAt, and closedAt.
- **list_all_ashby_job_board** — List all enabled job boards in Ashby. Returns id, title, and isInternal fields for each job board. Requires jobsRead permission.
- **list_all_ashby_job_template** — List all active and inactive job templates in Ashby. Returns id, title, status, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds, createdAt, updatedAt, and location details including name and address.
- **list_all_ashby_openings_search** — Search openings by identifier in Ashby. Requires identifier. Returns fields including id, openedAt, closedAt, isArchived, openingState, and latestVersion with details like description, authorId, jobIds, hiringTeam, and customFields.
- **list_all_ashby_projects** — List projects in Ashby. Returns id, title, description, isArchived, confidential, authorId, createdAt, and customFieldEntries for each project.
- **get_single_ashby_project_by_id** — Get information about a specific project by id in Ashby. Returns fields id, title, description, isArchived, confidential, authorId, createdAt, and customFieldEntries with id, title, and value.
- **list_all_ashby_projects_search** — Search projects by title in Ashby. Requires title parameter. Returns fields id, title, description, isArchived, confidential, authorId, createdAt, and customFieldEntries in the response. Limited to 100 results.
- **list_all_ashby_referrals** — Create a referral with id, creditedToUserId, and fieldSubmissions in Ashby. Returns referral id, createdAt, status, candidate details, job info, and credited user info.
- **get_single_ashby_referral_form_by_id** — Fetch default referral form in Ashby. Returns id, title, isArchived, formDefinition with sections and fields, organizationId, and isDefaultForm.
- **list_all_ashby_source_tracking_links** — List all source custom tracking links in Ashby. Returns id, code, enabled status, sourceId, and link for each tracking link. Requires includeDisabled parameter to include disabled links.
- **list_all_ashby_survey_requests** — List all survey requests filtered by surveyType in Ashby. Requires surveyType parameter. Returns id, candidateId, applicationId, surveyFormDefinitionId, and surveyUrl for each survey request.
- **create_a_ashby_survey_request** — Create a survey request with candidateId, applicationId, and surveyFormDefinitionId in Ashby. Returns id, candidateId, applicationId, surveyFormDefinitionId, and surveyUrl. Note: URL expires after 30 days and is not emailed automatically.
- **list_all_ashby_users_search** — Search for an Ashby user by email. Requires email parameter. Returns user fields id, firstName, lastName, email, globalRole, isEnabled, and updatedAt.

## How it works

1. **Link your customer's Ashby account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Ashby.** The Proxy API is a 1-to-1 mapping of the Ashby API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Automate new hire provisioning from accepted offers** — HRIS and onboarding platforms can listen for offer acceptance events via webhooks, then pull structured offer and candidate data to automatically create employee records — eliminating manual data entry between Ashby and downstream systems.
- **Trigger background checks on application stage changes** — Identity verification and background check SaaS tools can react to stage transitions in Ashby, automatically initiating checks and writing results back to custom fields so recruiters never leave the ATS.
- **Push assessment results directly into recruiter workflows** — Technical assessment and skills testing platforms can use Ashby's dedicated assessment endpoints to inject scores, completion timestamps, and result URLs directly onto the candidate's application — keeping the entire evaluation loop inside the ATS.
- **Sync candidate and job data into workforce planning tools** — Headcount planning and analytics SaaS products can continuously pull jobs, openings, departments, and application pipeline data from Ashby to power real-time hiring forecasts and capacity models.
- **Enrich interview workflows with AI-generated feedback** — Interview intelligence platforms can pull upcoming interview events and schedules from Ashby, join meetings automatically, then push structured feedback back as application feedback — closing the loop for hiring managers who forget to write notes.

## What you can build

- **Offer-to-onboarding pipeline** — Automatically extract candidate details, compensation, and start dates from accepted Ashby offers to pre-populate new hire records in your HRIS or payroll product.
- **Real-time application stage tracker** — Subscribe to Ashby webhooks and pull application history to build a live pipeline visualization showing every candidate's progression across interview stages.
- **Embedded assessment scorecards** — Create and update assessments on Ashby applications so your test scores, completion times, and result links appear natively inside the recruiter's ATS view.
- **Automated candidate tagging and project assignment** — Tag candidates and assign them to Ashby projects programmatically based on external signals like sourcing campaigns, event attendance, or CRM engagement scores.
- **Custom field sync for verification status** — Write structured data like background check results, identity verification status, or compliance flags back to Ashby custom fields so recruiters see real-time external data without switching tools.
- **Department and location hierarchy sync** — Keep your product's org structure in sync with Ashby by reading and writing departments, locations, and their hierarchical relationships via create, move, and archive operations.

## FAQs

### What authentication method does the Ashby integration use?

Ashby's API uses API key-based authentication. Truto handles secure credential storage and auth management, so your end users simply provide their Ashby API key during the connection flow.

### Can I read and write custom fields on Ashby objects?

Yes. You can list and retrieve custom field definitions, create new custom fields, and set values on specific records using the custom field set value endpoint — useful for pushing external data like verification statuses or scores back into Ashby.

### Does Truto support Ashby webhooks for real-time event triggers?

Yes. The create webhook endpoint lets you register webhook subscriptions in Ashby to listen for events like application stage changes, offer updates, or interview scheduling — enabling real-time, event-driven integrations.

### What Unified API resources map to Ashby?

Truto's Unified ATS API covers Applications, Candidates, Jobs, Offers, Interviews, Departments, Offices (Locations), Users, Tags, Reject Reasons, Scorecards, Attachments, Activities, Job Interview Stages, and Job Form Fields — all normalized across ATS providers including Ashby.

### Can I manage the full application lifecycle programmatically?

Yes. You can create applications, change their stage, transfer them between jobs, update their source, manage hiring team members, and track full application history — covering the complete candidate journey from apply to hire.

### Are Ashby's assessment-specific endpoints supported?

Yes. Truto exposes dedicated endpoints to create, update, and cancel assessments on Ashby applications, making it straightforward for testing and evaluation platforms to push structured results directly into the ATS.

## Related reading

- [Connect Ashby to ChatGPT: Manage Hiring Pipelines & Candidate Data](https://truto.one/blog/connect-ashby-to-chatgpt-manage-hiring-pipelines-candidate-data/) — Learn how to connect Ashby to ChatGPT using a managed MCP server. Automate candidate sourcing, application updates, and interview scheduling without custom code.
- [Connect Ashby to Claude: Automate Hiring Pipelines via MCP](https://truto.one/blog/connect-ashby-to-claude-streamline-hiring-workflows-job-postings/) — Learn how to connect Ashby to Claude using a managed MCP server. Automate your hiring pipeline, candidate sourcing, and offer generation workflows without writing integration boilerplate.
- [Connect Ashby to AI Agents: Automate Talent Sourcing & Offer Processes](https://truto.one/blog/connect-ashby-to-ai-agents-automate-talent-sourcing-offer-processes/) — Learn how to connect Ashby to AI Agents using Truto's /tools endpoint. A complete guide to binding 33 Ashby tools and automating ATS workflows without hand-written integration boilerplate.
