> 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://docs.deel.wtf/api/stable/llms.txt

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

# Retrieve a list of ATS jobs

GET https://api.letsdeel.com/rest/ats/jobs

Lists the jobs of the organization together with every stage of their interview plans. Use it to find a job, or to look up a stage id before filtering applications or interviews by stage, since stage names are customer-defined.

 **Token scopes**: `ats:read`, `worker:read`

Reference: https://docs.deel.wtf/api/ats-endpoints/ats-jobs/retrieve-a-list-of-ats-jobs

## Authentication

- `Authorization` header (bearer token, required) — ## Authentication The Deel API uses bearer tokens to authenticate requests. All API calls must be made over HTTPS — calls over plain HTTP or without authentication will fail. ```curl curl -X GET 'https://api.deel.training/rest/v2/contracts' \ -H 'Authorization: Bearer YOUR-TOKEN-HERE' ``` [Learn more about authentication](/api/authentication)
- `Authorization` header (bearer token, required) — Standard OAuth2 security scheme based on https://swagger.io/docs/specification/authentication/

## Servers

- `https://api.letsdeel.com/rest` (Production, default)
- `https://api-staging.letsdeel.com/rest` (Demo)

## Request

### Query parameters

- `cursor` (string, optional) — The cursor for pagination
- `limit` (integer, optional, default: 20) — Maximum number of records returned in one response
- `search` (string, optional) — Text to search for in job records (optional)
- `job_ids` (list of string, optional) — Array of job UUIDs (optional). Returns only these jobs, so a caller holding job ids from another endpoint can resolve them in one request instead of paging the whole list. Omitting it leaves the result set unchanged.
- `interview_plan_id` (string, optional) — Interview plan UUID (optional)
- `location_ids` (list of string, optional) — Array of location UUIDs (optional)
- `team_ids` (list of string, optional) — Array of team UUIDs (optional)
- `employment_type_ids` (list of string, optional) — Array of employment type UUIDs (optional)
- `department_ids` (list of string, optional) — Array of department UUIDs (optional)
- `updated_after` (string, optional) — Filter jobs updated after this timestamp (ISO 8601 format)
- `status` (list of enum, optional) — Array of job status values (optional)
  - Allowed values: `OPEN`, `PAUSED`, `CLOSED`, `DRAFT`, `WAITING_FOR_APPROVAL`, `APPROVED`, `NOT_APPROVED`, `ARCHIVED`
- `opened_after` (string, optional) — Return jobs first opened at or after this timestamp (ISO 8601). Jobs that were never opened are excluded.
- `opened_before` (string, optional) — Return jobs first opened at or before this timestamp (ISO 8601). Jobs that were never opened are excluded.
- `closed_after` (string, optional) — Return jobs closed at or after this timestamp (ISO 8601). Jobs that were never closed are excluded.
- `closed_before` (string, optional) — Return jobs closed at or before this timestamp (ISO 8601). Jobs that were never closed are excluded.
- `hiring_member_hou_ids` (list of string, optional) — Return only jobs on whose hiring team at least one of these HRIS organization users sits. Only narrows the jobs the caller can already see. Callers without ATS admin rights only ever see themselves in hiring_members, even when filtering by someone else.
- `work_arrangements` (list of enum, optional) — Array of work arrangement values to filter by (optional)
  - Allowed values: `ON_SITE`, `HYBRID`, `REMOTE`

## Response

### 200

Successful operation.

- `data` (list of AtsJobsGetResponsesContentApplicationJsonSchemaDataItems, required) — Page of jobs.
- `has_more` (boolean, required) — Whether more pages are available.
- `next_cursor` (string, required, nullable) — Cursor to fetch the next page; null when there are no more pages.
- `total_count` (integer, required) — Total number of jobs matching filters.

## Errors

### 400 Bad Request Error

Operation failed.

- `errors` (list of AtsJobsGetResponsesContentApplicationJsonSchemaErrorsItems, required) — List of error objects

### 401 Unauthorized Error

Operation failed.

- `request` (ApiErrorRequest, optional)
- `errors` (list of ApiError, optional)

### 403 Forbidden Error

Forbidden. ATS is not enabled for this organization or insufficient permissions.

- `errors` (list of AtsJobsGetResponsesContentApplicationJsonSchemaErrorsItems, required) — List of error objects

### 404 Not Found Error

Operation failed.

- `request` (ApiErrorRequest, optional)
- `errors` (list of ApiError, optional)

