Lever Opportunities API
Opportunities are Lever's primary candidate-centric resource. List, create, advance, archive, and update candidate opportunities through the hiring pipeline. Replaces the legacy Candidates resource.
Opportunities are Lever's primary candidate-centric resource. List, create, advance, archive, and update candidate opportunities through the hiring pipeline. Replaces the legacy Candidates resource.
openapi: 3.1.0
info:
title: Lever API
version: v1
description: >-
Minimal OpenAPI 3.1 spec for the Lever talent acquisition platform REST API.
Lever's API is organized around the Opportunity (candidate-centric) data
model and exposes postings, requisitions, applications, interviews,
feedback, offers, files, users, and audit events.
contact:
name: Lever Developer Documentation
url: https://hire.lever.co/developer/documentation
x-generated-from: https://hire.lever.co/developer/documentation
x-generated-by: claude-crawl-2026-05-08
servers:
- url: https://api.lever.co/v1
description: Lever production API
security:
- basicAuth: []
- bearerAuth: []
tags:
- name: Opportunities
- name: Contacts
- name: Postings
- name: Requisitions
- name: Applications
- name: Interviews
- name: Feedback
- name: Forms
- name: Files
- name: Resumes
- name: Notes
- name: Offers
- name: Stages
- name: ArchiveReasons
- name: Sources
- name: Tags
- name: Users
- name: AuditEvents
- name: EEO
paths:
/opportunities:
get:
tags: [Opportunities]
summary: List opportunities
responses:
'200':
$ref: '#/components/responses/Collection'
post:
tags: [Opportunities]
summary: Create opportunity
requestBody:
$ref: '#/components/requestBodies/Generic'
responses:
'201':
$ref: '#/components/responses/Resource'
/opportunities/deleted:
get:
tags: [Opportunities]
summary: List deleted opportunities
responses:
'200':
$ref: '#/components/responses/Collection'
/opportunities/{opportunity}:
parameters:
- $ref: '#/components/parameters/OpportunityId'
get:
tags: [Opportunities]
summary: Retrieve opportunity
responses:
'200':
$ref: '#/components/responses/Resource'
/opportunities/{opportunity}/stage:
parameters:
- $ref: '#/components/parameters/OpportunityId'
put:
tags: [Opportunities]
summary: Update stage
requestBody:
$ref: '#/components/requestBodies/Generic'
responses:
'200':
$ref: '#/components/responses/Resource'
/opportunities/{opportunity}/archived:
parameters:
- $ref: '#/components/parameters/OpportunityId'
put:
tags: [Opportunities]
summary: Update archived state
requestBody:
$ref: '#/components/requestBodies/Generic'
responses:
'200':
$ref: '#/components/responses/Resource'
/opportunities/{opportunity}/links:
parameters:
- $ref: '#/components/parameters/OpportunityId'
put:
tags: [Opportunities]
summary: Update contact links
requestBody:
$ref: '#/components/requestBodies/Generic'
responses:
'200':
$ref: '#/components/responses/Resource'
/opportunities/{opportunity}/tags:
parameters:
- $ref: '#/components/parameters/OpportunityId'
put:
tags: [Opportunities]
summary: Update tags
requestBody:
$ref: '#/components/requestBodies/Generic'
responses:
'200':
$ref: '#/components/responses/Resource'
/opportunities/{opportunity}/sources:
parameters:
- $ref: '#/components/parameters/OpportunityId'
put:
tags: [Opportunities]
summary: Update sources
requestBody:
$ref: '#/components/requestBodies/Generic'
responses:
'200':
$ref: '#/components/responses/Resource'
/opportunities/{opportunity}/applications:
parameters:
- $ref: '#/components/parameters/OpportunityId'
get:
tags: [Applications]
summary: List applications for opportunity
responses:
'200':
$ref: '#/components/responses/Collection'
/opportunities/{opportunity}/applications/{application}:
parameters:
- $ref: '#/components/parameters/OpportunityId'
- name: application
in: path
required: true
schema:
type: string
get:
tags: [Applications]
summary: Retrieve application
responses:
'200':
$ref: '#/components/responses/Resource'
/opportunities/{opportunity}/notes:
parameters:
- $ref: '#/components/parameters/OpportunityId'
get:
tags: [Notes]
summary: List notes
responses:
'200':
$ref: '#/components/responses/Collection'
/opportunities/{opportunity}/feedback:
parameters:
- $ref: '#/components/parameters/OpportunityId'
get:
tags: [Feedback]
summary: List feedback forms
responses:
'200':
$ref: '#/components/responses/Collection'
post:
tags: [Feedback]
summary: Create feedback form
requestBody:
$ref: '#/components/requestBodies/Generic'
responses:
'201':
$ref: '#/components/responses/Resource'
/opportunities/{opportunity}/feedback/{feedback}:
parameters:
- $ref: '#/components/parameters/OpportunityId'
- name: feedback
in: path
required: true
schema:
type: string
get:
tags: [Feedback]
summary: Retrieve feedback form
responses:
'200':
$ref: '#/components/responses/Resource'
put:
tags: [Feedback]
summary: Update feedback form
requestBody:
$ref: '#/components/requestBodies/Generic'
responses:
'200':
$ref: '#/components/responses/Resource'
delete:
tags: [Feedback]
summary: Delete feedback form
responses:
'204':
description: Deleted
/opportunities/{opportunity}/forms:
parameters:
- $ref: '#/components/parameters/OpportunityId'
get:
tags: [Forms]
summary: List forms
responses:
'200':
$ref: '#/components/responses/Collection'
/opportunities/{opportunity}/files:
parameters:
- $ref: '#/components/parameters/OpportunityId'
get:
tags: [Files]
summary: List files
responses:
'200':
$ref: '#/components/responses/Collection'
post:
tags: [Files]
summary: Upload file
requestBody:
$ref: '#/components/requestBodies/Generic'
responses:
'201':
$ref: '#/components/responses/Resource'
/opportunities/{opportunity}/file-actions:
parameters:
- $ref: '#/components/parameters/OpportunityId'
get:
tags: [Files]
summary: List file actions
responses:
'200':
$ref: '#/components/responses/Collection'
/opportunities/{opportunity}/resumes:
parameters:
- $ref: '#/components/parameters/OpportunityId'
get:
tags: [Resumes]
summary: List resumes
responses:
'200':
$ref: '#/components/responses/Collection'
/opportunities/{opportunity}/interviews:
parameters:
- $ref: '#/components/parameters/OpportunityId'
get:
tags: [Interviews]
summary: List interviews
responses:
'200':
$ref: '#/components/responses/Collection'
/opportunities/{opportunity}/panels:
parameters:
- $ref: '#/components/parameters/OpportunityId'
get:
tags: [Interviews]
summary: List interview panels
responses:
'200':
$ref: '#/components/responses/Collection'
/opportunities/{opportunity}/offers:
parameters:
- $ref: '#/components/parameters/OpportunityId'
get:
tags: [Offers]
summary: List offers
responses:
'200':
$ref: '#/components/responses/Collection'
/candidates:
get:
tags: [Opportunities]
summary: List candidates (deprecated)
deprecated: true
responses:
'200':
$ref: '#/components/responses/Collection'
/candidates/{candidate}:
parameters:
- name: candidate
in: path
required: true
schema:
type: string
get:
tags: [Opportunities]
summary: Retrieve candidate (deprecated)
deprecated: true
responses:
'200':
$ref: '#/components/responses/Resource'
/contacts/{contact}:
parameters:
- name: contact
in: path
required: true
schema:
type: string
get:
tags: [Contacts]
summary: Retrieve contact
responses:
'200':
$ref: '#/components/responses/Resource'
put:
tags: [Contacts]
summary: Update contact
requestBody:
$ref: '#/components/requestBodies/Generic'
responses:
'200':
$ref: '#/components/responses/Resource'
/postings:
get:
tags: [Postings]
summary: List postings
responses:
'200':
$ref: '#/components/responses/Collection'
post:
tags: [Postings]
summary: Create posting
requestBody:
$ref: '#/components/requestBodies/Generic'
responses:
'201':
$ref: '#/components/responses/Resource'
/postings/{posting}:
parameters:
- name: posting
in: path
required: true
schema:
type: string
get:
tags: [Postings]
summary: Retrieve posting
responses:
'200':
$ref: '#/components/responses/Resource'
put:
tags: [Postings]
summary: Update posting
requestBody:
$ref: '#/components/requestBodies/Generic'
responses:
'200':
$ref: '#/components/responses/Resource'
/postings/{posting}/applications:
parameters:
- name: posting
in: path
required: true
schema:
type: string
get:
tags: [Postings]
summary: List application questions
responses:
'200':
$ref: '#/components/responses/Collection'
/postings/{posting}/apply:
parameters:
- name: posting
in: path
required: true
schema:
type: string
post:
tags: [Postings]
summary: Apply to posting
requestBody:
$ref: '#/components/requestBodies/Generic'
responses:
'201':
$ref: '#/components/responses/Resource'
/postings/{posting}/users:
parameters:
- name: posting
in: path
required: true
schema:
type: string
get:
tags: [Postings]
summary: List users with access
responses:
'200':
$ref: '#/components/responses/Collection'
/requisitions:
get:
tags: [Requisitions]
summary: List requisitions
responses:
'200':
$ref: '#/components/responses/Collection'
post:
tags: [Requisitions]
summary: Create requisition
requestBody:
$ref: '#/components/requestBodies/Generic'
responses:
'201':
$ref: '#/components/responses/Resource'
/requisitions/{requisition}:
parameters:
- name: requisition
in: path
required: true
schema:
type: string
get:
tags: [Requisitions]
summary: Retrieve requisition
responses:
'200':
$ref: '#/components/responses/Resource'
put:
tags: [Requisitions]
summary: Update requisition
requestBody:
$ref: '#/components/requestBodies/Generic'
responses:
'200':
$ref: '#/components/responses/Resource'
delete:
tags: [Requisitions]
summary: Delete requisition
responses:
'204':
description: Deleted
/stages:
get:
tags: [Stages]
summary: List stages
responses:
'200':
$ref: '#/components/responses/Collection'
/stages/{stage}:
parameters:
- name: stage
in: path
required: true
schema:
type: string
get:
tags: [Stages]
summary: Retrieve stage
responses:
'200':
$ref: '#/components/responses/Resource'
/disposition_stages:
get:
tags: [Stages]
summary: List disposition stages
responses:
'200':
$ref: '#/components/responses/Collection'
/archive_reasons:
get:
tags: [ArchiveReasons]
summary: List archive reasons
responses:
'200':
$ref: '#/components/responses/Collection'
/archive_reasons/{archive_reason}:
parameters:
- name: archive_reason
in: path
required: true
schema:
type: string
get:
tags: [ArchiveReasons]
summary: Retrieve archive reason
responses:
'200':
$ref: '#/components/responses/Resource'
/sources:
get:
tags: [Sources]
summary: List sources
responses:
'200':
$ref: '#/components/responses/Collection'
/tags:
get:
tags: [Tags]
summary: List tags
responses:
'200':
$ref: '#/components/responses/Collection'
/profile_forms:
get:
tags: [Forms]
summary: List profile forms
responses:
'200':
$ref: '#/components/responses/Collection'
/users:
get:
tags: [Users]
summary: List users
responses:
'200':
$ref: '#/components/responses/Collection'
post:
tags: [Users]
summary: Create user
requestBody:
$ref: '#/components/requestBodies/Generic'
responses:
'201':
$ref: '#/components/responses/Resource'
/users/{user}:
parameters:
- name: user
in: path
required: true
schema:
type: string
get:
tags: [Users]
summary: Retrieve user
responses:
'200':
$ref: '#/components/responses/Resource'
/audit_events:
get:
tags: [AuditEvents]
summary: List audit events
responses:
'200':
$ref: '#/components/responses/Collection'
/eeo/responses:
get:
tags: [EEO]
summary: List anonymous EEO responses
responses:
'200':
$ref: '#/components/responses/Collection'
/eeo/responses/pii:
get:
tags: [EEO]
summary: List EEO responses with PII
responses:
'200':
$ref: '#/components/responses/Collection'
components:
securitySchemes:
basicAuth:
type: http
scheme: basic
description: API key supplied as the basic auth username with empty password.
bearerAuth:
type: http
scheme: bearer
description: OAuth 2.0 bearer access token (Lever Partner OAuth apps).
parameters:
OpportunityId:
name: opportunity
in: path
required: true
schema:
type: string
description: Opportunity identifier (UUID).
requestBodies:
Generic:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
responses:
Resource:
description: Single resource response
content:
application/json:
schema:
type: object
properties:
data:
type: object
additionalProperties: true
additionalProperties: true
Collection:
description: Collection response with cursor pagination
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
additionalProperties: true
hasNext:
type: boolean
next:
type: string
additionalProperties: true