Lever API
Lists and retrieves published jobs from an individual public Lever board using the live postings API, including source filters and offset pagination. Employer is the resolved board identifier because Lever's public posting payload does not expose a separate employer display name. Job IDs use the job_ prefix and can be passed unchanged to the detail route.
Endpoint health
Loading verification…
Connect your agent
Connect through MCP so your agent can find this API, read its docs, and call its endpoints.
Add the server from your terminal.
claude mcp add --transport http agent-data https://agent-data.motie.dev/mcpIn Claude Code, run /mcp, select agent-data, then Authenticate. Sign in to your agent-data account in the browser.
Then ask your agent to use the Lever API for your task.
Call it over HTTP
Get an API keySign up free, generate an API key, and set it as AGENT_DATA_API_KEY in your environment. Your first 100 calls each month are free.
curl --request GET --get 'https://api.agent-data.dev/lever-co/v1/jobs' \
--header "Authorization: Bearer $AGENT_DATA_API_KEY" \
--data-urlencode 'board=aircall'Endpoints
Inputs and response fields for every endpoint in this API.
GETJobs/v1/jobs
List published jobs from one Lever board
Input
boardRequiredQuery · stringLever board identifier or canonical https://jobs.lever.co/{board} URL.
Example: aircall
limitOptionalQuery · integer, min: 1, max: 100, default: 100Maximum source postings to return in this page; use skip for later pages.
Example: 100
skipOptionalQuery · integer, min: 0, default: 0Number of source postings to skip before this page.
Example: 0
locationOptionalQuery · string | nullExact Lever location filter.
Example: New York Office
teamOptionalQuery · string | nullExact Lever team filter.
Example: 12001 - Account Executives
Response
dataobject[]data[].idstringdata[].titlestringdata[].employerstringdata[].location?string | nulldata[].department?string | nulldata[].updated_at?string | nulldata[].descriptionstringdata[].compensation?objectdata[].compensation.maximum?integer | number | nulldata[].compensation.minimum?integer | number | nulldata[].compensation.currency?string | nulldata[].compensation.interval?string | nulldata[].compensation.description?string | nulldata[].published_atstring | nulldata[].application_url?string (uri) | nulldata[].employment_type?string | nulldata[].workplace_arrangementstring | nulltransportstringpaginationobjectpagination.skipintegerpagination.limitintegerpagination.next_skipinteger | nullrequest_idstringFields marked ? are optional.
GETJobs by job id/v1/jobs/{job_id}
Retrieve full details for a published Lever job
Input
job_idRequiredPath · stringStable job identifier returned by this API, including its job_ prefix.
Example: job_f2ab14ed-0258-4dc6-bd52-c96eb7d968e5
boardRequiredQuery · stringLever board identifier or canonical https://jobs.lever.co/{board} URL.
Example: aircall
Response
dataobjectdata.idstringdata.titlestringdata.employerstringdata.location?string | nulldata.department?string | nulldata.updated_at?string | nulldata.descriptionstringdata.compensation?objectdata.compensation.maximum?integer | number | nulldata.compensation.minimum?integer | number | nulldata.compensation.currency?string | nulldata.compensation.interval?string | nulldata.compensation.description?string | nulldata.published_atstring | nulldata.application_url?string (uri) | nulldata.employment_type?string | nulldata.workplace_arrangementstring | nulltransportstringrequest_idstringFields marked ? are optional.
Don’t see the endpoint you need?
Ask agent-data to add an endpoint or return more fields. Extensions are free and keep existing endpoints working.
An account is required to submit an extension. Prepare your request, then sign in to build.