### 500 Internal Server Error

Operation failed.

- `errors` (list of AtsJobsGetResponsesContentApplicationJsonSchemaErrorsItems, required) — List of error objects

## Types

### AtsJobsGetResponsesContentApplicationJsonSchemaDataItems

- `id` (string, optional) — Unique identifier for the job
- `title` (string, optional) — Job title
- `status` (enum, optional) — Job status. PAUSED jobs are open but temporarily not accepting candidates; see active_pause_period.
  - Allowed values: `OPEN`, `PAUSED`, `CLOSED`, `DRAFT`, `WAITING_FOR_APPROVAL`, `APPROVED`, `NOT_APPROVED`, `ARCHIVED`
- `closed_at` (string, optional, nullable) — When the job was closed. Null when it is not closed.
- `job_teams` (list of AtsJobsGetResponsesContentApplicationJsonSchemaDataItemsJobTeamsItems, optional, nullable) — Teams associated with the job
- `opened_at` (string, optional, nullable) — When the job was first opened. Not reset when the job is reopened or resumed. Null when it was never opened.
- `created_at` (string, optional) — Timestamp when the job was created
- `updated_at` (string, optional) — Timestamp when the job was last updated
- `job_locations` (list of AtsJobsGetResponsesContentApplicationJsonSchemaDataItemsJobLocationsItems, optional) — Locations associated with the job
- `hiring_members` (list of AtsJobsGetResponsesContentApplicationJsonSchemaDataItemsHiringMembersItems, optional, nullable) — Hiring members associated with the job
- `is_confidential` (boolean, optional) — Indicates if the job is confidential
- `job_departments` (list of AtsJobsGetResponsesContentApplicationJsonSchemaDataItemsJobDepartmentsItems, optional, nullable) — Departments associated with the job
- `approval_rule_id` (string, optional, nullable) — Unique identifier for the approval rule
- `applications_count` (integer, optional, nullable) — Number of applications for the job
- `active_pause_period` (AtsJobsGetResponsesContentApplicationJsonSchemaDataItemsActivePausePeriod, optional, nullable) — The pause currently in effect. Set only when status is PAUSED; null otherwise.
- `approval_request_id` (string, optional, nullable) — Unique identifier for the approval request
- `current_compensation` (AtsJobsGetResponsesContentApplicationJsonSchemaDataItemsCurrentCompensation, optional, nullable)
- `job_employment_types` (list of AtsJobsGetResponsesContentApplicationJsonSchemaDataItemsJobEmploymentTypesItems, optional) — Employment types associated with the job
- `richtext_description` (string, optional, nullable) — Rich text description of the job
- `interview_plan_stages` (list of AtsJobsGetResponsesContentApplicationJsonSchemaDataItemsInterviewPlanStagesItems, optional, nullable) — Interview plan stages
- `work_arrangement_enum` (enum, optional, nullable) — Work arrangement of the job. Null when unspecified.
  - Allowed values: `ON_SITE`, `HYBRID`, `REMOTE`
- `approval_request_stringified` (string, optional, nullable) — Stringified approval request
- `created_by_hris_organization_user_id` (string, optional, nullable) — Unique identifier of the user who created the job
- `hiring_member_job_permissions_by_type_slug` (AtsJobsGetResponsesContentApplicationJsonSchemaDataItemsHiringMemberJobPermissionsByTypeSlug, optional, nullable)

### AtsJobsGetResponsesContentApplicationJsonSchemaErrorsItems

- `code` (string, required) — Machine-readable error code
- `message` (string, required) — Human-readable error message
- `field` (string, optional) — Request field related to the error, if applicable

### ApiErrorRequest

- `method` (string, optional) — The HTTP method of the failed request
- `url` (string, optional) — The relative URL of the failed request
- `status` (double, optional) — The status code of the response
- `api_req_id` (string, optional) — The request ID of the failed request
- `docs` (string, optional) — A link to the official documentation for the requested endpoint resource
- `source` (string, optional) — The source handler which produced the returned error
- `code` (double, optional) — The code of the source handler which produced the returned error

### ApiError

- `message` (string, optional) — A description of the returned error
- `path` (string, optional) — The JSON path where input validation failed

### AtsJobsGetResponsesContentApplicationJsonSchemaDataItemsJobTeamsItems

