ATS introduction

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

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