> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to Ashby

The Ashby connector lets your AI agent act in each user's Ashby account. Each user connects their own Ashby API key once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 98 tools.

**Authentication:** API Key
**Categories:** Productivity
**Tools:** 98: 59 read, 34 write, 5 destructive
**Users sign in with:** API key
**Built by:** Scalekit connector
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=ASHBY)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Ashby connection

   In **AgentKit > Connections**, create an Ashby connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'ashby_application_feedback_list',
  toolInput: {},
  connector: 'ashby',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="ashby_application_feedback_list",
    tool_input={},
    connection_name="ashby",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `ashby_application_feedback_list`

List Application Feedback · Read-only

List interview and application feedback submitted in Ashby, page by page, optionally for one application.
Returns feedback records (id, application, submitting user, form definition, submitted values, submittedAt) plus moreDataAvailable and nextCursor.
Use to read scorecards. Use ashby_application_feedback_submit to submit feedback.
Requires the candidatesRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `application_id` (`string`, optional): The id of the application you'd like to fetch feedback for. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `created_after` (`integer`, optional): Unix timestamp (milliseconds). When provided, only feedback created at or after this time is returned. Example: 1659979196538.
- `cursor` (`string`, optional): Pagination cursor. Leave empty for the first page, then pass the nextCursor value from the previous response to fetch the next page. Example: G8.
- `limit` (`integer`, optional): Maximum number of results to return per page, from 1 to 100. Example: 25.
- `sync_token` (`string`, optional): Incremental sync token. Pass the syncToken returned after the last page of a previous full listing to get only records changed since then. Leave empty for a full listing. Example: jYnEBmjzR.

Example input: `{}`

### `ashby_application_get`

Get Application · Read-only

Get one Ashby application by application id, or by the submitted form instance id returned when an application form is submitted.
Returns the application with candidate, job, current interview stage, status, source, hiring team and history references.
Use when you know the application id. Use ashby_applications_list to browse applications.
Requires the candidatesRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `application_id` (`string`, optional): The id of the application to fetch. Provide this or submitted_form_instance_id; if both are given, application_id is used. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `expand` (`array`, optional): Related objects to include in the response. Allowed values: openings, applicationFormSubmissions, referrals. Example: ["openings", "referrals"].
- `submitted_form_instance_id` (`string`, optional): The id of the application's submitted form instance. Provide this or application_id. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{}`

### `ashby_application_hiring_team_roles_list`

List Application Hiring Team Roles · Read-only

List the hiring team roles that can be assigned on applications in Ashby.
Returns role records (id and title).
Use to find a role id before calling ashby_application_hiring_team_member_add. Use ashby_hiring_team_roles_list for roles across jobs and openings.
Requires the candidatesRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `ashby_application_history_list`

List Application History · Read-only

List the stage history of one Ashby application, page by page.
Returns history events (stage id and title, stage number, enteredStageAt, archive reason) plus moreDataAvailable and nextCursor.
Use to see how an application moved through the pipeline. Use ashby_application_get for the application's current state.
Requires the candidatesRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `application_id` (`string`, required): The id of the application to fetch. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `cursor` (`string`, optional): Pagination cursor. Leave empty for the first page, then pass the nextCursor value from the previous response to fetch the next page. Example: G8.
- `limit` (`integer`, optional): Maximum number of history events to return per page. Example: 25.

Example input: `{"application_id":"<application_id>"}`

### `ashby_applications_list`

List Applications · Read-only

List applications in Ashby, page by page, optionally filtered by job, status or creation time.
Returns application records (id, status, candidate, job, current interview stage, source, archive reason, createdAt) plus moreDataAvailable and nextCursor.
Use to browse or sync applications. Use ashby_application_get for one application's full details.
Requires the candidatesRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `created_after` (`integer`, optional): Unix timestamp (milliseconds). When provided, only applications created at or after this time are returned. Must not be later than createdBefore or in the future. Example: 1704067200000.
- `created_before` (`integer`, optional): Unix timestamp (milliseconds). When provided, only applications created at or before this time are returned. Must not be in the future. Example: 1704067200000.
- `cursor` (`string`, optional): Pagination cursor. Leave empty for the first page, then pass the nextCursor value from the previous response to fetch the next page. Example: G8.
- `expand` (`array`, optional): Related objects to include in each result. Use openings to include the openings linked to each application. Allowed values: openings. Example: ["openings"].
- `job_id` (`string`, optional): Only return applications for the job with the supplied id. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `limit` (`integer`, optional): Maximum number of results to return per page, from 1 to 100. Example: 25.
- `status` (`string`, optional): Only return applications with this status. One of: Active, Hired, Archived, Lead. Example: Active. One of: `Active`, `Hired`, `Archived`, `Lead`.
- `sync_token` (`string`, optional): Incremental sync token. Pass the syncToken returned after the last page of a previous full listing to get only records changed since then. Leave empty for a full listing. Example: jYnEBmjzR.

Example input: `{}`

### `ashby_approvals_list`

List Approvals · Read-only

List approvals in Ashby, page by page, optionally for one offer, job or opening.
Returns approval records (id, entity type and id, approval steps, approvers, status) plus moreDataAvailable and nextCursor.
Use to see where an offer, job or opening sits in its approval chain.
Requires the approvalsRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `cursor` (`string`, optional): Pagination cursor. Leave empty for the first page, then pass the nextCursor value from the previous response to fetch the next page. Example: G8.
- `entity_id` (`string`, optional): Filter approvals to only those associated with this specific entity ID. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `entity_type` (`string`, optional): Filter approvals by the type of entity they are associated with One of: offer, job, opening. Example: offer. One of: `offer`, `job`, `opening`.
- `limit` (`integer`, optional): Maximum number of results to return per page, from 1 to 100. Example: 25.
- `sync_token` (`string`, optional): Incremental sync token. Pass the syncToken returned after the last page of a previous full listing to get only records changed since then. Leave empty for a full listing. Example: jYnEBmjzR.

Example input: `{}`

### `ashby_archive_reasons_list`

List Archive Reasons · Read-only

List the archive reasons configured in Ashby (why a candidate was rejected or withdrew).
Returns archive reason records (id, text, reasonType, isArchived).
Use to find an archive_reason_id before archiving an application with ashby_application_stage_change.
Requires the hiringProcessMetadataRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `include_archived` (`boolean`, optional): When true, includes archived archive reasons in the response. Defaults to false. Example: false.

Example input: `{}`

### `ashby_brands_list`

List Brands · Read-only

List the employer brands configured in Ashby, page by page.
Returns brand records (id, name, logo and theme details) plus moreDataAvailable and nextCursor.
Use to find a brand id for ashby_job_create.
Requires the organizationRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `cursor` (`string`, optional): Pagination cursor. Leave empty for the first page, then pass the nextCursor value from the previous response to fetch the next page. Example: G8.
- `limit` (`integer`, optional): Maximum number of results to return per page, from 1 to 100. Example: 25.

Example input: `{}`

### `ashby_candidate_get`

Get Candidate · Read-only

Get one Ashby candidate by Ashby id or by an external mapping id from an HRIS such as BambooHR or Rippling.
Returns the full candidate record: contact details, social links, tags, applicationIds, file handles, source and credited user.
Use when you already know the candidate id. Use ashby_candidates_search to look up by email or name.
Requires the candidatesRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `candidate_id` (`string`, optional): The Ashby id of the candidate to fetch. Provide this or external_mapping_id. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `external_mapping_id` (`string`, optional): An id assigned to the candidate outside Ashby (for example in BambooHR, Rippling or Gusto). Provide this or candidate_id. Example: emp-10482.

Example input: `{}`

### `ashby_candidate_notes_list`

List Candidate Notes · Read-only

List the notes on one Ashby candidate, page by page.
Returns note records (id, content, author, createdAt, isPrivate) plus moreDataAvailable and nextCursor.
Use to read what the hiring team has recorded about a candidate. Use ashby_candidate_note_create to add a note.
Requires the candidatesRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `candidate_id` (`string`, required): The id of the candidate to fetch notes for. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `cursor` (`string`, optional): Pagination cursor. Leave empty for the first page, then pass the nextCursor value from the previous response to fetch the next page. Example: G8.
- `limit` (`integer`, optional): Maximum number of notes to return, capped at 100. When omitted, up to 500 notes are returned. Example: 25.

Example input: `{"candidate_id":"<candidate_id>"}`

### `ashby_candidate_projects_list`

List Candidate Projects · Read-only

List the projects an Ashby candidate belongs to, page by page.
Returns project records (id, title, archived state) plus moreDataAvailable and nextCursor.
Use to see which sourcing projects include a candidate. Use ashby_projects_list to list every project in the organization.
Requires the candidatesRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `candidate_id` (`string`, required): The id of the candidate to fetch projects for. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `cursor` (`string`, optional): Pagination cursor. Leave empty for the first page, then pass the nextCursor value from the previous response to fetch the next page. Example: G8.
- `limit` (`integer`, optional): Maximum number of projects to return, from 1 to 100. Defaults to 100. Example: 25.

Example input: `{"candidate_id":"<candidate_id>"}`

### `ashby_candidate_tags_list`

List Candidate Tags · Read-only

List the candidate tags defined in the Ashby organization, page by page.
Returns tag records (id, title, isArchived) plus moreDataAvailable and nextCursor.
Use to find a tag id before calling ashby_candidate_tag_add. Use ashby_candidate_tag_create to define a new tag.
Requires the hiringProcessMetadataRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `cursor` (`string`, optional): Pagination cursor. Leave empty for the first page, then pass the nextCursor value from the previous response to fetch the next page. Example: G8.
- `include_archived` (`boolean`, optional): Whether archived candidate tags should be included in the response. Example: false.
- `limit` (`integer`, optional): Maximum number of results to return per page, from 1 to 100. Example: 25.
- `sync_token` (`string`, optional): Incremental sync token. Pass the syncToken returned after the last page of a previous full listing to get only records changed since then. Leave empty for a full listing. Example: jYnEBmjzR.

Example input: `{}`

### `ashby_candidates_list`

List Candidates · Read-only

List candidates in the Ashby organization, page by page, optionally filtered by creation time or limited to changes since a sync token.
Returns candidate records (id, name, primary email and phone, tags, applicationIds, profileUrl, source) plus moreDataAvailable and nextCursor for paging.
Use to browse or sync all candidates. Use ashby_candidates_search to find a candidate by email or name, and ashby_candidate_get for one candidate by id.
Requires the candidatesRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `created_after` (`integer`, optional): Unix timestamp (milliseconds). When provided, only candidates created at or after this time are returned. Must not be later than createdBefore or in the future. Example: 1704067200000.
- `created_before` (`integer`, optional): Unix timestamp (milliseconds). When provided, only candidates created at or before this time are returned. Must not be in the future. Example: 1704067200000.
- `cursor` (`string`, optional): Pagination cursor. Leave empty for the first page, then pass the nextCursor value from the previous response to fetch the next page. Example: G8.
- `limit` (`integer`, optional): Maximum number of candidates to return per page, from 1 to 100. Example: 25.
- `sync_token` (`string`, optional): Incremental sync token. Pass the syncToken returned after the last page of a previous full listing to get only records changed since then. Leave empty for a full listing. Example: jYnEBmjzR.

