Everything an AI agent can do with the Lever API.

A reference guide for building AI agents: every method, how to authenticate, and the permissions each one needs.

Endpoints30
AuthenticationOAuth 2.0 / API key
Last updated23 June 2026
Orientation

How the Lever API works.

The Lever API is how an app or AI agent works with a Lever recruiting account: listing and creating opportunities, submitting applications to postings, scheduling interviews, and adding notes on a candidate. Access is granted through an API key that reaches the whole account, or an OAuth token carrying granular scopes that set which resources a call can read or write. A state change, like a new application or a candidate moving stage, can be pushed to a registered endpoint.

30Endpoints
11Capability groups
16Read
14Write
18Permissions
Authentication
Lever supports two routes. An API key is sent as the username in HTTP Basic auth with a blank password and grants account-wide access. OAuth 2.0 uses the authorization-code flow at auth.lever.co with granular admin scopes, where a write scope includes its matching read access and offline_access enables refresh tokens. OAuth access tokens expire after one hour and refresh tokens rotate on each exchange.
Permissions
OAuth scopes follow a resource:access:admin shape, such as opportunities:read:admin, postings:write:admin, and interviews:write:admin. Selecting a write scope grants the matching read access too. Most integrations need 5 to 8 scopes, with an absolute maximum of 20. An API key carries no scopes and reaches the whole account, so it is not least-privilege.
Versioning
Lever runs a single continuously updated version of its API, reachable under /v1, with no dated version to pin. Notable changes are published as dated entries on the developer updates page, including additive endpoints like the deleted-applications and deleted-postings lists added in April 2026.
Data model
Lever centers on the opportunity, a candidate's pursuit of a job, which replaced the deprecated candidate object. Applications, interviews, offers, feedback, notes, and resumes hang off an opportunity, while postings, stages, archive reasons, and users are account-level resources. A state change, like a new application or a stage move, can be pushed to a webhook.
Connect & authenticate

Connection & authentication methods.

How an app or AI agent connects to Lever determines what it can reach. There is a route for making calls and a route for receiving events, and each is governed by the API key or the OAuth token behind it and the permissions that credential carries.

Ways to connect

REST API

The REST API answers at https://api.lever.co/v1, returns JSON, and pages through lists with an opaque offset token. A call authenticates with an API key over HTTP Basic auth or with an OAuth 2.0 access token. List responses carry hasNext and next fields for paging.

Best forConnecting an app or AI agent to Lever.
Governed byThe API key, or the OAuth token and the scopes it carries.
Docs ↗

Webhooks

Lever POSTs a JSON payload to an HTTPS endpoint when a subscribed event fires, such as a new application or a candidate stage change. The payload carries a triggeredAt timestamp, the event type, a data object, and a signature. The receiver verifies the signature by computing an HMAC-SHA256 over the concatenated token and triggeredAt values using the webhook's signature token.

Best forReceiving Lever events at an app or AI agent.
Governed byThe signature token on the webhook subscription.
Docs ↗
Authentication

API key (Basic auth)

An API key is sent as the username in HTTP Basic auth, with the password left blank. A key grants account-wide access rather than carrying granular scopes, so it is not least-privilege. Keys are created in the account's Integrations settings.

TokenAPI key over HTTP Basic auth
Best forServer-side, account-wide access for a single account.
Docs ↗

OAuth 2.0

OAuth 2.0 uses the authorization-code flow at auth.lever.co, with granular scopes like opportunities:read:admin and postings:write:admin. A write scope includes the matching read access, and offline_access enables refresh tokens. Access tokens expire after one hour, and refresh tokens rotate on each exchange. Most use cases need 5 to 8 scopes, with a maximum of 20.

TokenOAuth 2.0 access token (Bearer)
Best forPartner integrations across multiple Lever accounts with scoped access.
Docs ↗
Capability map

What an AI agent can do in Lever.

The Lever API is split into areas an agent can act on, like opportunities, postings, applications, interviews, offers, and notes. Each area has its own methods, and writes in some areas move a candidate through hiring or change a live job posting.

Opportunities (candidates)

4 endpoints

List, read, and create opportunities, the records that represent a candidate's pursuit of a job, and update an opportunity's stage.

A write here changes real candidate pipeline data.
View endpoints

Applications

3 endpoints

List and read the applications on an opportunity, and submit a new application to a posting.

