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
  • Prerequisites
  • About team IDs
  • Step 1: Verify authentication
  • Step 2: Retrieve locations
  • Step 3: Retrieve employment types
  • Step 4: Retrieve your hiring member ID
  • Step 5: Retrieve departments (optional)
  • Pagination
  • Next steps
ATS Guides

Getting started with the ATS API

Was this page helpful?
Previous

Manage jobs

Next
Built with

This guide outlines the setup steps required before you can create jobs or applications via the ATS API.

Missing reference data causes most integration failures. Teams, locations, and employment types must exist in your organization and you need their IDs before making POST requests.

Prerequisites

  • A Deel account with ATS enabled
  • An API token with ats:read and ats:write scopes. See Authentication for setup instructions.
  • The organizations:write scope if you need to create teams (see below).

About team IDs

Jobs require at least one team_id. Define your teams in the Deel App under Organization settings -> Organization -> Groups, or via POST /hris/organization_structures by including a teams array in the request body:

Request
$curl --request POST 'https://api.letsdeel.com/rest/v2/hris/organization_structures' \
> --header 'Authorization: Bearer YOUR-TOKEN-HERE' \
> --header 'Content-Type: application/json' \
> --data '{
> "data": {
> "name": "Engineering",
> "teams": [
> { "name": "Platform" },
> { "name": "Infrastructure" }
> ]
> }
> }'

Once created, those teams appear immediately in GET /teams. Retrieve their UUIDs to use in ATS calls:

Request
$curl --request GET 'https://api.letsdeel.com/rest/v2/teams' \
> --header 'Authorization: Bearer YOUR-TOKEN-HERE'

If teams already exist in your organization, skip the creation step and go straight to GET /teams.

Step 1: Verify authentication

Confirm your token has the correct scopes by calling a lightweight read endpoint.

Request
$curl --request GET 'https://api.letsdeel.com/rest/v2/ats/employment-types' \
> --header 'Authorization: Bearer YOUR-TOKEN-HERE' \
> --header 'Content-Type: application/json'

A 200 response confirms authentication is working. A 401 means your token is missing or invalid. A 403 means your token lacks the ats:read scope.

Step 2: Retrieve locations

Jobs require at least one location. Fetch all available locations and store the IDs you will use.

$curl --request GET 'https://api.letsdeel.com/rest/v2/ats/locations' \
> --header 'Authorization: Bearer YOUR-TOKEN-HERE'

Store the id values for locations you will assign to jobs.

Step 3: Retrieve employment types

Both job creation and application creation require an employment type.

$curl --request GET 'https://api.letsdeel.com/rest/v2/ats/employment-types' \
> --header 'Authorization: Bearer YOUR-TOKEN-HERE'

Step 4: Retrieve your hiring member ID

Some operations, such as advancing an application through an interview plan stage, require a creator_id. This is your HRIS organization user ID.

$curl --request GET 'https://api.letsdeel.com/rest/v2/ats/hiring-members' \
> --header 'Authorization: Bearer YOUR-TOKEN-HERE'

Store the hris_organization_user_id. You will use it as creator_id when associating applications with interview plan stages.

Step 5: Retrieve departments (optional)

Departments are optional on jobs but useful for filtering and reporting.

Request
$curl --request GET 'https://api.letsdeel.com/rest/v2/ats/departments' \
> --header 'Authorization: Bearer YOUR-TOKEN-HERE'

Pagination

All list endpoints use cursor-based pagination. Use the next_cursor value from a response as the cursor query parameter in the next request.

Request
$curl --request GET 'https://api.letsdeel.com/rest/v2/ats/jobs?cursor=NEXT_CURSOR_VALUE&limit=50' \
> --header 'Authorization: Bearer YOUR-TOKEN-HERE'

Check has_more in each response to determine whether additional pages exist.

Fetch and cache reference data (locations, employment types, departments) at integration startup rather than on every request. These values change infrequently.

Next steps

Manage jobs

Create job openings using the reference IDs you just retrieved.

Candidates and applications

Create candidates and submit applications.

Authentication

Learn how to generate and manage API tokens.

ATS overview

Review the full ATS data model and known limitations.