- `id` (string, required) — Unique identifier for the job team
- `team` (AtsJobsGetResponsesContentApplicationJsonSchemaDataItemsJobTeamsItemsTeam, required)

### AtsJobsGetResponsesContentApplicationJsonSchemaDataItemsJobLocationsItems

- `id` (string, required) — Unique identifier for the job location
- `location` (AtsJobsGetResponsesContentApplicationJsonSchemaDataItemsJobLocationsItemsLocation, required)

### AtsJobsGetResponsesContentApplicationJsonSchemaDataItemsHiringMembersItems

- `id` (string, optional) — Unique identifier for the hiring member
- `hris_organization_user_id` (string, optional) — Unique identifier for the HRIS organization user

### AtsJobsGetResponsesContentApplicationJsonSchemaDataItemsJobDepartmentsItems

- `id` (string, required) — Unique identifier for the job department
- `department` (AtsJobsGetResponsesContentApplicationJsonSchemaDataItemsJobDepartmentsItemsDepartment, required, nullable)

### AtsJobsGetResponsesContentApplicationJsonSchemaDataItemsActivePausePeriod

The pause currently in effect. Set only when status is PAUSED; null otherwise.

- `id` (string, required) — Unique identifier of the pause period
- `paused_at` (string, required) — When the job was paused

### AtsJobsGetResponsesContentApplicationJsonSchemaDataItemsCurrentCompensation

- `id` (string, optional) — Unique identifier for the compensation
- `job_id` (string, optional) — Job ID associated with the compensation
- `max_amount` (double, optional, nullable) — Maximum compensation amount
- `min_amount` (double, optional, nullable) — Minimum compensation amount
- `period_slug` (enum, optional) — Compensation period
  - Allowed values: `ANNUALLY`, `MONTHLY`, `SEMIMONTHLY`, `BIWEEKLY`, `WEEKLY`, `DAILY`, `HOURLY`
- `currency_iso_code` (string, optional) — ISO code of the currency

### AtsJobsGetResponsesContentApplicationJsonSchemaDataItemsJobEmploymentTypesItems

- `id` (string, required) — Unique identifier for the job employment type
- `employment_type` (AtsJobsGetResponsesContentApplicationJsonSchemaDataItemsJobEmploymentTypesItemsEmploymentType, required)

### AtsJobsGetResponsesContentApplicationJsonSchemaDataItemsInterviewPlanStagesItems

- `id` (string, optional) — Unique identifier for the interview plan stage
- `name` (string, optional) — Interview plan stage name
- `position_number` (integer, optional, nullable) — Position number of the stage in the interview plan
- `default_type_slug` (string, optional, nullable) — Default type slug of the interview plan stage
- `interview_plan_id` (string, optional) — Interview plan ID associated with this stage
- `category_type_slug` (enum, optional) — Category type of the interview plan stage
  - Allowed values: `LEAD`, `ACTIVE`, `COMPLETED`

### AtsJobsGetResponsesContentApplicationJsonSchemaDataItemsHiringMemberJobPermissionsByTypeSlug

- `hiring_team` (string, optional) — Hiring team permissions
- `job_posting` (string, optional) — Job posting permissions
- `compensation` (string, optional) — Compensation permissions
- `interview_plan` (string, optional) — Interview plan permissions
- `application_form_submission` (string, optional) — Application form submission permissions
- `application_form_submission_sensitive_fields` (string, optional) — Application form submission sensitive fields permissions

### AtsJobsGetResponsesContentApplicationJsonSchemaDataItemsJobTeamsItemsTeam

- `id` (string, required) — Unique identifier for the team
- `name` (string, required) — Team name

### AtsJobsGetResponsesContentApplicationJsonSchemaDataItemsJobLocationsItemsLocation

- `id` (string, required) — Unique identifier for the location
- `name` (string, required) — Location name

### AtsJobsGetResponsesContentApplicationJsonSchemaDataItemsJobDepartmentsItemsDepartment

- `id` (string, required) — Unique identifier for the department
- `name` (string, required) — Department name

### AtsJobsGetResponsesContentApplicationJsonSchemaDataItemsJobEmploymentTypesItemsEmploymentType

- `id` (string, required) — Unique identifier for the employment type
- `name` (string, required) — Employment type name

## Examples

**Response**

