with one click
ashby
Ashby API for applicant tracking and recruiting. Use when user mentions "Ashby", "ATS", "applicant tracking", "candidate", "job application", "recruiting pipeline", "job posting", "opening", or "hiring project".
Menu
Ashby API for applicant tracking and recruiting. Use when user mentions "Ashby", "ATS", "applicant tracking", "candidate", "job application", "recruiting pipeline", "job posting", "opening", or "hiring project".
| name | ashby |
| description | Ashby API for applicant tracking and recruiting. Use when user mentions "Ashby", "ATS", "applicant tracking", "candidate", "job application", "recruiting pipeline", "job posting", "opening", or "hiring project". |
If requests fail, run zero doctor check-connector --env-name ASHBY_TOKEN or zero doctor check-connector --url https://api.ashbyhq.com/application.list --method POST
Ashby returns 401 when the key is missing and 403 when the key is wrong, deactivated, or lacks permission for the endpoint. A 403 response with missing_endpoint_permission means the key is valid but needs the relevant Ashby API permission.
All requests require HTTP Basic Auth with the API key as the username and an empty password. With curl, pass the token as:
-u "$ASHBY_TOKEN:"
Ashby's API is RPC-style: endpoints are usually POST /resource.method, and request parameters go in JSON bodies. Include both JSON headers on API calls:
-H "Accept: application/json; version=1" -H "Content-Type: application/json"
| Variable | Description |
|---|---|
ASHBY_TOKEN | Ashby API key |
Base URL: https://api.ashbyhq.com
POST /candidate.list
Requires candidatesRead. Supports pagination and incremental sync.
curl -s -X POST "https://api.ashbyhq.com/candidate.list" \
-u "$ASHBY_TOKEN:" \
-H "Accept: application/json; version=1" \
-H "Content-Type: application/json" \
-d '{"limit": 25}'
POST /candidate.search
Use this for targeted lookup by email or name. Responses are limited, so use candidate.list for broad syncs.
curl -s -X POST "https://api.ashbyhq.com/candidate.search" \
-u "$ASHBY_TOKEN:" \
-H "Accept: application/json; version=1" \
-H "Content-Type: application/json" \
-d '{"email": "jane.doe@example.com"}'
POST /application.list
Requires candidatesRead. Useful filters include status, jobId, createdAfter, limit, cursor, and syncToken.
curl -s -X POST "https://api.ashbyhq.com/application.list" \
-u "$ASHBY_TOKEN:" \
-H "Accept: application/json; version=1" \
-H "Content-Type: application/json" \
-d '{"limit": 25, "status": "Active"}'
POST /job.list
Requires jobsRead. Lists open, closed, and archived jobs. Include Draft in the status parameter when draft jobs are needed.
curl -s -X POST "https://api.ashbyhq.com/job.list" \
-u "$ASHBY_TOKEN:" \
-H "Accept: application/json; version=1" \
-H "Content-Type: application/json" \
-d '{"limit": 25}'
POST /opening.list
Requires jobsRead. Supports pagination and incremental sync.
curl -s -X POST "https://api.ashbyhq.com/opening.list" \
-u "$ASHBY_TOKEN:" \
-H "Accept: application/json; version=1" \
-H "Content-Type: application/json" \
-d '{"limit": 25}'
POST /jobPosting.list
Requires jobsRead. If results will be shown publicly, set listedOnly to true so unlisted job postings are not displayed.
curl -s -X POST "https://api.ashbyhq.com/jobPosting.list" \
-u "$ASHBY_TOKEN:" \
-H "Accept: application/json; version=1" \
-H "Content-Type: application/json" \
-d '{"listedOnly": true}'
GET /posting-api/job-board/{JOB_BOARD_NAME}
This endpoint is for public career pages and does not use the API-key auth flow.
curl -s "https://api.ashbyhq.com/posting-api/job-board/<job-board-name>?includeCompensation=true"
POST /project.list
Requires candidatesRead. Supports pagination and incremental sync.
curl -s -X POST "https://api.ashbyhq.com/project.list" \
-u "$ASHBY_TOKEN:" \
-H "Accept: application/json; version=1" \
-H "Content-Type: application/json" \
-d '{"limit": 25}'
List endpoints return results, moreDataAvailable, and, when more pages are available, nextCursor. Send the latest nextCursor as cursor until moreDataAvailable is false.
curl -s -X POST "https://api.ashbyhq.com/candidate.list" \
-u "$ASHBY_TOKEN:" \
-H "Accept: application/json; version=1" \
-H "Content-Type: application/json" \
-d '{"limit": 100, "cursor": "<nextCursor>"}'
For endpoints with syncToken, store the syncToken returned on the final page and send it on the next run to fetch only changes:
curl -s -X POST "https://api.ashbyhq.com/candidate.list" \
-u "$ASHBY_TOKEN:" \
-H "Accept: application/json; version=1" \
-H "Content-Type: application/json" \
-d '{"limit": 100, "syncToken": "<syncToken>"}'
If Ashby returns incremental_sync_too_large or sync_token_expired, discard the stored sync token and run a fresh full sync without syncToken.
curl -s -X POST "https://api.ashbyhq.com/candidate.search" \
-u "$ASHBY_TOKEN:" \
-H "Accept: application/json; version=1" \
-H "Content-Type: application/json" \
-d '{"email": "jane.doe@example.com"}'
Replace <job-id> with the Ashby job UUID:
curl -s -X POST "https://api.ashbyhq.com/application.list" \
-u "$ASHBY_TOKEN:" \
-H "Accept: application/json; version=1" \
-H "Content-Type: application/json" \
-d '{"jobId": "<job-id>", "status": "Active", "limit": 100}'
Requires candidatesWrite. If the organization uses the beta X-On-Behalf-Of flow, pass the Ashby user ID in that header.
curl -s -X POST "https://api.ashbyhq.com/candidate.createNote" \
-u "$ASHBY_TOKEN:" \
-H "Accept: application/json; version=1" \
-H "Content-Type: application/json" \
-H "X-On-Behalf-Of: <user-id>" \
-d '{"candidateId": "<candidate-id>", "note": "Reached out by email.", "sendNotifications": false}'
Netdata Cloud API for observability metrics, spaces, rooms, nodes, contexts, alerts, and infrastructure monitoring data. Use when user mentions "Netdata", "netdata.cloud", "Netdata Cloud", or asks to query Netdata monitoring data.
Google Search Console API for SEO and indexing data. Use when user mentions "Search Console", "GSC", "search analytics", "impressions/clicks", "keyword rankings", "sitemaps", "URL inspection", or "indexing status".
Lark API for collaboration. Use when user mentions "Lark", "Lark docs", or asks about ByteDance workspace tools.
Cursor Cloud Agents API for launching and managing background coding agents. Use when the user mentions "Cursor", "Cursor agents", "Cursor background agents", "cloud agents", "cursor.com", or wants to start, monitor, follow up on, or cancel an autonomous coding agent on a GitHub repository.
Tripo 3D API for generating 3D models from text or images. Use when the user mentions "Tripo", "Tripo 3D", "Tripo3D", "tripo3d.ai", text-to-3D, image-to-3D, or wants to generate, refine, texture, or animate a 3D model (mesh, GLB, FBX, USDZ).
Operate paid advertising campaigns across Google Ads, Meta Ads, and other channels. Use when asked to launch, audit, monitor, troubleshoot, or optimize paid ads, PPC, performance marketing, media buying, search terms, negative keywords, ad creative tests, conversion tracking, attribution, budget pacing, CPA, CAC, ROAS, or campaign experiments.