Example input: `{}`

### `ashby_candidates_search`

Search Candidates · Read-only

Search Ashby candidates by email address or name.
Returns the matching candidate records (up to 100), without pagination.
Use to find a candidate when you know an email or name. Use ashby_candidates_list to page through every candidate.
Requires the candidatesRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `email` (`string`, optional): The candidate's email address. Provide email, name, or both. Example: adam.hart@example.com.
- `limit` (`integer`, optional): Maximum number of candidates to return, from 1 to 100. Defaults to 100. Example: 25.
- `name` (`string`, optional): The candidate's name. Provide email, name, or both. Example: Adam Hart.

Example input: `{}`

### `ashby_close_reasons_list`

List Close Reasons · Read-only

List the job close reasons configured in Ashby.
Returns close reason records (id, text, reasonType, isArchived).
Use to find a close_reason_id before closing a job with ashby_job_status_set.
Requires the hiringProcessMetadataRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `include_archived` (`boolean`, optional): Whether to include archived close reasons in the response. Example: false.

Example input: `{}`

### `ashby_communication_templates_list`

List Communication Templates · Read-only

List email communication templates in Ashby, filtered by organization or personal ownership.
Returns template records (id, title, intended types, subject, owner).
Use to find a template id for the archive email in ashby_application_stage_change.
Requires the hiringProcessMetadataRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `ownership_filter` (`string`, optional): Limits results by template ownership: org returns organization templates, personal returns the API user's personal templates, and personalAndOrg returns both. Defaults to personalAndOrg. One of: org, personal, personalAndOrg. Example: personalAndOrg. One of: `org`, `personal`, `personalAndOrg`.

Example input: `{}`

### `ashby_custom_field_get`

Get Custom Field · Read-only

Get one Ashby custom field definition by id or by reference identifier.
Returns the field with title, objectType, fieldType and selectable values.
Use to check a field's type and options before setting a value. Use ashby_custom_fields_list to browse all fields.
Requires the hiringProcessMetadataRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `custom_field_id` (`string`, optional): The id of the custom field to fetch. Provide this or reference_identifier. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `reference_identifier` (`string`, optional): Beta: may not be available for all organizations. The reference id assigned to the custom field, exactly as saved. Provide this or custom_field_id. Example: cost_center.

Example input: `{}`

### `ashby_custom_fields_list`

List Custom Fields · Read-only

List custom field definitions in Ashby, page by page.
Returns field records (id, title, objectType, fieldType, selectable values, isArchived) plus moreDataAvailable and nextCursor.
Use to find a field id and its accepted values before calling ashby_custom_field_value_set or ashby_custom_field_values_set.
Requires the hiringProcessMetadataRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `cursor` (`string`, optional): Pagination cursor. Leave empty for the first page, then pass the nextCursor value from the previous response to fetch the next page. Example: G8.
- `include_archived` (`boolean`, optional): If true, archived custom fields will be included in the response. Example: false.
- `limit` (`integer`, optional): Maximum number of results to return per page, from 1 to 100. Example: 25.
- `sync_token` (`string`, optional): Incremental sync token. Pass the syncToken returned after the last page of a previous full listing to get only records changed since then. Leave empty for a full listing. Example: jYnEBmjzR.

Example input: `{}`

### `ashby_department_get`

Get Department · Read-only

Get one Ashby department or team by id.
Returns the department with name, parentId and archived state.
Use when you know the department id. Use ashby_departments_list to find it.
Requires the organizationRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `department_id` (`string`, required): The unique id of the department whose details will be fetched. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{"department_id":"<department_id>"}`

### `ashby_departments_list`

List Departments · Read-only

List departments and teams in Ashby, page by page.
Returns department records (id, name, parentId, isArchived) plus moreDataAvailable and nextCursor.
Use to find a team id for ashby_job_create or ashby_opening_create. Use ashby_department_get for one department.
Requires the organizationRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `cursor` (`string`, optional): Pagination cursor. Leave empty for the first page, then pass the nextCursor value from the previous response to fetch the next page. Example: G8.
- `include_archived` (`boolean`, optional): Whether archived departments should be included in the response. Example: false.
- `limit` (`integer`, optional): Maximum number of results to return per page, from 1 to 100. Example: 25.
- `sync_token` (`string`, optional): Incremental sync token. Pass the syncToken returned after the last page of a previous full listing to get only records changed since then. Leave empty for a full listing. Example: jYnEBmjzR.

Example input: `{}`

### `ashby_feedback_form_definition_get`

Get Feedback Form Definition · Read-only

Get one Ashby feedback form definition by id.
Returns the form with its sections and fields (path, type, title, required, selectable values).
Use to learn the field paths and value shapes before calling ashby_application_feedback_submit.
Requires the hiringProcessMetadataRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `feedback_form_definition_id` (`string`, required): The unique id of the feedback form you'd like to fetch. Example: 9b17887e-5add-49e8-9a03-ffffa669aa2f.

Example input: `{"feedback_form_definition_id":"<feedback_form_definition_id>"}`

### `ashby_feedback_form_definitions_list`

List Feedback Form Definitions · Read-only

List feedback form definitions (scorecard templates) in Ashby, page by page.
Returns form definition records (id, title, isArchived, form fields with their paths and types) plus moreDataAvailable and nextCursor.
Use to find a form id and field paths before calling ashby_application_feedback_submit. Use ashby_feedback_form_definition_get for one form.
Requires the hiringProcessMetadataRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `cursor` (`string`, optional): Pagination cursor. Leave empty for the first page, then pass the nextCursor value from the previous response to fetch the next page. Example: G8.
- `include_archived` (`boolean`, optional): Whether to include archived feedback form definitions in the results. Example: false.
- `limit` (`integer`, optional): Maximum number of results to return per page, from 1 to 100. Example: 25.
- `sync_token` (`string`, optional): Incremental sync token. Pass the syncToken returned after the last page of a previous full listing to get only records changed since then. Leave empty for a full listing. Example: jYnEBmjzR.

Example input: `{}`

### `ashby_file_get`

Get File URL · Read-only

Get a download URL for a file stored in Ashby, such as a candidate's resume, using a file handle.
Returns a temporary URL for the file.
Use with a file handle from a candidate record (resumeFileHandle or fileHandles) returned by ashby_candidate_get.
Requires the candidatesRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `file_handle` (`string`, required): A file handle from an Ashby API response, for example a candidate resumeFileHandle. Example: eyJoYW5kbGUiOnsidHlwZSI6IkNhbmRpZGF0ZUZpbGUiLCJmaWxlSWQiOiIxNTk1ZTRmYy04MTQwLTQ1NGUtYTI1ZC04NTNiOTQ3ZWNmYzgiLCJvd25lcklkIjoiYmY5NGZlNmMtMjU3MS00NzQ1LWE1OWEtNTA5MjE3ODI3MDVlIn0sInNpZ25hdHVyZSI6IkFqclpjT0VlTXUwdWxLZlRCS05iMWRkbDdHcjVIWFVmZzNrS0NPL1dWWjg9IiwidmVyc2lvbiI6IjEilQ.

Example input: `{"file_handle":"<file_handle>"}`

### `ashby_hiring_team_roles_list`

List Hiring Team Roles · Read-only

List the hiring team roles defined in Ashby (for example Hiring Manager, Recruiter or Coordinator).
Returns role titles, or role objects with id and title when names_only is false.
Use with names_only set to false to find a role id for ashby_hiring_team_member_add.
Requires the organizationRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `names_only` (`boolean`, optional): When true (the default), returns only role titles. Set to false to get objects with each role id and title. Example: false. Default: `true`.

Example input: `{}`

### `ashby_interview_briefing_get`

Get Interview Briefing · Read-only

Get the interview briefing for one Ashby interview event, optionally expanded with the feedback form, application, candidate, job, interview and interviewers.
Returns the briefing for the event.
Use to prepare an interviewer for a specific interview. Use ashby_interview_events_list to find the event id.
Requires the interviewsRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `interview_event_id` (`string`, required): The id of the interview event whose briefing should be returned. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `expand` (`array`, optional): Choose to expand the result and include additional data for related objects. Allowed values: feedbackFormDefinition, application, candidate, job, interview, interviewers. Example: ["candidate", "job"].

Example input: `{"interview_event_id":"<interview_event_id>"}`

### `ashby_interview_events_list`

List Interview Events · Read-only

List the interview events on one Ashby interview schedule, page by page.
Returns event records (id, start and end time, interviewers, interview id, meeting link, feedback link) plus moreDataAvailable and nextCursor.
Use to see the individual interviews in a schedule. Use ashby_interview_schedules_list to find schedules.
Requires the interviewsRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `interview_schedule_id` (`string`, required): The unique ID of the interview schedule, for which to list interview events. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `created_after` (`integer`, optional): Return only events created after this date, expressed as milliseconds since the Unix epoch. Example: 1659979196538.
- `cursor` (`string`, optional): Pagination cursor. Leave empty for the first page, then pass the nextCursor value from the previous response to fetch the next page. Example: G8.
- `expand` (`array`, optional): Related objects to include in each result. Use interview to include the interview details. Allowed values: interview. Example: ["interview"].
- `limit` (`integer`, optional): Maximum number of results to return per page, from 1 to 100. Example: 25.
- `sync_token` (`string`, optional): Incremental sync token. Pass the syncToken returned after the last page of a previous full listing to get only records changed since then. Leave empty for a full listing. Example: jYnEBmjzR.

Example input: `{"interview_schedule_id":"<interview_schedule_id>"}`

### `ashby_interview_get`

Get Interview · Read-only

Get one Ashby interview type by id.
Returns the interview with title, instructions, feedback form definition id and archived state.
Use when you know the interview id. Use ashby_interviews_list to find it.
Requires the interviewsRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `interview_id` (`string`, required): The id of the interview to fetch. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{"interview_id":"<interview_id>"}`

### `ashby_interview_plans_list`

List Interview Plans · Read-only

