Setu Recipes: reusable digital workers across every app.Browse templates

Integrations / Ashby

Ashby

Recruiting: candidates, applications and jobs.

6 actions API key 5 read1 write Calls api.ashbyhq.com

Connect

TypeScript
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.
InputTypeDescription
namestringRequiredFirst and last name
emailstringOptionalPrimary email
phone_numberstringOptionalPrimary phone
linkedin_urlstringOptionalLinkedIn profile URL
github_urlstringOptionalGitHub profile URL
websitestringOptionalPersonal website URL
TypeScript
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).
InputTypeDescription
idstringOptionalCandidate id (UUID)
external_mapping_idstringOptionalId assigned to the candidate outside Ashby
TypeScript
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.
InputTypeDescription
cursorstringOptionalCursor (nextCursor) from the previous page
limitintegerOptionalMaximum results to return (up to 100)
statusstringOptionalStatus filter (case-insensitive)
job_idstringOptionalOnly applications for this job id (UUID)
created_afterintegerOptionalOnly applications created after this Unix time in milliseconds
TypeScript
await setu.execute({
  userId: "user_1",
  action: "ashby.list_applications",
  input: {},
});
List candidatesreadashby.list_candidatesList candidates in Ashby, oldest first, with paging by cursor.
InputTypeDescription
cursorstringOptionalCursor (nextCursor) from the previous page
limitintegerOptionalMaximum results to return (up to 100)
created_afterintegerOptionalOnly candidates created after this Unix time in milliseconds
TypeScript
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.
InputTypeDescription
cursorstringOptionalCursor (nextCursor) from the previous page
limitintegerOptionalMaximum results to return (up to 100)
statusarray of stringOptionalOnly jobs in these statuses
TypeScript
await setu.execute({
  userId: "user_1",
  action: "ashby.list_jobs",
  input: {},
});
Search candidatesreadashby.search_candidatesSearch candidates by exact email and/or name.
InputTypeDescription
emailstringOptionalCandidate email
namestringOptionalCandidate name
limitintegerOptionalMaximum candidates (up to 100)
TypeScript
await setu.execute({
  userId: "user_1",
  action: "ashby.search_candidates",
  input: {},
});