---
title: "Ashby API"
description: "Ashby API: the keyless api.ashbyhq.com/posting-api/job-board endpoint, the authenticated API, the official docs, and every public Ashby board in one call."
canonical: https://jobspipe.dev/sources/ashby
date_published: 2026-06-16
date_modified: 2026-09-30
author: Dvir Atias
---

# Ashby API

Ashby's public Job Board endpoint is keyless: GET https://api.ashbyhq.com/posting-api/job-board/<organizationName> returns one customer's published postings as JSON with title, location, department, employment type and apply URL, while the authenticated Ashby API needs a key from that customer. JobsPipe returns Ashby postings from one search endpoint, in the same record shape as the rest of its 30+ sources. [developers.ashbyhq.com](https://developers.ashbyhq.com/docs/public-job-posting-api).

> Ashby's Job Board endpoint covers one company at a time with no key. JobsPipe returns postings from every public Ashby board in one call, in the same record shape as every other board it covers.

**Canonical URL:** https://jobspipe.dev/sources/ashby

## Official Ashby API documentation

Ashby documents its public job posting API at developers.ashbyhq.com. The endpoint returns all currently published job postings for one organization, named by its jobs page name, which is the last part of the company's jobs.ashbyhq.com address. It needs no key, and includeCompensation=true adds compensation data to each posting.

- Job postings endpoint: `GET https://api.ashbyhq.com/posting-api/job-board/{JOB_BOARD_NAME}`
- With compensation: `GET https://api.ashbyhq.com/posting-api/job-board/{JOB_BOARD_NAME}?includeCompensation=true`
- Hosted job board: `https://jobs.ashbyhq.com/{JOB_BOARD_NAME}`

- [Ashby Job Postings API documentation: developers.ashbyhq.com/docs/public-job-posting-api](https://developers.ashbyhq.com/docs/public-job-posting-api)

## Coverage

- **Sources covered:** Public Ashby job boards
- **Freshness:** discovered_at, last_seen_at and verified_at on every record
- **History retention:** Closed postings kept, with closed_at and closed_reason

## Ashby serves a public job-board API per organization: no key needed. Swap in any company's Ashby board name.

Endpoint: `https://api.ashbyhq.com/posting-api/job-board/openai`

```bash
curl "https://api.ashbyhq.com/posting-api/job-board/openai"
```

## Why Ashby jobs data is confusing

Ashby exposes a public Job Board endpoint at api.ashbyhq.com/posting-api/job-board/<organizationName> that returns a single customer's published postings without authentication. That is what most developers find first. It works for one customer, but it does not scale to many: there is no list endpoint to discover Ashby customers, no cross-customer key, and the organization slug must be known up front.

Ashby also ships a full REST API at api.ashbyhq.com covering jobs, candidates, applications, offers, sources and webhooks. That API requires a key minted inside the customer's Ashby admin under Settings, then API. Each key is tenant-scoped, so it cannot read jobs from any company other than the one that generated it.

JobsPipe returns Ashby postings through one endpoint with one key, in the same record shape as Workday, Greenhouse, Lever and every other board it covers.

## Workarounds

### Use Ashby's public Job Board endpoint per customer

Works for one named Ashby customer. You must know the organization slug and write a separate fetch per company. No customer-discovery surface and no cross-customer pagination.

### Get Ashby API keys from each customer

Possible for one or two named accounts. Each customer would have to mint you a key in their admin. Impossible at the scale of a multi-company aggregator.

### Use JobsPipe

Every public Ashby board, one endpoint, one key. Same schema as Workday, Greenhouse, Lever, Indeed and every other board it covers. The free plan includes 1,000 jobs to start.

## Fields available on every record

- `id`
- `job_title`
- `company`
- `company_domain`
- `url`
- `date_posted`
- `discovered_at`
- `last_seen_at`
- `verified_at`
- `status`
- `closed_at`
- `closed_reason`
- `ghost_score`
- `seniority`
- `cities`
- `state_code`
- `min_annual_salary_usd`
- `max_annual_salary_usd`
- `technology_slugs`
- `keyword_slugs`
- `esco_skills`
- `sources`

## Sample response

```json
{
  "id": "3f1c9d2e-7b64-4a0e-9c21-5d8e4f7a1b23",
  "job_title": "Software Engineer, Sync Engine",
  "company": "Linear",
  "company_domain": "linear.app",
  "url": "https://jobs.ashbyhq.com/linear/3f1c9d2e-7b64-4a0e-9c21-5d8e4f7a1b23",
  "date_posted": "2026-09-01",
  "discovered_at": "2026-09-01T16:30:44+00:00",
  "last_seen_at": "2026-09-08 03:55:12",
  "verified_at": "2026-09-08 04:20:37",
  "status": "active",
  "closed_at": null,
  "closed_reason": null,
  "ghost_score": 8,
  "seniority": "mid",
  "cities": [],
  "state_code": null,
  "min_annual_salary_usd": 180000,
  "max_annual_salary_usd": 240000,
  "technology_slugs": [
    "typescript",
    "postgresql",
    "graphql"
  ],
  "keyword_slugs": [
    "sync-engine",
    "real-time-collaboration"
  ],
  "sources": [
    {
      "provider": "ashby",
      "url": "https://jobs.ashbyhq.com/linear/3f1c9d2e-7b64-4a0e-9c21-5d8e4f7a1b23"
    }
  ]
}
```

## FAQ

### How do I find a company's Ashby organization name?

It is the path segment of the company's board on jobs.ashbyhq.com, for example linear in jobs.ashbyhq.com/linear, and the same value goes into api.ashbyhq.com/posting-api/job-board/<organizationName>. Ashby has no endpoint that lists its customers, so you need the name up front. Some companies embed their Ashby board on their own domain, which hides the name behind a custom careers page.

### Does the Ashby job board API include salary?

Yes, when the customer publishes compensation. The public Job Board endpoint returns compensation alongside title, location, department, employment type and the apply URL, and Ashby's docs describe an includeCompensation flag for it. In JobsPipe records the stated range lands in min_annual_salary_usd and max_annual_salary_usd, and Ashby boards skew to startups that publish salary bands.

### What is the Ashby API rate limit?

Ashby's documentation publishes no rate limit for the public job posting endpoint, so set your own modest ceiling and back off when a request fails. The authenticated Ashby API is reached with one customer's key and reads that organization only. Through JobsPipe the only limits you meet are those of your JobsPipe plan.

### Can I filter Ashby jobs by company, country or remote status?

Yes. In the JSON body of POST /v1/jobs/search, add "company_name_partial_match_or": ["linear"] to narrow to one Ashby customer, "job_country_code_or": ["US"] for country and "remote": true for remote-only roles, with "source_or": ["ashby"] to stay on Ashby rows. JobsPipe documents the full filter list in its docs.

## Does Ashby have an API?

Yes. The surface most developers want is the public Job Board endpoint, api.ashbyhq.com/posting-api/job-board/<organizationName>, which returns a customer's published postings as JSON with title, location, department, employment type, compensation when the customer publishes it, and the apply URL, with no key. Behind it sits the authenticated Ashby API at api.ashbyhq.com/v1 for jobs, candidates, applications, offers, sources, scheduled interviews and webhooks, and the Embed API customers use to render their board on their own site. All three are per organization. JobsPipe returns postings from every public Ashby board together.

## Is the Ashby API free?

The public Job Board endpoint is free and unauthenticated. The authenticated API carries no separate price but is only reachable with a key issued inside a paying customer's admin, so it is unavailable to outsiders rather than expensive. JobsPipe's free plan includes 1,000 jobs to start across every board it covers, Ashby included, and the sandbox at POST /v1/sandbox/jobs/search needs no key.

## How do I get an Ashby API key?

A tenant admin creates it under Settings, then API, inside Ashby, choosing the permissions at creation time. The key is used as the username in HTTP Basic auth with an empty password and reaches that organization's data only; Ashby does not issue cross-tenant developer keys. For a single customer's public postings you do not need a key at all, because the Job Board endpoint takes only the organization slug. For postings across many Ashby customers, the key you need is a JobsPipe key, sent as a Bearer token to POST /v1/jobs/search with "source_or": ["ashby"].

## What does the Ashby API documentation cover?

developers.ashbyhq.com documents three things. The Job Board API page covers the public posting-api endpoint, its fields (including compensation when published) and the includeCompensation flag. The Ashby API reference covers the authenticated v1 endpoints grouped by resource (jobs, jobPostings, candidates, applications, offers, sources, interviews, webhooks) with the Basic-auth scheme and per-endpoint quotas. The Embed docs cover rendering a board on a customer site. What the docs do not cover is customer discovery or cross-organization search. JobsPipe's docs at /docs cover the record shape returned for Ashby rows and every other board it covers.

## What JobsPipe returns for Ashby

A POST /v1/jobs/search with "source_or": ["ashby"] returns Ashby postings as JobsPipe records: id (the Ashby posting uuid), job_title, company, company_domain, url on jobs.ashbyhq.com, date_posted, discovered_at, last_seen_at, verified_at, status with closed_at and closed_reason once a posting closes, ghost_score, seniority, min_annual_salary_usd and max_annual_salary_usd when the customer publishes a range, technology_slugs and keyword_slugs parsed from the description, and sources[0].provider set to ashby. Ashby boards skew to startups that publish salary bands and remote roles; the data section below shows the measured shares so you can check that before you filter on it.

## Companies using Ashby

Ashby is the ATS of choice for a particular slice of the modern tech industry: AI labs, developer-tools companies, fintech and a long tail of YC-backed startups. JobsPipe covers public Ashby boards, so 'companies using Ashby' is answered every time you POST /v1/jobs/search with "source_or": ["ashby"]: the distinct company values in the response are the live list, and each one carries a company_domain you can pass to GET /v1/companies/{key}.

## Reading Ashby job boards at scale

The endpoint reads one organization per request, and Ashby's documentation describes no request that lists organizations, so reading many companies means holding the jobs page name of each one and calling each in turn. The documentation publishes no rate limit for it. Each posting carries publishedAt, the time it was last published, and isListed, which is false for a posting meant to be reached by direct link only; a posting that closes simply stops appearing, so closures have to be inferred from one read to the next. The list of employers is the hard part, and the page below shows who they are.

- [Companies using Ashby](https://jobspipe.dev/companies-using/ashby)
- [Jobs APIs compared, including the ones that cover company career sites](https://jobspipe.dev/blog/best-jobs-api-2026)

## Related

- **Product:** https://jobspipe.dev/jobs-api
- **All sources:** https://jobspipe.dev/sources
- **Docs:** https://docs.jobspipe.dev
- **Sign up (free tier):** https://jobspipe.dev/signup

---
Generated from structured data. View the rendered page at https://jobspipe.dev/sources/ashby.

---
Building this integration yourself? The steps above work. The alternative is one API over 30+ sources, already normalized and deduplicated. Try it right now - no key, no signup:

```bash
curl -d '{"limit":3}' https://api.jobspipe.dev/v1/sandbox/jobs/search
```

Sample data, exact live schema. For live data get a free key (1,000 jobs to start) at https://jobspipe.dev/signup, then swap /v1/sandbox/jobs/search for /v1/jobs/search with an Authorization: Bearer header. Full agent index: https://jobspipe.dev/llms.txt?src=md-twin