> This page is for API, version 2026-01-01 (Stable) (default).
> For other versions, use one of these documentation indexes:
> - 2026-01-01 (Stable) (default): https://developer.deel.com/api/stable/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developer.deel.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer.deel.com/_mcp/server.

# ATS introduction

> An overview of Deel's ATS API for developers building recruitment integrations: manage jobs, candidates, applications, and offers.

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`](/api/hris-endpoints/organization-structure/create-organization-structure), then retrieve their IDs with [`GET /teams`](/api/reference/endpoints/organizations/get-teams-v-2026-01-01).
* **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](/api/ats-guides/manage-jobs)

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

#### [Track candidates](/api/ats-guides/manage-candidates-and-applications)

Create candidate profiles and submit applications to specific jobs.

#### [Advance pipeline stages](/api/ats-guides/manage-candidates-and-applications)

Move applications through interview plan stages and trigger job activities.

#### [From candidate to contract](/api/ats-common-use-cases/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`](/api/hris-endpoints/organization-structure/create-organization-structure) (scope: `organizations:write`). Retrieve existing team IDs with [`GET /teams`](/api/reference/endpoints/organizations/get-teams-v-2026-01-01).
* **Locations**: Retrieve valid `location_id` values using [`GET /ats/locations`](/api/ats-endpoints/ats-locations/retrieve-a-list-of-ats-locations-v-2026-01-01). 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`](/api/ats-endpoints/ats-employment-types/retrieve-a-list-of-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.

> **Note**
>
> Create teams via [`POST /hris/organization_structures`](/api/hris-endpoints/organization-structure/create-organization-structure) by passing a `teams` array in the request body. Once created, they appear in [`GET /teams`](/api/reference/endpoints/organizations/get-teams-v-2026-01-01) 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.

| Capability                            | How to manage                                                                                                                                                                                                                                                                                                              |
| ------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Teams                                 | Create teams in the Deel App under **Organization settings -> Organization -> Groups**, or via [`POST /hris/organization_structures`](/api/hris-endpoints/organization-structure/create-organization-structure). Retrieve existing IDs with [`GET /teams`](/api/reference/endpoints/organizations/get-teams-v-2026-01-01). |
| Candidate and application attachments | Manage attachments in the Deel App under **Organization settings -> Human Resources -> Customization -> Documents**. Retrieve only via [`GET /ats/attachments/{type}/{id}/{slug}`](/api/ats-endpoints/ats-attachments/retrieve-paginated-list-of-ats-attachment-files-v-2026-01-01).                                       |
| Email templates                       | Email templates are managed internally by Deel. Retrieve available templates via [`GET /ats/email-templates`](/api/ats-endpoints/ats-email-templates/retrieve-a-list-of-published-ats-email-templates-v-2026-02-11).                                                                                                       |
| External career page                  | Customize 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`](/api/ats-endpoints/ats-job-postings/retrieve-ats-job-postings-v-2026-04-10).                                                     |
| Webhooks                              | Configure webhooks in the Deel App under **Organization settings -> Developer -> Webhooks**. See [Webhooks](/api/webhooks/introduction) for available events.                                                                                                                                                              |

## Next steps

#### [Getting started](/api/ats-guides/getting-started)

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

#### [Manage jobs](/api/ats-guides/manage-jobs)

Create and list job openings with the correct reference IDs.

#### [Candidates and applications](/api/ats-guides/manage-candidates-and-applications)

Create candidates, submit applications, and advance pipeline stages.

#### [From candidate to contract](/api/ats-common-use-cases/from-candidate-to-contract)

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