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.

OpenAPI Specification

lever-openapi.yml Raw ↑
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