```json
{
  "data": [
    {
      "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
      "title": "Software Engineer",
      "status": "OPEN",
      "closed_at": "2026-04-01T17:30:00Z",
      "job_teams": [
        {
          "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
          "team": {
            "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
            "name": "Engineering Team"
          }
        }
      ],
      "opened_at": "2026-01-15T09:00:00Z",
      "created_at": "2023-10-01T12:00:00Z",
      "updated_at": "2023-10-02T12:00:00Z",
      "job_locations": [
        {
          "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
          "location": {
            "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
            "name": "New York"
          }
        }
      ],
      "hiring_members": [
        {
          "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
          "hris_organization_user_id": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
        }
      ],
      "is_confidential": false,
      "job_departments": [
        {
          "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
          "department": {
            "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
            "name": "Sales"
          }
        }
      ],
      "approval_rule_id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
      "applications_count": 10,
      "active_pause_period": {
        "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
        "paused_at": "2026-03-01T10:00:00Z"
      },
      "approval_request_id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
      "current_compensation": {
        "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
        "job_id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
        "max_amount": 120000,
        "min_amount": 80000,
        "period_slug": "ANNUALLY",
        "currency_iso_code": "USD"
      },
      "job_employment_types": [
        {
          "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
          "employment_type": {
            "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
            "name": "Full-time"
          }
        }
      ],
      "richtext_description": "<div>Job description in rich text format</div>",
      "interview_plan_stages": [
        {
          "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
          "name": "Phone Screen",
          "position_number": 1,
          "default_type_slug": "phone_screen",
          "interview_plan_id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
          "category_type_slug": "ACTIVE"
        }
      ],
      "work_arrangement_enum": "HYBRID",
      "approval_request_stringified": "Approval request details in string format",
      "created_by_hris_organization_user_id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
      "hiring_member_job_permissions_by_type_slug": {
        "hiring_team": "read",
        "job_posting": "write",
        "compensation": "read",
        "interview_plan": "write",
        "application_form_submission": "read",
        "application_form_submission_sensitive_fields": "none"
      }
    }
  ],
  "has_more": false,
  "next_cursor": "string",
  "total_count": 42
}
```

**SDK Code**

```python
import requests

url = "https://api.letsdeel.com/rest/ats/jobs"

querystring = {"closed_after":"2026-01-01T00:00:00.000Z","closed_before":"2026-03-31T23:59:59.000Z","cursor":"cursorValue","department_ids":"[\"a1b2c3d4-e5f6-7890-1234-567890abcdef\"]","employment_type_ids":"[\"a1b2c3d4-e5f6-7890-1234-567890abcdef\"]","hiring_member_hou_ids":"[\"a1b2c3d4-e5f6-7890-1234-567890abcdef\"]","interview_plan_id":"a1b2c3d4-e5f6-7890-1234-567890abcdef","job_ids":"[\"a1b2c3d4-e5f6-7890-1234-567890abcdef\"]","limit":"50","location_ids":"[\"a1b2c3d4-e5f6-7890-1234-567890abcdef\"]","opened_after":"2026-01-01T00:00:00.000Z","opened_before":"2026-03-31T23:59:59.000Z","search":"engineer","status":"[\"OPEN\",\"PAUSED\"]","team_ids":"[\"a1b2c3d4-e5f6-7890-1234-567890abcdef\"]","updated_after":"2025-06-18T00:00:00.000Z","work_arrangements":"[\"REMOTE\",\"HYBRID\"]"}

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers, params=querystring)

print(response.json())
```