List interview plans in Ashby, page by page.
Returns plan records (id, title, isArchived) plus moreDataAvailable and nextCursor.
Use to find an interview plan id for ashby_interview_stages_list or ashby_application_transfer. Use ashby_job_interview_plan_get for the plan of a specific job.
Requires the interviewsRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `cursor` (`string`, optional): Pagination cursor. Leave empty for the first page, then pass the nextCursor value from the previous response to fetch the next page. Example: G8.
- `include_archived` (`boolean`, optional): Whether archived interview plans should be included in the response. Example: false.
- `limit` (`integer`, optional): Maximum number of results to return per page, from 1 to 100. Example: 25.
- `sync_token` (`string`, optional): Incremental sync token. Pass the syncToken returned after the last page of a previous full listing to get only records changed since then. Leave empty for a full listing. Example: jYnEBmjzR.

Example input: `{}`

### `ashby_interview_schedules_list`

List Interview Schedules · Read-only

List interview schedules in Ashby, page by page, optionally for one application or interview stage.
Returns schedule records (id, application, interview stage, status, interview events with times and interviewers) plus moreDataAvailable and nextCursor.
Use to see scheduled interviews. Use ashby_interview_events_list for the events of one schedule.
Requires the interviewsRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `application_id` (`string`, optional): The id of the application, for which to fetch interview schedules. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `created_after` (`integer`, optional): Only return schedules created after this time, in milliseconds since the Unix epoch. Example: 1704067200000.
- `cursor` (`string`, optional): Pagination cursor. Leave empty for the first page, then pass the nextCursor value from the previous response to fetch the next page. Example: G8.
- `interview_stage_id` (`string`, optional): The id of the interview stage, for which to fetch interview schedules. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `limit` (`integer`, optional): Maximum number of results to return per page, from 1 to 100. Example: 25.
- `sync_token` (`string`, optional): Incremental sync token. Pass the syncToken returned after the last page of a previous full listing to get only records changed since then. Leave empty for a full listing. Example: jYnEBmjzR.

Example input: `{}`

### `ashby_interview_stage_get`

Get Interview Stage · Read-only

Get one Ashby interview stage by id.
Returns the stage with title, type, order in its interview plan and interview plan id.
Use when you know the stage id. Use ashby_interview_stages_list to list a plan's stages.
Requires the interviewsRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `interview_stage_id` (`string`, required): The id of the interview stage to retrieve. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{"interview_stage_id":"<interview_stage_id>"}`

### `ashby_interview_stage_groups_list`

List Interview Stage Groups · Read-only

List interview stage groups in Ashby (the pipeline sections such as Lead, Active, Offer, Hired and Archived).
Returns group records (id, title, type, order).
Use to interpret the interviewStageGroupId on interview stages.
Requires the interviewsRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `ashby_interview_stages_list`

List Interview Stages · Read-only

List the interview stages of one Ashby interview plan, in order.
Returns stage records (id, title, type, orderInInterviewPlan, interviewStageGroupId).
Use to find a stage id before calling ashby_application_stage_change. Use ashby_job_interview_plan_get when you only know the job id.
Requires the interviewsRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `interview_plan_id` (`string`, required): The id of the interview plan to list stages for. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{"interview_plan_id":"<interview_plan_id>"}`

### `ashby_interviewer_pool_get`

Get Interviewer Pool · Read-only

Get one Ashby interviewer pool by id.
Returns the pool with its qualified members, trainees and training path.
Use when you know the pool id. Use ashby_interviewer_pools_list to find it.
Requires the hiringProcessMetadataRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `interviewer_pool_id` (`string`, required): The id of the interviewer pool. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{"interviewer_pool_id":"<interviewer_pool_id>"}`

### `ashby_interviewer_pools_list`

List Interviewer Pools · Read-only

List interviewer pools in Ashby, page by page.
Returns pool records (id, title, isArchived, qualified members, trainees and training path) plus moreDataAvailable and nextCursor.
Use to see who can conduct a type of interview. Use ashby_interviewer_pool_get for one pool.
Requires the hiringProcessMetadataRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `cursor` (`string`, optional): Pagination cursor. Leave empty for the first page, then pass the nextCursor value from the previous response to fetch the next page. Example: G8.
- `include_archived_pools` (`boolean`, optional): When true, includes archived pools. Defaults to false. Example: false.
- `include_archived_training_stages` (`boolean`, optional): When true, includes archived training stages. Defaults to true. Example: true.
- `limit` (`integer`, optional): Maximum number of interviewer pools to return per page. Example: 25.
- `sync_token` (`string`, optional): Incremental sync token. Pass the syncToken returned after the last page of a previous full listing to get only records changed since then. Leave empty for a full listing. Example: jYnEBmjzR.

Example input: `{}`

### `ashby_interviews_list`

List Interviews · Read-only

List the interview types defined in Ashby (for example Phone Screen or Onsite Technical), page by page.
Returns interview records (id, title, isArchived, instructions, feedback form definition id, job id) plus moreDataAvailable and nextCursor.
Use to find an interview id for scheduling or feedback requests. Use ashby_interview_get for one interview.
Requires the interviewsRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `cursor` (`string`, optional): Pagination cursor. Leave empty for the first page, then pass the nextCursor value from the previous response to fetch the next page. Example: G8.
- `exclude_archived_schedule_template_interviews` (`boolean`, optional): If true, interviews local to archived schedule templates are omitted from the response. This parameter only has an effect when includeNonSharedInterviews is also set to true. Shared interviews (not associated with any schedule template) are always included regardless of this setting. Defaults to false. Example: false.
- `include_archived` (`boolean`, optional): When true, includes archived interviews in the response. Defaults to false. Example: false.
- `include_non_shared_interviews` (`boolean`, optional): If true, interviews that are associated with specific jobs will be included in the response. Shared interviews that are not associated with a specific job can be scheduled for applications to any job. Interviews that are not shared can only be scheduled for applications to the job they are associated with. Defaults to false. Example: false.
- `limit` (`integer`, optional): Maximum number of results to return per page, from 1 to 100. Example: 25.
- `sync_token` (`string`, optional): Incremental sync token. Pass the syncToken returned after the last page of a previous full listing to get only records changed since then. Leave empty for a full listing. Example: jYnEBmjzR.

Example input: `{}`

### `ashby_job_boards_list`

List Job Boards · Read-only

List the job boards configured in Ashby.
Returns job board records (id, title, isInternal).
Use to find a job_board_id for ashby_job_postings_list, ashby_job_posting_get or ashby_job_posting_update.
Requires the jobsRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `ashby_job_get`

Get Job · Read-only

Get one Ashby job by id.
Returns the job with title, status, employment type, department, location, hiring team, interview plan and job posting ids, plus openings, location or compensation when expanded.
Use when you know the job id. Use ashby_jobs_list or ashby_jobs_search to find it.
Requires the jobsRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `job_id` (`string`, required): The id of the job to fetch. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `expand` (`array`, optional): Related objects to include in the response. Allowed values: openings, location, compensation. Example: ["openings", "compensation"].
- `include_unpublished_job_postings_ids` (`boolean`, optional): Whether to include unpublished job posting ids in the response. Example: false.

Example input: `{"job_id":"<job_id>"}`

### `ashby_job_interview_plan_get`

Get Job Interview Plan · Read-only

Get the interview plan for one Ashby job.
Returns the plan with its ordered interview stages (id, title, type, order).
Use to find stage ids for a job before changing an application's stage or transferring it. Use ashby_interview_stages_list when you already have the interview plan id.
Requires the jobsRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `job_id` (`string`, required): The id of the job to fetch an interview plan for. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{"job_id":"<job_id>"}`

### `ashby_job_posting_get`

Get Job Posting · Read-only

Get one Ashby job posting by id.
Returns the posting with its full description, location, department, employment type, compensation, application form and publish status.
Use when you know the posting id. Use ashby_job_postings_list to find it.
Requires the jobsRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `job_posting_id` (`string`, required): The id of the job posting to return. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `expand` (`array`, optional): Related objects to include in the response. Use job to include the parent job. Allowed values: job. Example: ["job"].
- `include_unpublished_job_postings` (`boolean`, optional): If true, allows retrieving unpublished (draft) job postings. Required when fetching a draft job posting. Example: false.
- `job_board_id` (`string`, optional): If provided, returns the job posting data for the specified job board. If omitted, defaults to an external job board. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{"job_posting_id":"<job_posting_id>"}`

### `ashby_job_postings_list`

List Job Postings · Read-only

List job postings in Ashby, optionally filtered by location, department, job board or listed state.
Returns posting records (id, title, job id, department, location, employment type, isListed, publish status, external link).
Use to browse public postings. Use ashby_job_posting_get for one posting's full description, and ashby_jobs_list for the underlying jobs.
Requires the jobsRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `department` (`string`, optional): Filter by department name (case sensitive). Example: Engineering.
- `include_unpublished_job_postings` (`boolean`, optional): If true, include unpublished (draft) job postings in addition to published job postings. Example: false.
- `job_board_id` (`string`, optional): If provided, only returns the job postings on the specified job board. If omitted, this API will return the job postings on the primary external job board. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `listed_only` (`boolean`, optional): If true, filter out unlisted job postings. Example: true.
- `location` (`string`, optional): Filter by location name (case sensitive). Example: San Francisco.

Example input: `{}`

### `ashby_job_templates_list`

List Job Templates · Read-only

List job templates in Ashby, page by page.
Returns template records (id, title, status, department, location) plus moreDataAvailable and nextCursor.
Use to find a job_template_id before calling ashby_job_create.
Requires the jobsRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `cursor` (`string`, optional): Pagination cursor. Leave empty for the first page, then pass the nextCursor value from the previous response to fetch the next page. Example: G8.
- `expand` (`array`, optional): Related objects to include in each result. Allowed values: location. Example: ["location"].
- `limit` (`integer`, optional): Maximum number of results to return per page, from 1 to 100. Example: 25.
- `sync_token` (`string`, optional): Incremental sync token. Pass the syncToken returned after the last page of a previous full listing to get only records changed since then. Leave empty for a full listing. Example: jYnEBmjzR.

Example input: `{}`

### `ashby_jobs_list`

List Jobs · Read-only

List jobs in Ashby, page by page, optionally filtered by status or by created, opened or closed dates.
Returns job records (id, title, status, employment type, department, location, hiring team, job posting ids) plus moreDataAvailable and nextCursor.
Use to browse or sync jobs. Use ashby_jobs_search to find a job by title or requisition id, and ashby_job_get for one job.
Requires the jobsRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `closed_after` (`integer`, optional): Return jobs closed after this date. Unix timestamp in milliseconds. Example: 1704067200000.
- `closed_before` (`integer`, optional): Return jobs closed before this date. Unix timestamp in milliseconds. Example: 1704067200000.
- `created_after` (`integer`, optional): Return jobs created at or after this date. Unix timestamp in milliseconds. Example: 1704067200000.
- `cursor` (`string`, optional): Pagination cursor. Leave empty for the first page, then pass the nextCursor value from the previous response to fetch the next page. Example: G8.
- `expand` (`array`, optional): Related objects to include in each result. Allowed values: openings, location. Example: ["openings", "location"].
- `include_unpublished_job_postings_ids` (`boolean`, optional): Whether to include unpublished job posting ids in the response. Example: false.
- `limit` (`integer`, optional): Maximum number of results to return per page, from 1 to 100. Example: 25.
- `opened_after` (`integer`, optional): Return jobs opened after this date. Unix timestamp in milliseconds. Example: 1704067200000.
- `opened_before` (`integer`, optional): Return jobs opened before this date. Unix timestamp in milliseconds. Example: 1704067200000.
- `status` (`array`, optional): Only return jobs with these statuses. Allowed values: Draft, Open, Closed, Archived. Example: ["Open"].
- `sync_token` (`string`, optional): Incremental sync token. Pass the syncToken returned after the last page of a previous full listing to get only records changed since then. Leave empty for a full listing. Example: jYnEBmjzR.

Example input: `{}`

### `ashby_jobs_search`

Search Jobs · Read-only

Search Ashby jobs by title or custom requisition id (substring match).
Returns matching job records (up to 100), without pagination.
Use to find a job id from a title or requisition. Use ashby_jobs_list to page through all jobs.
Requires the jobsRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Maximum number of jobs to return, from 1 to 100. Defaults to 100. Example: 25.
- `requisition_id` (`string`, optional): The custom requisition id (or substring) of the job to search for. Example: REQ-2471.
- `title` (`string`, optional): The title (or substring of a title) of the job to search for. Example: Software Engineer.

Example input: `{}`

### `ashby_location_get`

Get Location · Read-only

Get one Ashby location by id.
Returns the location with name, address, workplace type, remote flag and parent location.
Use when you know the location id. Use ashby_locations_list to find it.
Requires the organizationRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `location_id` (`string`, required): The id of the location to fetch. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{"location_id":"<location_id>"}`

