For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
SupportDeel Home
OverviewPlatformEmployer of RecordContractorsGlobal PayrollHREmbeddedDeel ITAPI ReferenceChangelog
OverviewPlatformEmployer of RecordContractorsGlobal PayrollHREmbeddedDeel ITAPI ReferenceChangelog
  • Resources
    • Blog
    • Community
    • API spec
  • HRIS Guides
    • Introduction
  • HRIS Common Use Cases
    • Sync Deel users to identity providers
  • SCIM API
    • Overview
  • HRIS Endpoints
  • ATS Guides
    • Introduction
    • Getting started
    • Manage jobs
    • Manage candidates and applications
    • Webhooks
  • ATS Common Use Cases
    • From candidate to contract
  • ATS Endpoints
LogoLogo
SupportDeel Home
On this page
  • Key concepts
  • Key capabilities
  • What you will need to set up in the Deel App
  • What to manage in the Deel App
  • Next steps
ATS Guides

ATS introduction

Was this page helpful?
Previous

Getting started with the ATS API

Next
Built with

Deel’s ATS API gives you programmatic access to Deel’s built-in Applicant Tracking System. Use it to create and manage job openings, move candidates through a configurable interview pipeline, process applications, and retrieve offer details from your own product or automation workflow.

Deel built this API for developers building recruitment integrations, ATS connectors, or HR automation that synchronizes with Deel’s hiring workflow.

Key concepts

Understanding the data model before making API calls prevents most integration issues.

  • Organization: Your Deel account. All jobs, candidates, and applications belong to your organization. Fully configure your Deel organization in the application before making any API calls.
  • Job: An open, draft, or closed position. Each job requires at least one team and one employment type. Create teams via POST /hris/organization_structures, then retrieve their IDs with GET /teams.
  • Job posting: A published representation of a job on a job board (INTERNAL_CAREER_PAGE, EXTERNAL_CAREER_PAGE, or LINKEDIN). Job postings are read-only via the API.
  • Candidate: A person applying to a role. A single candidate can have multiple applications across different jobs.
  • Application: The record linking a candidate to a specific job and employment type. Applications progress through interview plan stages.
  • Interview plan stage: A step in the hiring pipeline. Stages belong to one of three category types: LEAD (initial screening), ACTIVE (in progress), or COMPLETED (final decision).
  • Offer: Deel generates an offer at a completed stage. Each offer has a worker_type (EOR_EMPLOYEE, CONTRACTOR, DIRECT_EMPLOYEE, etc.) and moves through a lifecycle: CREATED, SENT, then ACCEPTED or REJECTED.

Key capabilities

Manage jobs

Create and list job openings with teams, locations, and employment types.

Track candidates

Create candidate profiles and submit applications to specific jobs.

Advance pipeline stages

Move applications through interview plan stages and trigger job activities.

From candidate to contract

Connect an accepted offer to a Deel EOR or IC contract.

What you will need to set up in the Deel App

Configure the following in the Deel application before making any ATS API call.

  • Organization: Your Deel organization, teams, and departments must exist before you call any endpoint.
  • Teams: Every job requires at least one team_id. Create teams by posting an org structure via POST /hris/organization_structures (scope: organizations:write). Retrieve existing team IDs with GET /teams.
  • Locations: Retrieve valid location_id values using GET /ats/locations. You cannot create locations via the API.
  • Employment types: Before creating a job or an application, ensure that you have created the required employment type. Retrieve valid employment_type_id values using GET /ats/employment-types.
  • Interview plans: Configure interview plans and their stages in the Deel application. Reference them by ID when creating jobs and advancing application stages.

Create teams via POST /hris/organization_structures by passing a teams array in the request body. Once created, they appear in GET /teams and their UUIDs are ready to use in ATS calls.

What to manage in the Deel App

Some operations must be performed in the Deel application and are available as read-only via the API.

CapabilityHow to manage
TeamsCreate teams in the Deel App under Organization settings -> Organization -> Groups, or via POST /hris/organization_structures. Retrieve existing IDs with GET /teams.
Candidate and application attachmentsManage attachments in the Deel App under Organization settings -> Human Resources -> Customization -> Documents. Retrieve only via GET /ats/attachments/{type}/{id}/{slug}.
Email templatesEmail templates are managed internally by Deel. Retrieve available templates via GET /ats/email-templates.
External career pageCustomize your hosted career page at jobs.deel.com/job-boards/* under People -> Hiring -> Settings -> External career page. Retrieve job posting data via GET /ats/job-postings.
WebhooksConfigure webhooks in the Deel App under Organization settings -> Developer -> Webhooks. See Webhooks for available events.

Next steps

Getting started

Retrieve lookup data, verify authentication, and make your first API call.

Manage jobs

Create and list job openings with the correct reference IDs.

Candidates and applications

Create candidates, submit applications, and advance pipeline stages.

From candidate to contract

Connect an accepted offer to a Deel EOR or IC contract.