```javascript
const url = 'https://api.letsdeel.com/rest/ats/jobs?closed_after=2026-01-01T00%3A00%3A00.000Z&closed_before=2026-03-31T23%3A59%3A59.000Z&cursor=cursorValue&department_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&employment_type_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&hiring_member_hou_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&interview_plan_id=a1b2c3d4-e5f6-7890-1234-567890abcdef&job_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&limit=50&location_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&opened_after=2026-01-01T00%3A00%3A00.000Z&opened_before=2026-03-31T23%3A59%3A59.000Z&search=engineer&status=%5B%22OPEN%22%2C%22PAUSED%22%5D&team_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&updated_after=2025-06-18T00%3A00%3A00.000Z&work_arrangements=%5B%22REMOTE%22%2C%22HYBRID%22%5D';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.letsdeel.com/rest/ats/jobs?closed_after=2026-01-01T00%3A00%3A00.000Z&closed_before=2026-03-31T23%3A59%3A59.000Z&cursor=cursorValue&department_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&employment_type_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&hiring_member_hou_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&interview_plan_id=a1b2c3d4-e5f6-7890-1234-567890abcdef&job_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&limit=50&location_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&opened_after=2026-01-01T00%3A00%3A00.000Z&opened_before=2026-03-31T23%3A59%3A59.000Z&search=engineer&status=%5B%22OPEN%22%2C%22PAUSED%22%5D&team_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&updated_after=2025-06-18T00%3A00%3A00.000Z&work_arrangements=%5B%22REMOTE%22%2C%22HYBRID%22%5D"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.letsdeel.com/rest/ats/jobs?closed_after=2026-01-01T00%3A00%3A00.000Z&closed_before=2026-03-31T23%3A59%3A59.000Z&cursor=cursorValue&department_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&employment_type_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&hiring_member_hou_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&interview_plan_id=a1b2c3d4-e5f6-7890-1234-567890abcdef&job_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&limit=50&location_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&opened_after=2026-01-01T00%3A00%3A00.000Z&opened_before=2026-03-31T23%3A59%3A59.000Z&search=engineer&status=%5B%22OPEN%22%2C%22PAUSED%22%5D&team_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&updated_after=2025-06-18T00%3A00%3A00.000Z&work_arrangements=%5B%22REMOTE%22%2C%22HYBRID%22%5D")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.letsdeel.com/rest/ats/jobs?closed_after=2026-01-01T00%3A00%3A00.000Z&closed_before=2026-03-31T23%3A59%3A59.000Z&cursor=cursorValue&department_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&employment_type_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&hiring_member_hou_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&interview_plan_id=a1b2c3d4-e5f6-7890-1234-567890abcdef&job_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&limit=50&location_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&opened_after=2026-01-01T00%3A00%3A00.000Z&opened_before=2026-03-31T23%3A59%3A59.000Z&search=engineer&status=%5B%22OPEN%22%2C%22PAUSED%22%5D&team_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&updated_after=2025-06-18T00%3A00%3A00.000Z&work_arrangements=%5B%22REMOTE%22%2C%22HYBRID%22%5D")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.letsdeel.com/rest/ats/jobs?closed_after=2026-01-01T00%3A00%3A00.000Z&closed_before=2026-03-31T23%3A59%3A59.000Z&cursor=cursorValue&department_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&employment_type_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&hiring_member_hou_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&interview_plan_id=a1b2c3d4-e5f6-7890-1234-567890abcdef&job_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&limit=50&location_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&opened_after=2026-01-01T00%3A00%3A00.000Z&opened_before=2026-03-31T23%3A59%3A59.000Z&search=engineer&status=%5B%22OPEN%22%2C%22PAUSED%22%5D&team_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&updated_after=2025-06-18T00%3A00%3A00.000Z&work_arrangements=%5B%22REMOTE%22%2C%22HYBRID%22%5D', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.letsdeel.com/rest/ats/jobs?closed_after=2026-01-01T00%3A00%3A00.000Z&closed_before=2026-03-31T23%3A59%3A59.000Z&cursor=cursorValue&department_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&employment_type_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&hiring_member_hou_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&interview_plan_id=a1b2c3d4-e5f6-7890-1234-567890abcdef&job_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&limit=50&location_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&opened_after=2026-01-01T00%3A00%3A00.000Z&opened_before=2026-03-31T23%3A59%3A59.000Z&search=engineer&status=%5B%22OPEN%22%2C%22PAUSED%22%5D&team_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&updated_after=2025-06-18T00%3A00%3A00.000Z&work_arrangements=%5B%22REMOTE%22%2C%22HYBRID%22%5D");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.letsdeel.com/rest/ats/jobs?closed_after=2026-01-01T00%3A00%3A00.000Z&closed_before=2026-03-31T23%3A59%3A59.000Z&cursor=cursorValue&department_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&employment_type_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&hiring_member_hou_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&interview_plan_id=a1b2c3d4-e5f6-7890-1234-567890abcdef&job_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&limit=50&location_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&opened_after=2026-01-01T00%3A00%3A00.000Z&opened_before=2026-03-31T23%3A59%3A59.000Z&search=engineer&status=%5B%22OPEN%22%2C%22PAUSED%22%5D&team_ids=%5B%22a1b2c3d4-e5f6-7890-1234-567890abcdef%22%5D&updated_after=2025-06-18T00%3A00%3A00.000Z&work_arrangements=%5B%22REMOTE%22%2C%22HYBRID%22%5D")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```