### `ashby_locations_list`

List Locations · Read-only

List office locations and regions in Ashby, page by page.
Returns location records (id, name, address, workplace type, isRemote, isArchived, parent location) plus moreDataAvailable and nextCursor.
Use to find a location id for ashby_job_create or job postings. Use ashby_location_get for one location.
Requires the organizationRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `cursor` (`string`, optional): Pagination cursor. Leave empty for the first page, then pass the nextCursor value from the previous response to fetch the next page. Example: G8.
- `include_archived` (`boolean`, optional): When true, includes archived items. Defaults to false. Example: false.
- `include_location_hierarchy` (`boolean`, optional): If true, the response will include the location hierarchy (regions). Defaults to false. Example: false.
- `limit` (`integer`, optional): Maximum number of locations to return per page. Example: 25.
- `sync_token` (`string`, optional): Incremental sync token. Pass the syncToken returned after the last page of a previous full listing to get only records changed since then. Leave empty for a full listing. Example: jYnEBmjzR.

Example input: `{}`

### `ashby_offer_get`

Get Offer · Read-only

Get one Ashby offer by id.
Returns the offer with its status, acceptance status, latest version, field values and (unless excluded) the form definition.
Use when you know the offer id. Use ashby_offers_list to find it, and the returned field paths with ashby_offer_update.
Requires the offersRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `offer_id` (`string`, required): The id of the offer to fetch. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `exclude_form_definition` (`boolean`, optional): If true, omit the form definition from the response. Example: false.
- `include_individual_signed_documents` (`boolean`, optional): Set to true to include file handles for the individual signed documents in an offer packet. Example: false.

Example input: `{"offer_id":"<offer_id>"}`

### `ashby_offers_list`

List Offers · Read-only

List offers in Ashby, page by page, optionally filtered by application, offer status, acceptance status or approval status.
Returns offer records (id, application, offer status, acceptance status, latest version with its fields and approval status) plus moreDataAvailable and nextCursor.
Use to track offers. Use ashby_offer_get for one offer's full details.
Requires the offersRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `acceptance_status` (`array`, optional): When supplied, only offers with provided acceptance-status(es) will be returned. Array must contain at least one value. Allowed values: Accepted, Declined, Pending, Created, Cancelled. Example: ["Pending"].
- `application_id` (`string`, optional): If provided, only returns the offers for the application with the supplied id. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `approval_status` (`array`, optional): When supplied, only offers whose latest version has one of the provided approval status(es) will be returned. Array must contain at least one value. Allowed values: Approved, WaitingOnApprovals, Declined. Example: ["Approved"].
- `created_after` (`integer`, optional): Only return offers created after this time, in milliseconds since the Unix epoch. Example: 1704067200000.
- `cursor` (`string`, optional): Pagination cursor. Leave empty for the first page, then pass the nextCursor value from the previous response to fetch the next page. Example: G8.
- `limit` (`integer`, optional): Maximum number of results to return per page, from 1 to 100. Example: 25.
- `offer_status` (`array`, optional): When supplied, only offers with provided offer-status(es) will be returned. Array must contain at least one value. Allowed values: WaitingOnOfferCreation, WaitingOnApprovalStart, WaitingOnOfferApproval, WaitingOnApprovalDefinition, WaitingOnCandidateResponse, CandidateRejected, CandidateAccepted, OfferCancelled. Example: ["WaitingOnCandidateResponse"].
- `sync_token` (`string`, optional): Incremental sync token. Pass the syncToken returned after the last page of a previous full listing to get only records changed since then. Leave empty for a full listing. Example: jYnEBmjzR.

Example input: `{}`

### `ashby_opening_get`

Get Opening · Read-only

Get one Ashby opening by id.
Returns the opening with identifier, state, description, job ids, team, locations, target dates and employment type.
Use when you know the opening id. Use ashby_openings_list or ashby_openings_search to find it.
Requires the jobsRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `opening_id` (`string`, required): The id of the opening. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{"opening_id":"<opening_id>"}`

### `ashby_openings_list`

List Openings · Read-only

List openings (headcount slots) in Ashby, page by page.
Returns opening records (id, identifier, state, job ids, team, locations, target hire and start dates, employment type) plus moreDataAvailable and nextCursor.
Use to track headcount. Use ashby_openings_search to find an opening by identifier, and ashby_opening_get for one opening.
Requires the jobsRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `created_after` (`integer`, optional): Only return openings created after this time, in milliseconds since the Unix epoch. Example: 1704067200000.
- `cursor` (`string`, optional): Pagination cursor. Leave empty for the first page, then pass the nextCursor value from the previous response to fetch the next page. Example: G8.
- `limit` (`integer`, optional): Maximum number of results to return per page, from 1 to 100. Example: 25.
- `sync_token` (`string`, optional): Incremental sync token. Pass the syncToken returned after the last page of a previous full listing to get only records changed since then. Leave empty for a full listing. Example: jYnEBmjzR.

Example input: `{}`

### `ashby_openings_search`

Search Openings · Read-only

Search Ashby openings by their human-readable identifier.
Returns matching opening records.
Use to find an opening id from its identifier. Use ashby_openings_list to page through all openings.
Requires the jobsRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `identifier` (`string`, required): The identifier of the opening you want to search for. Example: ENG-042.

Example input: `{"identifier":"<identifier>"}`

### `ashby_project_get`

Get Project · Read-only

Get one Ashby project by id.
Returns the project with title, description, archived and confidential flags and custom fields.
Use when you know the project id. Use ashby_projects_list or ashby_projects_search to find it.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `project_id` (`string`, required): The id of the project. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{"project_id":"<project_id>"}`

### `ashby_projects_list`

List Projects · Read-only

List sourcing projects in Ashby, page by page.
Returns project records (id, title, description, isArchived, confidential, author) plus moreDataAvailable and nextCursor.
Use to browse projects. Use ashby_projects_search to find one by title and ashby_project_get for one project.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `created_after` (`integer`, optional): The API will return data after this date, which is the time since the unix epoch in milliseconds. Example: 1659979196538.
- `cursor` (`string`, optional): Pagination cursor. Leave empty for the first page, then pass the nextCursor value from the previous response to fetch the next page. Example: G8.
- `limit` (`integer`, optional): Maximum number of projects to return per page, from 1 to 100. Defaults to 100. Example: 25.
- `sync_token` (`string`, optional): Incremental sync token. Pass the syncToken returned after the last page of a previous full listing to get only records changed since then. Leave empty for a full listing. Example: jYnEBmjzR.

Example input: `{}`

### `ashby_projects_search`

Search Projects · Read-only

Search Ashby projects by title.
Returns matching project records.
Use to find a project id from its title before calling ashby_candidate_project_add. Use ashby_projects_list to page through all projects.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `title` (`string`, required): The project's title. Example: Engineering prospects.

Example input: `{"title":"<title>"}`

### `ashby_referral_form_get`

Get Referral Form · Read-only

Get the organization's referral form in Ashby, creating the default form if none exists.
Returns the form id and its fields (path, title, type, required).
Use before ashby_referral_create to get the form id and field paths.
Requires the hiringProcessMetadataRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `ashby_referrals_list`

List Referrals · Read-only

List referrals in Ashby, page by page, optionally for one application.
Returns referral records (id, application, referring user, submitted fields, createdAt) plus moreDataAvailable and nextCursor.
Use to track employee referrals. Use ashby_referral_create to submit one.
Requires the candidatesRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `application_id` (`string`, optional): The id of the application you'd like to fetch referrals for. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `created_after` (`integer`, optional): Unix timestamp (milliseconds). When provided, only referrals created at or after this time are returned. Example: 1659979196538.
- `cursor` (`string`, optional): Pagination cursor. Leave empty for the first page, then pass the nextCursor value from the previous response to fetch the next page. Example: G8.
- `limit` (`integer`, optional): Maximum number of results to return per page, from 1 to 100. Example: 25.
- `sync_token` (`string`, optional): Incremental sync token. Pass the syncToken returned after the last page of a previous full listing to get only records changed since then. Leave empty for a full listing. Example: jYnEBmjzR.

Example input: `{}`

### `ashby_sources_list`

List Sources · Read-only

List candidate sources configured in Ashby (for example LinkedIn, Referral or Agency).
Returns source records (id, title, isArchived, source type).
Use to find a source id for ashby_candidate_create, ashby_application_create or ashby_application_source_change.
Requires the hiringProcessMetadataRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `include_archived` (`boolean`, optional): Whether archived sources should be included in the response. Example: false.

Example input: `{}`

### `ashby_user_get`

Get User · Read-only