A write here creates a real candidate application.
View endpoints

Postings (jobs)

4 endpoints

List and read job postings, and create or update a posting.

A write here changes a live job posting.
View endpoints

Interviews

4 endpoints

List, read, create, update, and delete the interviews scheduled on an opportunity.

A write here changes real interview schedule data.
View endpoints

Offers

1 endpoint

List the offers on an opportunity and download a generated offer file.

Reads here expose offer and compensation details.
View endpoints

Feedback

2 endpoints

List, read, create, update, and delete interview feedback forms on an opportunity.

A write here changes real interviewer feedback.
View endpoints

Notes

3 endpoints

List, read, create, and delete the notes recorded on an opportunity.

A write here adds or removes a note on a candidate.
View endpoints

Resumes

2 endpoints

List, read, and download the resumes attached to an opportunity.

Reads here expose candidate resume files and personal data.
View endpoints

Stages & archive reasons

2 endpoints

List and read the pipeline stages and the archive reasons configured in an account.

Reads here expose the account's pipeline configuration.
View endpoints

Users

3 endpoints

List and read users, create a user, and deactivate or reactivate one.

A write here changes who can access the Lever account.
View endpoints

Webhooks

2 endpoints

List webhooks and create a new one to subscribe to account events.

A write here changes which events are pushed out of the account.
View endpoints
Endpoint reference

Every Lever API method.

Filter by method, access, or permission, or search any path. Select a row for version detail, rate limits, the related webhook event, and the source.

MethodEndpointWhat it doesAccessPermissionVersion

Opportunities (candidates)

List, read, and create opportunities, the records that represent a candidate's pursuit of a job, and update an opportunity's stage.4

Read-only. The opportunities endpoints replaced the deprecated candidates endpoints. With an API key, Basic auth grants account-wide access instead of a scope.

Acts onopportunity
Permission (capability)opportunities:read:admin
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onopportunity
Permission (capability)opportunities:read:admin
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A write scope includes the matching read access. A perform_as query parameter records which user the action is taken on behalf of.

Acts onopportunity
Permission (capability)opportunities:write:admin
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Advancing the stage is the action a candidateStageChange webhook reports.

Acts onopportunity
Permission (capability)opportunities:write:admin
VersionAvailable since the API’s base version
Webhook eventcandidateStageChange
Rate limitStandard limits apply

Applications

List and read the applications on an opportunity, and submit a new application to a posting.3

Read-only.

Acts onapplication
Permission (capability)applications:read:admin
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onapplication
Permission (capability)applications:read:admin
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Application POST requests are limited to 2 per second, tighter than the 10 per second account limit. Creating an application fires the applicationCreated webhook.

Acts onapplication
Permission (capability)applications:write:admin
VersionAvailable since the API’s base version
Webhook eventapplicationCreated
Rate limit2 requests per second

Postings (jobs)

List and read job postings, and create or update a posting.4

Read-only.

Acts onposting
Permission (capability)postings:read:admin
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onposting
Permission (capability)postings:read:admin
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A write scope includes the matching read access.

Acts onposting
Permission (capability)postings:write:admin
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A write here changes a live job posting.

Acts onposting
Permission (capability)postings:write:admin
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Interviews

List, read, create, update, and delete the interviews scheduled on an opportunity.4

Read-only.

Acts oninterview
Permission (capability)interviews:read:admin
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Creating an interview fires the interviewCreated webhook.

Acts oninterview
Permission (capability)interviews:write:admin
VersionAvailable since the API’s base version
Webhook eventinterviewCreated
Rate limitStandard limits apply

Updating an interview fires the interviewUpdated webhook.

Acts oninterview
Permission (capability)interviews:write:admin
VersionAvailable since the API’s base version
Webhook eventinterviewUpdated
Rate limitStandard limits apply

Deleting an interview fires the interviewDeleted webhook.

Acts oninterview
Permission (capability)interviews:write:admin
VersionAvailable since the API’s base version
Webhook eventinterviewDeleted
Rate limitStandard limits apply

Offers

List the offers on an opportunity and download a generated offer file.1

Read-only; offers contain compensation details.

Acts onoffer
Permission (capability)offers:read:admin
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Feedback

List, read, create, update, and delete interview feedback forms on an opportunity.2

Read-only. Assignment and share feedback types are included alongside interview feedback.

Acts onfeedback
Permission (capability)feedback:read:admin
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A write scope includes the matching read access.

