Integrations / Ashby
Ashby
Recruiting: candidates, applications and jobs.
6 actions
API key
5 read1 write
Calls api.ashbyhq.com
Connect
const conn = await setu.connections.initiate({ userId: "user_1", toolkit: "ashby" });
console.log(conn.connectUrl); // show this to your user
await conn.waitUntilActive();Permissions requested
This toolkit uses a single credential and requests no scopes.
Actions
Create candidatewriteashby.create_candidateCreate a candidate in Ashby with a name and optional contact details.
| Input | Type | Description | |
|---|---|---|---|
name | string | Required | First and last name |
email | string | Optional | Primary email |
phone_number | string | Optional | Primary phone |
linkedin_url | string | Optional | LinkedIn profile URL |
github_url | string | Optional | GitHub profile URL |
website | string | Optional | Personal website URL |
await setu.execute({
userId: "user_1",
action: "ashby.create_candidate",
input: {
"name": "<name>"
},
});Get candidatereadashby.get_candidateGet one candidate by Ashby id (or by an external mapping id).
| Input | Type | Description | |
|---|---|---|---|
id | string | Optional | Candidate id (UUID) |
external_mapping_id | string | Optional | Id assigned to the candidate outside Ashby |
await setu.execute({
userId: "user_1",
action: "ashby.get_candidate",
input: {},
});List applicationsreadashby.list_applicationsList applications, optionally filtered by status or job, with paging by cursor.
| Input | Type | Description | |
|---|---|---|---|
cursor | string | Optional | Cursor (nextCursor) from the previous page |
limit | integer | Optional | Maximum results to return (up to 100) |
status | string | Optional | Status filter (case-insensitive) |
job_id | string | Optional | Only applications for this job id (UUID) |
created_after | integer | Optional | Only applications created after this Unix time in milliseconds |
await setu.execute({
userId: "user_1",
action: "ashby.list_applications",
input: {},
});List candidatesreadashby.list_candidatesList candidates in Ashby, oldest first, with paging by cursor.
| Input | Type | Description | |
|---|---|---|---|
cursor | string | Optional | Cursor (nextCursor) from the previous page |
limit | integer | Optional | Maximum results to return (up to 100) |
created_after | integer | Optional | Only candidates created after this Unix time in milliseconds |
await setu.execute({
userId: "user_1",
action: "ashby.list_candidates",
input: {},
});List jobsreadashby.list_jobsList jobs, optionally filtered by status (Draft, Open, Closed, Archived), with paging by cursor.
| Input | Type | Description | |
|---|---|---|---|
cursor | string | Optional | Cursor (nextCursor) from the previous page |
limit | integer | Optional | Maximum results to return (up to 100) |
status | array of string | Optional | Only jobs in these statuses |
await setu.execute({
userId: "user_1",
action: "ashby.list_jobs",
input: {},
});Search candidatesreadashby.search_candidatesSearch candidates by exact email and/or name.
| Input | Type | Description | |
|---|---|---|---|
email | string | Optional | Candidate email |
name | string | Optional | Candidate name |
limit | integer | Optional | Maximum candidates (up to 100) |
await setu.execute({
userId: "user_1",
action: "ashby.search_candidates",
input: {},
});