Piloterr Greenhouse API
The Greenhouse API from Piloterr — 2 operation(s) for greenhouse.
The Greenhouse API from Piloterr — 2 operation(s) for greenhouse.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/piloterr-com:piloterr-com-greenhouse-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Piloterr API Reference Greenhouse API
description: Complete API reference documentation.
version: 1.0.0
servers:
- url: https://api.piloterr.com
description: API Server
tags:
- name: Greenhouse
paths:
/v2/greenhouse/job:
get:
summary: Greenhouse Job
description: 'Fetch one Greenhouse job by board/id, such as discord/8806482002, or by a job-boards.greenhouse.io job URL.
**Credit cost:** 1 credit per call'
operationId: get-greenhouse-job
security:
- ApiKeyAuth: []
parameters:
- name: query
in: query
required: true
description: 'Required. board/id or a job URL. Example: discord/8806482002 or https://job-boards.greenhouse.io/discord/jobs/8806482002.'
schema:
type: string
description: 'Required. board/id or a job URL. Example: discord/8806482002 or https://job-boards.greenhouse.io/discord/jobs/8806482002.'
- $ref: '#/components/parameters/fields'
- $ref: '#/components/parameters/is_async'
- $ref: '#/components/parameters/soft_fail'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
id:
type: integer
url:
type: string
title:
type: string
offices:
type: array
items:
type: string
language:
type: string
location:
type: string
updated_at:
type: string
departments:
type: array
items:
type: string
description:
type: string
company_name:
type: string
requisition_id:
type: string
first_published:
type: string
application_deadline:
nullable: true
examples:
Commercial Policy Lead:
value:
id: 8806482002
url: https://job-boards.greenhouse.io/discord/jobs/8806482002
title: Commercial Policy Lead
offices:
- Remote (US)
language: en
location: San Francisco Bay Area
updated_at: '2026-10-20T20:27:20-04:00'
departments:
- Policy
description: 'Discord has a highly engaged community of millions of daily active users who use the platform for many different reasons, but there’s one thing that nearly everyone does: play video games. Discord plays a uniquely important role in the future of gaming, and we are focused on making it easier and more fun for people to hang out before, during, and after playing games. We are seeking a strategic Commercial Policy Lead to shape Discord''s approach to monetization and revenue products. As a key member of the Product Policy organization, you will develop and implement advertising and commerce policies that enable Discord''s business while maintaining platform safety and user trust. This role requires a deep understanding of digital commerce, creator economies, and advertising ecosystems, with the ability to balance business objectives with responsible platform practices.'
company_name: Discord
requisition_id: R-107406
first_published: '2026-09-15T12:52:11-04:00'
application_deadline: null
'400':
description: Bad Request — missing or invalid parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Bad Request
'401':
description: Unauthorized — the API key is missing, invalid, inactive, or expired, or a rate limit was exceeded (`Rate limit exceeded…` message).
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
invalidKey:
value:
error: Invalid API Key
planRateLimit:
value:
error: 'Rate limit exceeded: You''ve exceeded the per second rate limit on your subscription'
keyQuota:
value:
error: 'Rate limit exceeded for the API key: quota monthly'
'402':
description: Payment Required — your subscription or credit balance is insufficient.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Payment required
'500':
description: Internal Server Error — something went wrong on our side.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Internal Error
tags:
- Greenhouse
post:
summary: Greenhouse Job
description: 'Fetch one Greenhouse job by board/id, such as discord/8806482002, or by a job-boards.greenhouse.io job URL.
**Credit cost:** 1 credit per call'
operationId: post-greenhouse-job
security:
- ApiKeyAuth: []
parameters:
- $ref: '#/components/parameters/fields'
- $ref: '#/components/parameters/is_async'
- $ref: '#/components/parameters/soft_fail'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
query:
type: string
description: 'Required. board/id or a job URL. Example: discord/8806482002 or https://job-boards.greenhouse.io/discord/jobs/8806482002.'
required:
- query
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
id:
type: integer
url:
type: string
title:
type: string
offices:
type: array
items:
type: string
language:
type: string
location:
type: string
updated_at:
type: string
departments:
type: array
items:
type: string
description:
type: string
company_name:
type: string
requisition_id:
type: string
first_published:
type: string
application_deadline:
nullable: true
examples:
Commercial Policy Lead:
value:
id: 8806482002
url: https://job-boards.greenhouse.io/discord/jobs/8806482002
title: Commercial Policy Lead
offices:
- Remote (US)
language: en
location: San Francisco Bay Area
updated_at: '2026-10-20T20:27:20-04:00'
departments:
- Policy
description: 'Discord has a highly engaged community of millions of daily active users who use the platform for many different reasons, but there’s one thing that nearly everyone does: play video games. Discord plays a uniquely important role in the future of gaming, and we are focused on making it easier and more fun for people to hang out before, during, and after playing games. We are seeking a strategic Commercial Policy Lead to shape Discord''s approach to monetization and revenue products. As a key member of the Product Policy organization, you will develop and implement advertising and commerce policies that enable Discord''s business while maintaining platform safety and user trust. This role requires a deep understanding of digital commerce, creator economies, and advertising ecosystems, with the ability to balance business objectives with responsible platform practices.'
company_name: Discord
requisition_id: R-107406
first_published: '2026-09-15T12:52:11-04:00'
application_deadline: null
'400':
description: Bad Request — missing or invalid parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Bad Request
'401':
description: Unauthorized — the API key is missing, invalid, inactive, or expired, or a rate limit was exceeded (`Rate limit exceeded…` message).
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
invalidKey:
value:
error: Invalid API Key
planRateLimit:
value:
error: 'Rate limit exceeded: You''ve exceeded the per second rate limit on your subscription'
keyQuota:
value:
error: 'Rate limit exceeded for the API key: quota monthly'
'402':
description: Payment Required — your subscription or credit balance is insufficient.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Payment required
'500':
description: Internal Server Error — something went wrong on our side.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Internal Error
tags:
- Greenhouse
/v2/greenhouse/search:
get:
summary: Greenhouse Search
description: 'List jobs on a Greenhouse board. query is the board token, such as discord. keyword filters title and location.
**Credit cost:** 1 credit per call'
operationId: get-greenhouse-search
security:
- ApiKeyAuth: []
parameters:
- name: query
in: query
required: true
description: 'Required. Board token or a job-boards.greenhouse.io board URL. Example: discord. A job URL returns 400.'
schema:
type: string
description: 'Required. Board token or a job-boards.greenhouse.io board URL. Example: discord. A job URL returns 400.'
- name: keyword
in: query
required: false
description: 'Optional. Case-insensitive filter on title and location. Example: policy. Omit it to list the whole board.'
schema:
type: string
description: 'Optional. Case-insensitive filter on title and location. Example: policy. Omit it to list the whole board.'
- name: page
in: query
required: false
description: 'Optional. Page number from 1. Example: 2. Defaults to 1. Page size is 20.'
schema:
type: number
description: 'Optional. Page number from 1. Example: 2. Defaults to 1. Page size is 20.'
- $ref: '#/components/parameters/fields'
- $ref: '#/components/parameters/is_async'
- $ref: '#/components/parameters/soft_fail'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
results:
type: array
items:
type: object
properties:
id:
type: integer
url:
type: string
title:
type: string
language:
type: string
location:
type: string
updated_at:
type: string
company_name:
type: string
requisition_id:
type: string
first_published:
type: string
application_deadline:
nullable: true
pagination:
type: object
properties:
next:
type: string
page:
type: integer
per_page:
type: integer
total_pages:
type: integer
total_results:
type: integer
examples:
discord:
value:
results:
- id: 8806482002
url: https://job-boards.greenhouse.io/discord/jobs/8806482002
title: Commercial Policy Lead
language: en
location: San Francisco Bay Area
updated_at: '2026-10-20T20:27:20-04:00'
company_name: Discord
requisition_id: R-107406
first_published: '2026-09-15T12:52:11-04:00'
application_deadline: null
pagination:
next: https://job-boards.greenhouse.io/discord?page=2
page: 1
per_page: 20
total_pages: 3
total_results: 43
'400':
description: Bad Request — missing or invalid parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Bad Request
'401':
description: Unauthorized — the API key is missing, invalid, inactive, or expired, or a rate limit was exceeded (`Rate limit exceeded…` message).
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
invalidKey:
value:
error: Invalid API Key
planRateLimit:
value:
error: 'Rate limit exceeded: You''ve exceeded the per second rate limit on your subscription'
keyQuota:
value:
error: 'Rate limit exceeded for the API key: quota monthly'
'402':
description: Payment Required — your subscription or credit balance is insufficient.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Payment required
'500':
description: Internal Server Error — something went wrong on our side.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Internal Error
tags:
- Greenhouse
post:
summary: Greenhouse Search
description: 'List jobs on a Greenhouse board. query is the board token, such as discord. keyword filters title and location.
**Credit cost:** 1 credit per call'
operationId: post-greenhouse-search
security:
- ApiKeyAuth: []
parameters:
- $ref: '#/components/parameters/fields'
- $ref: '#/components/parameters/is_async'
- $ref: '#/components/parameters/soft_fail'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
query:
type: string
description: 'Required. Board token or a job-boards.greenhouse.io board URL. Example: discord. A job URL returns 400.'
keyword:
type: string
description: 'Optional. Case-insensitive filter on title and location. Example: policy. Omit it to list the whole board.'
page:
type: number
description: 'Optional. Page number from 1. Example: 2. Defaults to 1. Page size is 20.'
required:
- query
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
results:
type: array
items:
type: object
properties:
id:
type: integer
url:
type: string
title:
type: string
language:
type: string
location:
type: string
updated_at:
type: string
company_name:
type: string
requisition_id:
type: string
first_published:
type: string
application_deadline:
nullable: true
pagination:
type: object
properties:
next:
type: string
page:
type: integer
per_page:
type: integer
total_pages:
type: integer
total_results:
type: integer
examples:
discord:
value:
results:
- id: 8806482002
url: https://job-boards.greenhouse.io/discord/jobs/8806482002
title: Commercial Policy Lead
language: en
location: San Francisco Bay Area
updated_at: '2026-10-20T20:27:20-04:00'
company_name: Discord
requisition_id: R-107406
first_published: '2026-09-15T12:52:11-04:00'
application_deadline: null
pagination:
next: https://job-boards.greenhouse.io/discord?page=2
page: 1
per_page: 20
total_pages: 3
total_results: 43
'400':
description: Bad Request — missing or invalid parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Bad Request
'401':
description: Unauthorized — the API key is missing, invalid, inactive, or expired, or a rate limit was exceeded (`Rate limit exceeded…` message).
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
invalidKey:
value:
error: Invalid API Key
planRateLimit:
value:
error: 'Rate limit exceeded: You''ve exceeded the per second rate limit on your subscription'
keyQuota:
value:
error: 'Rate limit exceeded for the API key: quota monthly'
'402':
description: Payment Required — your subscription or credit balance is insufficient.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Payment required
'500':
description: Internal Server Error — something went wrong on our side.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Internal Error
tags:
- Greenhouse
components:
parameters:
fields:
name: fields
in: query
required: false
description: Comma-separated list of response fields to return, with dot notation for nested fields (e.g. `name,location.city`).
schema:
type: string
is_async:
name: is_async
in: query
required: false
description: 'Run the request as a background job: the API answers `202` with a `job_id` to poll on `GET /v1/jobs/{id}`.'
schema:
type: boolean
default: false
soft_fail:
name: soft_fail
in: query
required: false
description: Return HTTP 200 even when the request fails; the error is in the `error` field of the body.
schema:
type: boolean
default: false
schemas:
ErrorResponse:
type: object
required:
- error
properties:
error:
type: string
description: Human-readable error message.
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: x-api-key
description: Your API key. Include it in the x-api-key header for every request.