Acts onfeedback
Permission (capability)feedback:write:admin
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Notes

List, read, create, and delete the notes recorded on an opportunity.3

Read-only. Notes are accessed through the opportunities scope.

Acts onnote
Permission (capability)opportunities:read:admin
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Notes are governed by the opportunities write scope.

Acts onnote
Permission (capability)opportunities:write:admin
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Irreversible removal of a note.

Acts onnote
Permission (capability)opportunities:write:admin
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Resumes

List, read, and download the resumes attached to an opportunity.2

Read-only; resumes contain candidate personal data.

Acts onresume
Permission (capability)resumes:read:admin
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Returns the raw resume file.

Acts onresume
Permission (capability)resumes:read:admin
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Stages & archive reasons

List and read the pipeline stages and the archive reasons configured in an account.2

Read-only.

Acts onstage
Permission (capability)stages:read:admin
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onarchive_reason
Permission (capability)archive_reasons:read:admin
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Users

List and read users, create a user, and deactivate or reactivate one.3

Read-only.

Acts onuser
Permission (capability)users:read:admin
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A write here changes who can access the Lever account.

Acts onuser
Permission (capability)users:write:admin
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Reversible with the reactivate endpoint.

Acts onuser
Permission (capability)users:write:admin
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Webhooks

List webhooks and create a new one to subscribe to account events.2

Read-only.

Acts onwebhook
Permission (capability)webhooks:read:admin
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A write here changes which events are pushed out of the account.

Acts onwebhook
Permission (capability)webhooks:write:admin
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply
No endpoints match those filters.
Webhooks

Webhook events.

Lever can notify an app when something happens in an account, like a new application arriving or a candidate moving to a new stage. It sends a JSON payload describing what changed, so an integration learns about activity without polling.

EventWhat it signalsTriggered by
applicationCreatedFires when a new application is created on an opportunity, for example through a posting's apply form./postings/:posting/apply
candidateStageChangeFires when a candidate is moved to a different pipeline stage./opportunities/:opportunity/stage
candidateArchiveChangeFires when a candidate is archived or unarchived, optionally filtered by archive reason.In-app only
candidateHiredFires when a candidate is marked hired.In-app only
candidateDeletedFires when a candidate is deleted from the account.In-app only
interviewCreatedFires when an interview is scheduled on an opportunity./opportunities/:opportunity/interviews
interviewUpdatedFires when a scheduled interview is updated./opportunities/:opportunity/interviews/:interview
interviewDeletedFires when a scheduled interview is deleted./opportunities/:opportunity/interviews/:interview
No events match that search.
Rate limits & pagination

Rate limits, pagination & request size.

Lever limits how fast an app can call, by a request rate measured per second per API key, with a tighter limit on submitting applications.

Request rate

Lever meters requests per API key at a steady 10 requests per second, with bursts up to 20 per second when capacity allows. Submitting an application is held tighter, to 2 requests per second. Going over returns HTTP 429, where the response should be met with exponential backoff. Lever notes the limit can change without warning.

Pagination

List endpoints are paginated with limit and offset. The limit sets the page size, defaulting to 100 and ranging from 1 to 100, and offset takes an opaque token from the previous response rather than a numeric index. The response includes a hasNext boolean and a next token, and pages are followed until hasNext is false.

Request size

A list endpoint returns at most 100 records per page, the maximum value of limit. Uploaded files support formats including pdf, doc, docx, txt, jpg, and png; image files are stored but not parsed.

Errors

Status codes & error handling.

The status codes an agent should handle, and what to do about each.

StatusCodeMeaningWhat to do
400Bad RequestA parameter is missing or malformed. The response body carries a code and a human-readable message.Read the message, correct the parameters, and resend. The request is not retryable as-is.
401UnauthorizedAuthentication is missing or invalid, for example a wrong API key or an expired OAuth access token.Confirm the API key, or refresh the OAuth access token using the refresh token, then resend.
403ForbiddenThe credential is valid but lacks permission for the request, for example an OAuth token without the required scope.Grant the missing scope on the OAuth token, then resend.
404ResourceNotFoundThe requested resource does not exist or is not visible to the credential.Verify the resource id and that the credential has access to it.
429Too Many RequestsThe request rate exceeded the per-key limit of 10 requests per second, or the 2 per second limit on submitting applications.Back off and retry with exponential backoff, and smooth the request rate.
500Server ErrorAn error on Lever's side.Retry with backoff, and contact Lever support if it persists.
503Service UnavailableThe API is temporarily unavailable, for example during maintenance.Wait and retry with backoff.
Versioning & freshness

