# ATS Job Boards API — pull company-direct job postings from Greenhouse, Lever, Ashby and Workable in one unified schema

> all open jobs for a board → {jobs[]{id,title,url,company,location,locations,...}, count, total, company, ats_source}. `ats`=greenhouse|lever|ashby|workable + `company` (board token/subdomain).
> ReefAPI engine `ats-jobs` · 4 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/ats-jobs/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed or blocked calls are free.
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http, `Authorization: Bearer <key>`) and your assistant can call these actions directly.

## Endpoints

### POST /ats-jobs/v1/company_jobs — 1 credit
all open jobs for a board → {jobs[]{id,title,url,company,location,locations,...}, count, total, company, ats_source}. `ats`=greenhouse|lever|ashby|workable + `company` (board token/subdomain).

**Parameters:**
- `ats` (enum, required) — Applicant-tracking system / job-board provider. [one of: greenhouse, lever, ashby, workable]
- `company` (string, required) — Board token / subdomain / org slug (e.g. greenhouse 'gitlab', lever 'spotify', ashby 'ramp'). Identifies one company's board.
- `limit` (integer, optional) — Max jobs to return (1-2000). Omit/0 = provider default (all).
- `cursor` (string, optional) — Opaque pagination cursor from a previous response (provider-specific).
- `page` (integer, optional) — Page number for providers that paginate by page (alternative to cursor).

**Returns:** jobs[]{id, title, url, company, location, locations, department, ...}, count, total, company, ats_source

**Example request body:**
```json
{
  "ats": "greenhouse",
  "company": "gitlab"
}
```

### POST /ats-jobs/v1/job_detail — 1 credit
one fully-populated job (description + requirements/benefits) by `ats` + `company` + `job_id`.

**Parameters:**
- `ats` (enum, required) — Applicant-tracking system / job-board provider. [one of: greenhouse, lever, ashby, workable]
- `company` (string, required) — Board token / subdomain / org slug (e.g. greenhouse 'gitlab', lever 'spotify', ashby 'ramp'). Identifies one company's board.
- `job_id` (string, required) — The job's id within that ATS board (from a company_jobs result's jobs[].id).

**Returns:** job{} — one fully-populated posting (description, requirements, benefits, location, ...)

### POST /ats-jobs/v1/search — 1 credit
cross-company job search over the Workable aggregator (170K jobs) → jobs[]. `query` + (default `ats`=workable). paginated.

**Parameters:**
- `query` (string, required) — Free-text keyword for the Workable cross-company aggregator search.
- `ats` (enum, optional, default "workable") — Applicant-tracking system / job-board provider. For search only 'workable' is supported (defaults to workable). [one of: greenhouse, lever, ashby, workable]
- `limit` (integer, optional) — Max jobs to return (1-2000). Omit/0 = provider default (all).
- `cursor` (string, optional) — Opaque pagination cursor from a previous response (provider-specific).
- `page` (integer, optional) — Page number for providers that paginate by page (alternative to cursor).

**Returns:** jobs[]{id, title, url, company, location, ...}, count, total, query, ats_source

**Example request body:**
```json
{
  "query": "python engineer",
  "ats": "workable"
}
```

### POST /ats-jobs/v1/providers — 1 credit
the supported ATS providers + their capabilities

**Parameters:** none

**Returns:** providers[] — the supported ATS keys (greenhouse, lever, ashby, workable)

## More
- Try it live, no code: https://reefapi.com/playground?engine=ats-jobs
- Human docs page: https://reefapi.com/docs/ats-jobs
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