Get one Ashby user by id.
Returns the user with name, email, global role and enabled state.
Use when you know the user id. Use ashby_users_search to look up by email.
Requires the organizationRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `user_id` (`string`, required): The unique identifier for the user. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{"user_id":"<user_id>"}`

### `ashby_users_list`

List Users · Read-only

List Ashby users (members of the hiring organization), page by page.
Returns user records (id, first and last name, email, global role, isEnabled) plus moreDataAvailable and nextCursor.
Use to browse users. Use ashby_users_search to find a user by email and ashby_user_get for one user by id.
Requires the organizationRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `cursor` (`string`, optional): Pagination cursor. Leave empty for the first page, then pass the nextCursor value from the previous response to fetch the next page. Example: G8.
- `include_deactivated` (`boolean`, optional): Whether to include deactivated users in the results. Defaults to false. Example: false.
- `limit` (`integer`, optional): Maximum number of results to return per page, from 1 to 100. Example: 25.
- `sync_token` (`string`, optional): Incremental sync token. Pass the syncToken returned after the last page of a previous full listing to get only records changed since then. Leave empty for a full listing. Example: jYnEBmjzR.

Example input: `{}`

### `ashby_users_search`

Search Users · Read-only

Find an Ashby user by email address.
Returns the matching user records.
Use to turn an email into an Ashby user id, for example before assigning a hiring team role. Use ashby_users_list to page through all users.
Requires the organizationRead permission on the Ashby API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `email` (`string`, required): The email address to search for. Example: recruiter@example.com.

Example input: `{"email":"<email>"}`

### `ashby_application_create`

Create Application · Write

Create an application that considers an existing Ashby candidate for a job, optionally choosing the interview plan, starting stage, source and credited user.
Returns the created application record including its id and current interview stage.
Use after ashby_candidate_create to put a candidate into a job's pipeline. Use ashby_application_transfer to move an existing application to another job.
Requires the candidatesWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `candidate_id` (`string`, required): The id of the candidate to consider for a job. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `job_id` (`string`, required): The id of the job to consider the candidate for. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `application_history` (`array`, optional): Optional history events to create the application with. Each event needs the stage id, a stage number (0 for the first; the highest number is the current stage) and the time the application entered that stage; an archive reason id is needed when the stage is of type Archived. Example: [{"stageId": "e9ed20fd-d45f-4aad-8a00-a19bfba0083e", "stageNumber": 0, "enteredStageAt": "2024-01-15T10:30:00Z"}].
- `created_at` (`string`, optional): An ISO date string to set the application's createdAt timestamp. Defaults to the time the call was made when not provided. Example: 2022-08-12T20:29:56.964Z.
- `credited_to_user_id` (`string`, optional): The id of the user the application will be credited to. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `interview_plan_id` (`string`, optional): The id of the interview plan to place the application in. If none is provided, the default interview plan is used. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `interview_stage_id` (`string`, optional): The interview stage to place the application in. Use a stage id from ashby_interview_stages_list, or the value FirstPreInterviewScreen for the first pre-interview screen stage. Defaults to the first Lead stage. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `source_id` (`string`, optional): The source to set on the application being created. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{"candidate_id":"<candidate_id>","job_id":"<job_id>"}`

### `ashby_application_feedback_request_create`

Request Application Feedback · Write

Ask an Ashby user to submit feedback for an interview on an application.
Returns the created feedback request.
Use to prompt an interviewer for a scorecard. Use ashby_application_feedback_submit to submit feedback directly.
Requires the candidatesWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `application_id` (`string`, required): The id of the application you are requesting feedback for. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `interview_id` (`string`, required): The id of the interview associated with this feedback request. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `interviewer_user_id` (`string`, required): The user you are requesting feedback from. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{"application_id":"<application_id>","interview_id":"<interview_id>","interviewer_user_id":"<interviewer_user_id>"}`

### `ashby_application_feedback_submit`

Submit Application Feedback · Write

Submit a feedback form (scorecard) for an Ashby application, optionally tied to an interview event and credited to a user.
Returns the submitted feedback.
Use to record an interviewer's evaluation. Use ashby_feedback_form_definitions_list or ashby_feedback_form_definition_get to find the form id and field paths first.
Requires the candidatesWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `application_id` (`string`, required): The id of the application you're submitting feedback for. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `field_submissions` (`array`, required): The values for the feedback form fields. Each entry names a field by its path from the form definition and gives a value whose shape depends on the field type: a score field takes an object with an integer score from 1 to 4, a text field takes a string, a boolean field takes true or false, and a select field takes one of its option values. Example: [{"path": "overall_recommendation", "value": {"score": 4}}, {"path": "notes", "value": "Great communicator."}].
- `form_definition_id` (`string`, required): The id of the feedback form definition associated with the form submission. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `interview_event_id` (`string`, optional): The id of the interview event you're submitting feedback for. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `user_id` (`string`, optional): The id of the user the feedback is credited to. Defaults to the API key user. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{"application_id":"<application_id>","field_submissions":[{"path":"overall_recommendation","value":{"score":4}},{"path":"notes","value":"Great communicator."}],"form_definition_id":"<form_definition_id>"}`

### `ashby_application_hiring_team_member_add`

Add Application Hiring Team Member · Write

Assign an Ashby user a hiring team role (for example Recruiter or Coordinator) on one application.
Returns the hiring team assignment.
Use for application-level assignments. Use ashby_hiring_team_member_add for job- or opening-level teams, and ashby_application_hiring_team_roles_list for role ids.
Requires the candidatesWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `application_id` (`string`, required): The application to assign the user a role on. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `role_id` (`string`, required): The id of the hiring team role to assign. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `team_member_id` (`string`, required): The id of the user to assign the role to. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{"application_id":"<application_id>","role_id":"<role_id>","team_member_id":"<team_member_id>"}`

### `ashby_application_source_change`

Change Application Source · Write

Set the source on an Ashby application.
Returns the updated application record.
Use to correct where an application came from. Use ashby_sources_list to find source ids, and ashby_application_update to change other application metadata.
Requires the candidatesWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `application_id` (`string`, required): The id of the application to update the source of. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `source_id` (`string`, required): The id of the source to set on the application. Get source ids from ashby_sources_list. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{"application_id":"<application_id>","source_id":"<source_id>"}`

### `ashby_application_stage_change`

Change Application Stage · Write

Move an Ashby application to another interview stage, including archiving it with an archive reason and an optional rejection email.
Returns the updated application with its new current stage.
Use to advance, reject or archive a candidate. Use ashby_interview_stages_list for stage ids and ashby_archive_reasons_list for archive reason ids.
Requires the candidatesWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `application_id` (`string`, required): The id of the application to update the stage of. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `interview_stage_id` (`string`, required): The interview stage to move the application to. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `archive_email_send_at` (`string`, optional): When to send the archive email, as an ISO 8601 date-time. Defaults to the next morning at 9:32 in your default timezone. Only used together with archive_email_template_id. Example: 2024-01-16T09:30:00Z.
- `archive_email_template_id` (`string`, optional): Communication template to email the candidate when archiving. The template's intended types must include email. Get ids from ashby_communication_templates_list. Only used when moving to an Archived stage. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `archive_reason_id` (`string`, optional): The archive reason to set. Required when moving to a stage of type Archived. Get ids from ashby_archive_reasons_list. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{"application_id":"<application_id>","interview_stage_id":"<interview_stage_id>"}`

### `ashby_application_transfer`

Transfer Application · Write

Transfer an Ashby application to a different job, interview plan and stage.
Returns the transferred application record.
Use to move a candidate's existing application to another job. Use ashby_application_create to open a new application instead, and ashby_job_interview_plan_get to find the target plan and stage ids.
Requires the candidatesWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `application_id` (`string`, required): The id of the application to transfer. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `interview_plan_id` (`string`, required): The id of the interview plan to transfer the application to. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `interview_stage_id` (`string`, required): The interview stage of the interview plan to transfer the application to. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `job_id` (`string`, required): The id of the job to transfer the application to. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `start_automatic_activities` (`boolean`, optional): Whether to start any automatic activities set on the target interview stage. Defaults to true when omitted. Example: true.

Example input: `{"application_id":"<application_id>","interview_plan_id":"<interview_plan_id>","interview_stage_id":"<interview_stage_id>","job_id":"<job_id>"}`

### `ashby_application_update`

Update Application · Write

Update an Ashby application's source, credited user or createdAt timestamp.
Returns the updated application record.
Use to correct application metadata. Use ashby_application_stage_change to move the application through the pipeline, and ashby_application_source_change to change only the source.
Requires the candidatesWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `application_id` (`string`, required): The id of the application to update. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `created_at` (`string`, optional): An ISO date string to set the application's createdAt timestamp. When provided, the first history event's enteredStageAt is updated to match. Example: 2022-08-12T20:29:56.964Z.
- `credited_to_user_id` (`string`, optional): The id of the Ashby user the application is credited to. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `send_notifications` (`boolean`, optional): Whether users subscribed to the application are notified of the update. Defaults to true. Example: true.
- `source_id` (`string`, optional): The id of the source to set on the application. Get source ids from ashby_sources_list. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{"application_id":"<application_id>"}`

### `ashby_candidate_create`

Create Candidate · Write

Create a new candidate in Ashby with contact details, social profiles, location, source and credited user.
Returns the created candidate record including its id.
Use to add a person to Ashby. Use ashby_application_create afterwards to consider the candidate for a job, and ashby_candidate_update to change an existing candidate.
Requires the candidatesWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): The first and last name of the candidate to be created. Example: Adam Hart.
- `alternate_email_addresses` (`array`, optional): Array of alternate email addresses to add to the candidate's profile. Example: ["test.email@ashbyhq.com"].
- `created_at` (`string`, optional): An ISO date string to set the candidate's createdAt timestamp. When this value isn't provided, the createdAt timestamp defaults to the time the call was made. Example: 2022-08-12T20:29:56.964Z.
- `credited_to_user_id` (`string`, optional): The id of the user the candidate will be credited to. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `email` (`string`, optional): Primary, personal email of the candidate to be created. Example: test@ashbyhq.com.
- `github_url` (`string`, optional): Url to the candidate's Github profile. Must be a valid Url. Example: https://github.com/user.
- `linked_in_url` (`string`, optional): Url to the candidate's LinkedIn profile. Must be a valid Url. Example: https://linkedin.com/in/user.
- `location_city` (`string`, optional): City of the candidate's location. Example: San Francisco.
- `location_country` (`string`, optional): Country of the candidate's location. Example: United States.
- `location_region` (`string`, optional): Region (state, province, etc.) of the candidate's location. Example: California.
- `phone_number` (`string`, optional): Primary, personal phone number of the candidate to be created. Example: 555-555-5555.
- `source_id` (`string`, optional): The source to set on the candidate being created. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `website` (`string`, optional): Url of the candidate's website. Must be a valid Url. Example: https://twitter.com/user.

Example input: `{"name":"<name>"}`

### `ashby_candidate_note_create`

Create Candidate Note · Write

Add a note to an Ashby candidate's profile, as plain text or HTML, optionally private.
Returns the created note (id, content, author, createdAt).
Use to record context on a candidate. Use ashby_candidate_notes_list to read existing notes.
Requires the candidatesWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `candidate_id` (`string`, required): The id of the candidate. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `note` (`string`, required): The note content. Plain text by default; set note_content_type to text/html to send HTML. Example: Strong candidate, very interested in the role.
- `created_at` (`string`, optional): An ISO date string to set the note's createdAt timestamp. Example: 2022-08-12T20:29:56.964Z.
- `is_private` (`boolean`, optional): Whether the note is private. Private notes need the "Allow access to non-offer private fields" API key permission to create and view. Defaults to false. Example: true.
- `note_content_type` (`string`, optional): Content type of the note: text/plain (default) or text/html. One of: text/plain, text/html. Example: text/plain. One of: `text/plain`, `text/html`. Default: `text/plain`.
- `send_notifications` (`boolean`, optional): Whether users subscribed to the candidate are notified that the note was posted. Defaults to false. Example: true.

Example input: `{"candidate_id":"<candidate_id>","note":"<note>"}`

### `ashby_candidate_project_add`

Add Candidate to Project · Write

Add an Ashby candidate to a project.
Returns the updated candidate record.
Use to group a candidate into a sourcing project. Use ashby_projects_list or ashby_projects_search to find the project id, and ashby_candidate_project_remove to take the candidate out.
Requires the candidatesWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `candidate_id` (`string`, required): The id of the candidate. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `project_id` (`string`, required): The id of the project. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{"candidate_id":"<candidate_id>","project_id":"<project_id>"}`