Version history.

Lever runs a single continuously updated version of its API, with no dated version to pin, and ships changes through dated entries on its developer updates page.

Version history

What changed, and when

Latest versionCurrent
CurrentCurrent version
Single continuously updated API (v1)

Lever runs one continuously updated version of its API under /v1, with no dated version to pin. Notable changes ship as dated entries on the developer updates page, and recent additions have been additive, including endpoints for retrieving deleted records and new metadata fields on applications.

What changed
  • 30 April 2026: added GET /applications/deleted to retrieve soft-deleted applications within a 30-day window, with keyset pagination.
  • 27 April 2026: added GET /postings/deleted to retrieve deleted job postings, with keyset pagination.
  • 20 April 2026: exposed ipAddress, referer, userAgent, acceptLanguage, and timezone fields on application objects for fraud detection.
  • 13 April 2026: added an endpoint for file-related activity on opportunities, with time-range filters.
Earlier
Earlier notable changes

Earlier dated updates from the developer updates page.

What changed
  • 31 March 2025: assignment and share feedback types now returned alongside interview feedback.
  • 24 June 2024: per-interviewer feedback template support added, and the prompt=consent OAuth parameter requirement removed.
  • 22 January 2024: an origin field added to applications, distinguishing internal from external applications.
  • 3 October 2022: deprecated the include_deleted parameter in favor of dedicated deleted-record endpoints.

There is no version to pin; track the developer updates page for changes.

Lever API updates ↗
Questions

Lever API, answered.

Should I use an API key or OAuth 2.0?+
An API key suits a server-side integration against a single Lever account: it is sent as the username in HTTP Basic auth with a blank password, and it grants account-wide access with no scopes. OAuth 2.0 suits a partner integration across many accounts, because each account grants consent and the access token carries only the scopes that were requested. OAuth is the least-privilege choice, since an API key reaches everything.
What happened to the candidates endpoints?+
The candidate object was replaced by the opportunity, which represents a candidate's pursuit of a specific job. The legacy candidates routes are kept for backwards compatibility, but new integrations should use the opportunities endpoints, and the candidates:read:admin scope is deprecated.
What are the rate limits?+
Lever allows a steady 10 requests per second per API key, with short bursts up to 20 per second when capacity allows. Submitting an application through the apply endpoint is limited more tightly, to 2 per second. Exceeding a limit returns HTTP 429, and a client should back off exponentially. Lever notes the limits can change without warning.
How do I verify a webhook came from Lever?+
Each webhook payload includes a token, a triggeredAt timestamp, and a signature. The receiver concatenates the token and triggeredAt values, computes an HMAC-SHA256 over that string using the webhook's signature token as the key, and compares the hex digest to the signature field. The signature is in the request body, not an HTTP header. A non-2xx response causes Lever to retry up to five times with increasing delays.
How does OAuth scope selection work?+
Scopes follow a resource:access:admin pattern, such as opportunities:read:admin or postings:write:admin. Choosing a write scope automatically includes the matching read access, so the read scope is redundant alongside it. Most use cases are covered by 5 to 8 scopes, and there is an absolute maximum of 20. The offline_access scope is what enables refresh tokens.
How does pagination work?+
List endpoints take a limit and an offset. The limit sets the page size, defaulting to 100 and capped at 100, and offset is an opaque token returned in the previous response rather than a numeric position. Each response carries a hasNext boolean and a next token, and a client follows next until hasNext is false.
Related

More hr API guides for agents

What is Bollard AI?

Control what every AI agent can do in Lever.

Bollard AI sits between a team's AI agents and Lever. Grant each agent exactly the access it needs, read or write, resource by resource, and every call is checked and logged.

  • Set read, write, or full access per agent, never a shared Lever API key.
  • Denied by default, so an agent reaches only what has been explicitly allowed.
  • Every call recorded in plain English: who, what, where, and the decision.
Lever
Recruiting Agent
Read candidates ResourceOffReadFull use
Add notes ActionOffReadFull use
Advance hiring stage ActionOffReadFull use
Per-agent access, set in Bollard AI, not in Lever