### `ashby_candidate_tag_add`

Add Tag to Candidate · Write

Add an existing candidate tag to an Ashby candidate.
Returns the updated candidate record with its tags.
Use to label a candidate. Use ashby_candidate_tags_list to find tag ids, ashby_candidate_tag_create to create a new tag, and ashby_candidate_tag_remove to take a tag off.
Requires the candidatesWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `candidate_id` (`string`, required): The unique id of the candidate to add the tag to. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `tag_id` (`string`, required): The unique id of the tag to add to the candidate. Example: 38430ede-5bd2-41fc-b474-87591cb98cbc.

Example input: `{"candidate_id":"<candidate_id>","tag_id":"<tag_id>"}`

### `ashby_candidate_tag_create`

Create Candidate Tag · Write

Create a candidate tag in Ashby. If a tag with the same title already exists, Ashby returns the existing tag instead.
Returns the tag record (id, title, isArchived).
Use to define a new label. Use ashby_candidate_tag_add to apply it to a candidate.
Requires the hiringProcessMetadataWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `title` (`string`, required): The tag's title. If a tag already exists with that title, the existing tag will be returned. Example: Strong candidate.

Example input: `{"title":"<title>"}`

### `ashby_candidate_update`

Update Candidate · Write

Update an existing Ashby candidate's name, contact details, social links, location, source or credited user.
Returns the updated candidate record.
Use to change a candidate that already exists. Use ashby_candidate_create to add a new one. Only the fields you supply are changed.
Requires the candidatesWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `candidate_id` (`string`, required): The unique id of the candidate to update. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `alternate_email` (`string`, optional): An alternate email address to add to the candidate's profile. Example: test.email@ashbyhq.com.
- `created_at` (`string`, optional): An ISO date string to set the candidate's createdAt timestamp. Example: 2022-08-12T20:29:56.964Z.
- `credited_to_user_id` (`string`, optional): The id of the Ashby user the candidate is credited to. Get user ids from ashby_users_list. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `email` (`string`, optional): Primary, personal email of the candidate to update. Example: test@ashbyhq.com.
- `github_url` (`string`, optional): Url to the candidate's Github profile. Must be a valid Url. Example: https://github.com/user.
- `linked_in_url` (`string`, optional): Url to the candidate's LinkedIn profile. Must be a valid Url. Example: https://linkedin.com/in/user.
- `location_city` (`string`, optional): City of the candidate's location. Example: San Francisco.
- `location_country` (`string`, optional): Country of the candidate's location. Example: United States.
- `location_region` (`string`, optional): Region (state, province, etc.) of the candidate's location. Example: California.
- `name` (`string`, optional): The first and last name of the candidate to update. Example: Adam Hart.
- `phone_number` (`string`, optional): Primary, personal phone number of the candidate to update. Example: 555-555-5555.
- `send_notifications` (`boolean`, optional): Whether users subscribed to the candidate are notified of the update. Defaults to true. Example: true.
- `social_links` (`array`, optional): Social links to set on the candidate. Replaces all existing social links. Each entry needs a type (for example LinkedIn, GitHub, Twitter or Website) and a url. If you also pass linkedin_url, github_url or website_url, those values take precedence for their type. Example: [{"type": "LinkedIn", "url": "https://linkedin.com/in/adamhart"}].
- `source_id` (`string`, optional): The id of the source to set on the candidate. Get source ids from ashby_sources_list. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `website_url` (`string`, optional): Url of the candidate's website. Must be a valid Url. Example: https://twitter.com/user.

Example input: `{"candidate_id":"<candidate_id>"}`

### `ashby_custom_field_value_set`

Set Custom Field Value · Write

Set or clear one custom field value on an Ashby application, candidate, job or opening.
Returns the updated object's custom field values.
Use for a single field. Use ashby_custom_field_values_set to change several fields on the same object in one call and avoid race conditions.
Requires the candidatesWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `field_value` (`string`, required): The value to store; pass null to clear it. The shape depends on the field type: a boolean; a string for String, LongText, Date (ISO date), Url, UUID and ValueSelect (one of the option values); an array of option values for MultiValueSelect; a number; an object with value and currencyCode for Currency; an object with type number-range, minValue and maxValue for NumberRange; an object with type compensation-range, minValue, maxValue, currencyCode and interval for CompensationRange; or an object with any of country, region and city for Location. Example: Senior.
- `object_id` (`string`, required): The id of the object the field value is being set on. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `object_type` (`string`, required): The type of object the field is associated with. One of: Application, Candidate, Job, Opening. Example: Application. One of: `Application`, `Candidate`, `Job`, `Opening`.
- `field_id` (`string`, optional): The id of the custom field definition. Provide this or reference_identifier. Get ids from ashby_custom_fields_list. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `reference_identifier` (`string`, optional): Beta: may not be available for all organizations. The reference id of the custom field, exactly as saved. Provide this or field_id. Example: cost_center.

Example input: `{"field_value":"<field_value>","object_id":"<object_id>","object_type":"Application"}`

### `ashby_custom_field_values_set`

Set Custom Field Values · Write

Set or clear several custom field values on one Ashby application, candidate, job or opening in a single call.
Returns the updated object's custom field values.
Use when changing more than one field on the same object. Use ashby_custom_field_value_set for a single field.
Requires the candidatesWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `object_id` (`string`, required): The id of the object the field values are being set on. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `object_type` (`string`, required): The type of object the fields are associated with. One of: Application, Candidate, Job, Opening. Example: Application. One of: `Application`, `Candidate`, `Job`, `Opening`.
- `values` (`array`, required): The custom field updates to apply, at least one. Each entry identifies the field by its id (or, in beta, its reference identifier) and gives the new value; a null value clears the field. Value shapes follow the field type, as described for ashby_custom_field_value_set. Example: [{"fieldId": "e9ed20fd-d45f-4aad-8a00-a19bfba0083e", "fieldValue": "Senior"}, {"fieldId": "38430ede-5bd2-41fc-b474-87591cb98cbc", "fieldValue": true}].

Example input: `{"object_id":"<object_id>","object_type":"Application","values":[{"fieldId":"e9ed20fd-d45f-4aad-8a00-a19bfba0083e","fieldValue":"Senior"},{"fieldId":"38430ede-5bd2-41fc-b474-87591cb98cbc","fieldValue":true}]}`

### `ashby_hiring_team_member_add`

Add Hiring Team Member · Write

Assign an Ashby user a hiring team role on an application, a job or an opening.
Returns the hiring team assignment.
Use to staff a job or opening's hiring team. Provide exactly one of application_id, job_id or opening_id. Use ashby_hiring_team_roles_list (names_only false) for role ids.
Requires the organizationWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `role_id` (`string`, required): The id of the hiring team role to assign. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `team_member_id` (`string`, required): The id of the user to assign the role to. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `application_id` (`string`, optional): The application to assign the role on. Provide exactly one of application_id, job_id or opening_id. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `job_id` (`string`, optional): The job to assign the role on. Provide exactly one of application_id, job_id or opening_id. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `opening_id` (`string`, optional): The opening to assign the role on. Provide exactly one of application_id, job_id or opening_id. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{"role_id":"<role_id>","team_member_id":"<team_member_id>"}`

### `ashby_interview_schedule_create`

Create Interview Schedule · Write

Create an interview schedule on an Ashby application with one or more interview events, each with start and end times and interviewers.
Returns the created interview schedule with its events.
Use to book interviews. Use ashby_interview_schedule_update to change it later and ashby_interview_schedule_cancel to cancel it.
Requires the interviewsWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `application_id` (`string`, required): The id of the application for this interview schedule. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `interview_events` (`array`, required): The events that make up the schedule. Each event needs a start time and end time (ISO 8601) and a list of interviewers identified by their Ashby user email, each optionally marked as required to give feedback. An event can also name the interview id to use (otherwise the organization default interview) and carry small key-value extra data. Example: [{"startTime": "2024-01-30T15:00:00.000Z", "endTime": "2024-01-30T16:00:00.000Z", "interviewers": [{"email": "interviewer@example.com", "feedbackRequired": true}]}].

Example input: `{"application_id":"<application_id>","interview_events":[]}`

### `ashby_interview_schedule_update`

Update Interview Schedule · Write

Add, change or cancel events on an Ashby interview schedule that was created with the same API key.
Returns the updated interview schedule.
Use to reschedule interviews. Use ashby_interview_schedule_cancel to cancel the whole schedule.
Requires the interviewsWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `interview_schedule_id` (`string`, required): The id of the interview schedule to update. Only interview schedules created using the API key making the request can be updated. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `allow_feedback_deletion` (`boolean`, optional): Set to true to allow cancelling events that already have submitted feedback; cancelling deletes that feedback. Defaults to false. Example: false.
- `interview_event_ids_to_cancel` (`array`, optional): Ids of interview events on the schedule to cancel. Example: ["e9ed20fd-d45f-4aad-8a00-a19bfba0083e"].
- `interview_events` (`array`, optional): Events to create or update on the schedule. Each event needs a start time, end time and interviewers (by Ashby user email). Include interviewEventId to update an existing event; omit it to create a new one. Example: [{"interviewEventId": "e9ed20fd-d45f-4aad-8a00-a19bfba0083e", "startTime": "2024-01-30T15:00:00.000Z", "endTime": "2024-01-30T16:00:00.000Z", "interviewers": [{"email": "interviewer@example.com"}]}].

Example input: `{"interview_schedule_id":"<interview_schedule_id>"}`

### `ashby_job_create`

Create Job · Write

Create a new job in Ashby with a title, department, location and optional interview plan, template, employment type and brand.
Returns the created job, in Draft status.
Use to open a new role. Use ashby_departments_list and ashby_locations_list for ids, ashby_job_status_set to open it, and ashby_job_posting_create to publish a posting.
Requires the jobsWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `location_id` (`string`, required): The id of the location associated with the job. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `team_id` (`string`, required): The id of the department or team associated with the job. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `title` (`string`, required): The title of the job. Example: Software Engineer.
- `brand_id` (`string`, optional): The id of the brand to use for this job. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `default_interview_plan_id` (`string`, optional): The id of the default interview plan for this job. A job cannot be opened without a default interview plan. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `employment_type` (`string`, optional): The employment type for the job. When omitted, inherits from the job template or defaults to FullTime. One of: FullTime, PartTime, Intern, Contract, Temporary. Example: FullTime. One of: `FullTime`, `PartTime`, `Intern`, `Contract`, `Temporary`.
- `job_template_id` (`string`, optional): The id of the job template to use for this job. Only active job templates can be used to create a job. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{"location_id":"<location_id>","team_id":"<team_id>","title":"<title>"}`

### `ashby_job_posting_create`

Create Job Posting · Write

Create a job posting for an existing Ashby job, with an HTML description, workplace type, locations, listing and publish status.
Returns the created job posting.
Use to advertise a job. Use ashby_job_posting_update to edit an existing posting and ashby_job_posting_status_set to publish or unpublish it.
Requires the jobsWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `job_id` (`string`, required): The id of the job to create a posting for. Example: 8cfb4f68-4d1f-4f8b-9b2f-1f3f2c945f3d.
- `application_form_definition_id` (`string`, optional): The id of the application form definition to use for the posting. If omitted, the organization default form is used. Example: a1b2c3d4-5678-9abc-def0-1234567890ab.
- `description_html` (`string`, optional): The job posting description as an HTML block. Required when status is Published. Example: We are hiring a Software Engineer to build our platform.
.
- `is_listed` (`boolean`, optional): Whether the posting should be listed on the job board. Defaults to true and is forced to false when the parent job is confidential. Example: true.
- `location_id` (`string`, optional): The id of the primary location for the job posting. If omitted, the posting inherits the parent job's location. Example: 7bb8f10f-12d0-4d26-8d08-0f432a67b123.
- `secondary_location_ids` (`array`, optional): Ids of secondary locations for the posting. Get ids from ashby_locations_list. Example: ["7bb8f10f-12d0-4d26-8d08-0f432a67b123"].
- `status` (`string`, optional): The initial status of the job posting. Defaults to Draft if omitted. A description is required when creating a Published posting. One of: Draft, Published. Example: Draft. One of: `Draft`, `Published`.
- `title` (`string`, optional): Title for the posting. Defaults to the job's title. Example: Software Engineer.
- `workplace_type` (`string`, optional): The type of workplace One of: OnSite, Hybrid, Remote. Example: OnSite. One of: `OnSite`, `Hybrid`, `Remote`.

Example input: `{"job_id":"<job_id>"}`

### `ashby_job_posting_status_set`

Set Job Posting Status · Write

Publish or unpublish an Ashby job posting by setting its status to Published or Draft.
Returns the updated job posting.
Use to take a posting live or down. Use ashby_job_status_set to open or close the job itself.
Requires the jobsWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `job_posting_id` (`string`, required): The unique id of the job posting to update. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `status` (`string`, required): The status to apply to the job posting. Set to Draft to unpublish or Published to publish. One of: Draft, Published. Example: Draft. One of: `Draft`, `Published`.

Example input: `{"job_posting_id":"<job_posting_id>","status":"Draft"}`

### `ashby_job_posting_update`

Update Job Posting · Write

Update an Ashby job posting's title, HTML description, workplace type, locations, application form, confirmation email template or job board listings.
Returns the updated job posting.
Use to edit a posting. Use ashby_job_posting_status_set to publish or unpublish it, and ashby_job_update to edit the underlying job.
Requires the jobsWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `job_posting_id` (`string`, required): The unique id of the job posting to update. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `application_confirmation_email_template_id` (`string`, optional): The id of the email template used for application confirmation emails on this posting. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `application_form_definition_id` (`string`, optional): The id of the application form definition to use for this posting. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `description_html` (`string`, optional): New job posting description as an HTML block. Example: We are hiring a Software Engineer to build our platform.
.
- `include_unpublished_job_postings` (`boolean`, optional): Set to true to allow updating an unpublished (draft) posting. Required when the posting is a draft. Example: false.
- `job_board_associations` (`array`, optional): Full replacement of the Ashby-hosted job boards this posting appears on. Each entry needs a job board id and whether the posting is listed on it. Pass an empty array to remove the posting from every Ashby-hosted board; omit to leave boards unchanged. Example: [{"jobBoardId": "ce033f37-9f24-4f6d-8b7f-1d8a3d7c0a2b", "isListed": true}].
- `location_id` (`string`, optional): The id of the primary location for the posting. Get ids from ashby_locations_list. Example: 7bb8f10f-12d0-4d26-8d08-0f432a67b123.
- `secondary_location_ids` (`array`, optional): Full replacement list of secondary location ids for the posting. Pass an empty array to clear them. Example: ["7bb8f10f-12d0-4d26-8d08-0f432a67b123"].
- `suppress_description_closing` (`boolean`, optional): When true, the job description closing from the brand will be suppressed. descriptionClosing will be returned as null. Example: false.
- `suppress_description_opening` (`boolean`, optional): When true, the job description opening from the brand will be suppressed. descriptionOpening will be returned as null. Example: false.
- `title` (`string`, optional): A new title for the job posting. Example: Software Engineer.
- `workplace_type` (`string`, optional): The type of workplace One of: OnSite, Hybrid, Remote. Example: OnSite. One of: `OnSite`, `Hybrid`, `Remote`.

Example input: `{"job_posting_id":"<job_posting_id>"}`

### `ashby_job_status_set`

Set Job Status · Write

Set an Ashby job's status to Draft, Open, Closed or Archived, with an optional close reason.
Returns the updated job record.
Use to open or close a role. Use ashby_close_reasons_list for close reason ids, and ashby_job_posting_status_set to publish or unpublish the posting.
Requires the jobsWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `job_id` (`string`, required): The unique id of the job to set the status of. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `status` (`string`, required): The status to apply to the job One of: Draft, Open, Closed, Archived. Example: Draft. One of: `Draft`, `Open`, `Closed`, `Archived`.
- `close_reason_id` (`string`, optional): The unique id of the close reason.  Only valid when setting the job status to Closed. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{"job_id":"<job_id>","status":"Draft"}`

### `ashby_job_update`

Update Job · Write

Update an Ashby job's title, department, location, default interview plan, employment type or custom requisition id.
Returns the updated job record.
Use to edit job details. Use ashby_job_status_set to open, close or archive the job, and ashby_job_posting_update to edit its public posting.
Requires the jobsWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `job_id` (`string`, required): The unique id of the job to update. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `custom_requisition_id` (`string`, optional): The new custom requisition id for the job. Example: REQ-2471.
- `default_interview_plan_id` (`string`, optional): The new default interview plan to associate with the job. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `employment_type` (`string`, optional): The new employment type for the job One of: FullTime, PartTime, Intern, Contract, Temporary. Example: FullTime. One of: `FullTime`, `PartTime`, `Intern`, `Contract`, `Temporary`.
- `location_id` (`string`, optional): The new location to associate with the job. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `team_id` (`string`, optional): The id of the department or team to associate with the job. Get ids from ashby_departments_list. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `title` (`string`, optional): A new title for the job. Example: Software Engineer.

Example input: `{"job_id":"<job_id>"}`

### `ashby_offer_create`

Create Offer · Write

Create an Ashby offer by submitting the offer form for an offer process. This is the final step of creating an offer.
Returns the created offer.
Use after ashby_offer_process_start and ashby_offer_start, which supply the offer process id, the offer form id and the field paths. Use ashby_offer_update to change an existing offer.
Requires the offersWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `field_submissions` (`array`, required): The values for the offer form fields. Each entry names a field by its path from the offer form definition and gives a value whose shape depends on the field type: a currency field takes an object with a currency code and an integer value, a date field takes an ISO date string, a number field takes an integer, a string field takes text, a select field takes one of its option values, and a multi-select field takes an array of option values. Example: [{"path": "startDate", "value": "2024-03-01"}, {"path": "salary", "value": {"currencyCode": "USD", "value": 150000}}].
- `offer_form_id` (`string`, required): The id of the form associated with the offer. This value is the id included in the response of the offer.start API. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `offer_process_id` (`string`, required): The id of the offer process associated with the offer you're creating. This value is the id included in the response of the offerProcess.start API. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `exclude_form_definition` (`boolean`, optional): If true, omit the form definition from the response. Example: false.

Example input: `{"field_submissions":[{"path":"startDate","value":"2024-03-01"},{"path":"salary","value":{"currencyCode":"USD","value":150000}}],"offer_form_id":"<offer_form_id>","offer_process_id":"<offer_process_id>"}`

### `ashby_offer_process_start`

Start Offer Process · Write

Start the offer process for an Ashby application. This is the first step of creating an offer.
Returns the offer process, whose id is needed by ashby_offer_start and ashby_offer_create.
Use before ashby_offer_start when making an offer to a candidate.
Requires the offersWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `application_id` (`string`, required): The id of the application to start an offer process for. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{"application_id":"<application_id>"}`

### `ashby_offer_start`

Start Offer · Write

Start a new offer version within an Ashby offer process. This is the second step of creating an offer.
Returns the offer form definition, whose id and field paths are needed by ashby_offer_create.
Use after ashby_offer_process_start and before ashby_offer_create.
Requires the offersWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `offer_process_id` (`string`, required): The ID of the offer process to start. This value is the id included in the response of the offerProcess.start API. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{"offer_process_id":"<offer_process_id>"}`

### `ashby_offer_update`

Update Offer · Write

Update an Ashby offer by submitting new field values. This creates a new offer version and restarts any required approvals.
Returns the updated offer.
Use to change offer terms. Use ashby_offer_get first to read the current field paths and values.
Requires the offersWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `field_submissions` (`array`, required): The offer field values to submit. Each entry identifies a field by its path (from ashby_offer_get) or, for offer custom fields, by its reference identifier (beta), and gives a value whose shape depends on the field type: a currency field takes an object with a currency code and an integer value, a date field takes an ISO date string, a number field takes an integer, a string field takes text, and select fields take option values. Example: [{"path": "salary", "value": {"currencyCode": "USD", "value": 160000}}].
- `offer_id` (`string`, required): The id of the offer you're updating. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `exclude_form_definition` (`boolean`, optional): If true, omit the form definition from the response. Example: false.

Example input: `{"field_submissions":[{"path":"salary","value":{"currencyCode":"USD","value":160000}}],"offer_id":"<offer_id>"}`

### `ashby_opening_create`

Create Opening · Write

Create an opening (a headcount slot) in Ashby, optionally linked to jobs, a team and locations, with target hire and start dates.
Returns the created opening, in Draft state unless another state is given.
Use to add headcount. Use ashby_opening_update to edit it later.
Requires the jobsWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `description` (`string`, optional): The description of the opening. Example: Backfill for the platform team.
- `employment_type` (`string`, optional): The employment type for this opening One of: FullTime, PartTime, Intern, Contract, Temporary. Example: FullTime. One of: `FullTime`, `PartTime`, `Intern`, `Contract`, `Temporary`.
- `identifier` (`string`, optional): The human-readable identifier of the opening. Example: ENG-042.
- `is_backfill` (`boolean`, optional): Whether this opening is intended to backfill a previous employee. Example: false.
- `job_ids` (`array`, optional): Ids of the jobs associated with the opening. Get ids from ashby_jobs_list. Example: ["e9ed20fd-d45f-4aad-8a00-a19bfba0083e"].
- `location_ids` (`array`, optional): Ids of the locations associated with the opening. Get ids from ashby_locations_list. Example: ["e9ed20fd-d45f-4aad-8a00-a19bfba0083e"].
- `opening_state` (`string`, optional): The state the opening should be created in. Defaults to Draft. If not Draft, additional validation will be performed. One of: Draft, Approved, Open, Closed. Example: Draft. One of: `Draft`, `Approved`, `Open`, `Closed`.
- `target_hire_date` (`string`, optional): The date (in YYYY-MM-DD format) by which you intend to hire against this opening. Example: 2026-03-01.
- `target_start_date` (`string`, optional): The date (in YYYY-MM-DD format) by which you intend someone hired against this opening will start employment. Example: 2026-04-01.
- `team_id` (`string`, optional): The id of the department or team associated with the opening. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{}`

### `ashby_opening_update`

Update Opening · Write

Update an Ashby opening's identifier, description, team, target hire and start dates, backfill flag or employment type.
Returns the updated opening.
Use to edit headcount details. Use ashby_opening_create to add a new opening.
Requires the jobsWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `opening_id` (`string`, required): The id of the opening to update. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `description` (`string`, optional): The description of the opening. Example: Backfill for the platform team.
- `employment_type` (`string`, optional): The employment type for this opening One of: FullTime, PartTime, Intern, Contract, Temporary. Example: FullTime. One of: `FullTime`, `PartTime`, `Intern`, `Contract`, `Temporary`.
- `identifier` (`string`, optional): The human-readable identifier of the opening. Example: ENG-042.
- `is_backfill` (`boolean`, optional): Whether this opening is intended to backfill a previous employee. Example: false.
- `target_hire_date` (`string`, optional): The date (in YYYY-MM-DD format) by which you intend to hire against this opening. Example: 2026-03-01.
- `target_start_date` (`string`, optional): The date (in YYYY-MM-DD format) by which you intend someone hired against this opening will start employment. Example: 2026-04-01.
- `team_id` (`string`, optional): The id of the department or team associated with the opening. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{"opening_id":"<opening_id>"}`

### `ashby_project_create`

Create Project · Write

Create a sourcing project in Ashby with a title, optional description, initial custom field values and confidentiality.
Returns the created project, active and with no candidates.
Use to start a new talent pool. Use ashby_candidate_project_add to add candidates and ashby_project_update to edit it.
Requires the projectsWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `title` (`string`, required): The project's title. Example: Engineering prospects.
- `confidential` (`boolean`, optional): Whether the project is confidential. Defaults to false. Requires confidential project availability. Example: false.
- `custom_fields` (`array`, optional): Initial custom field values. Supply every required Project custom field. Each entry identifies the field by its id (or, in beta, its reference identifier) and gives a value: text, a boolean, a number, option values, an ISO date or a User id. Find Project field definitions with ashby_custom_fields_list. Example: [{"fieldId": "b4e1f83d-e4d0-41b9-a0ef-50a5ea9a0f9b", "fieldValue": "Engineering"}].
- `description` (`string`, optional): The project's description. Plain text by default; set description_content_type to text/html to send HTML. Example: Candidates for future engineering roles.
- `description_content_type` (`string`, optional): Content type of the description: text/plain (default) or text/html. One of: text/plain, text/html. Example: text/plain. One of: `text/plain`, `text/html`. Default: `text/plain`.

Example input: `{"title":"<title>"}`

### `ashby_project_update`

Update Project · Write

Update an Ashby project's title or description.
Returns the updated project.
Use to rename or re-describe a project. Use ashby_project_create to make a new one.
Requires the projectsWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `project_id` (`string`, required): The id of the project to update. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `description` (`string`, optional): New project description. Plain text by default; set description_content_type to text/html to send HTML. Omit to keep the current description. Example: Candidates for future engineering roles.
- `description_content_type` (`string`, optional): Content type of the description: text/plain (default) or text/html. Only used with description. One of: text/plain, text/html. Example: text/plain. One of: `text/plain`, `text/html`. Default: `text/plain`.
- `title` (`string`, optional): The project's title. Example: Engineering prospects.

Example input: `{"project_id":"<project_id>"}`

### `ashby_referral_create`

Create Referral · Write

Submit an employee referral in Ashby by filling in the referral form.
Returns the created referral, including the new candidate and application.
Use ashby_referral_form_get first for the form id and field paths. Use ashby_referrals_list to see existing referrals.
Requires the candidatesWrite permission on the Ashby API key.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `credited_to_user_id` (`string`, required): The id of the user submitting the referral. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `field_submissions` (`array`, required): The referral form values. Each entry names a field by its path from the referral form and gives a value: most fields take a string, number or boolean; a job field takes the id of an open job; a location field takes an object with any of country, region and city. Example: [{"path": "_systemfield_name", "value": "Adam Hart"}, {"path": "_systemfield_email", "value": "adam.hart@example.com"}].
- `referral_form_id` (`string`, required): The id of the referral form, from ashby_referral_form_get. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `created_at` (`string`, optional): An ISO date string to set the referral's createdAt timestamp to. When this value isn't provided, the createdAt timestamp defaults to the time the referral was created. Example: 2022-08-12T20:29:56.964Z.

Example input: `{"credited_to_user_id":"<credited_to_user_id>","field_submissions":[{"path":"_systemfield_name","value":"Adam Hart"},{"path":"_systemfield_email","value":"adam.hart@example.com"}],"referral_form_id":"<referral_form_id>"}`

### `ashby_application_hiring_team_member_remove`

Remove Application Hiring Team Member · Destructive

Remove an Ashby user's hiring team role from one application.
Returns the result of the removal.
Use for application-level assignments. Use ashby_hiring_team_member_remove for job- or opening-level teams.
Requires the candidatesWrite permission on the Ashby API key.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `application_id` (`string`, required): The application to unassign the user a role from. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `role_id` (`string`, required): The id of the hiring team role to unassign. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `team_member_id` (`string`, required): The id of the user to unassign the role from. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{"application_id":"<application_id>","role_id":"<role_id>","team_member_id":"<team_member_id>"}`

### `ashby_candidate_project_remove`

Remove Candidate from Project · Destructive

Remove an Ashby candidate from a project.
Returns the updated candidate record.
Use to take a candidate out of a sourcing project. Use ashby_candidate_project_add to add one.
Requires the candidatesWrite permission on the Ashby API key.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `candidate_id` (`string`, required): The id of the candidate. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `project_id` (`string`, required): The id of the project. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{"candidate_id":"<candidate_id>","project_id":"<project_id>"}`

### `ashby_candidate_tag_remove`

Remove Tag from Candidate · Destructive

Remove a tag from an Ashby candidate.
Returns the updated candidate record with its remaining tags.
Use to take a label off a candidate. Use ashby_candidate_tag_add to add one.
Requires the candidatesWrite permission on the Ashby API key.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `candidate_id` (`string`, required): The id of the candidate to remove the tag from. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `tag_id` (`string`, required): The id of the tag to remove from the candidate. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{"candidate_id":"<candidate_id>","tag_id":"<tag_id>"}`

### `ashby_hiring_team_member_remove`

Remove Hiring Team Member · Destructive

Remove an Ashby user's hiring team role from an application, a job or an opening.
Returns the result of the removal.
Provide exactly one of application_id, job_id or opening_id. Use ashby_hiring_team_member_add to assign a role.
Requires the organizationWrite permission on the Ashby API key.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `role_id` (`string`, required): The id of the hiring team role to unassign from. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `team_member_id` (`string`, required): The id of the user to unassign the role from. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `application_id` (`string`, optional): The application to remove the role from. Provide exactly one of application_id, job_id or opening_id. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `job_id` (`string`, optional): The job to remove the role from. Provide exactly one of application_id, job_id or opening_id. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `opening_id` (`string`, optional): The opening to remove the role from. Provide exactly one of application_id, job_id or opening_id. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.

Example input: `{"role_id":"<role_id>","team_member_id":"<team_member_id>"}`

### `ashby_interview_schedule_cancel`

Cancel Interview Schedule · Destructive

Cancel an Ashby interview schedule and its events.
Returns the cancelled interview schedule.
Use to call off scheduled interviews. Use ashby_interview_schedule_update to cancel only some events.
Requires the interviewsWrite permission on the Ashby API key.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `interview_schedule_id` (`string`, required): The id of the interview schedule to cancel. Example: e9ed20fd-d45f-4aad-8a00-a19bfba0083e.
- `allow_reschedule` (`boolean`, optional): Whether or not this interview schedule can be rescheduled. Example: true.

Example input: `{"interview_schedule_id":"<interview_schedule_id>"}`

## Related

Other Productivity connectors ([all 144](/agentkit/connectors/?category=productivity)):

- [Slack](/agentkit/connectors/slack/): Scalekit connector, OAuth, 96 tools
- [Microsoft 365](/agentkit/connectors/microsoft365/): Scalekit connector, OAuth, 317 tools
- [Notion](/agentkit/connectors/notion/): Scalekit connector, OAuth, 51 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
