Unified ATS API

Get applications

Changed on

Retrieve all applications.

Visit our in-depth guides to learn more about:

  • 💡 Being aware of which applications are tracked
  • 🚦 Hiring signals
  • 📈 Application stage changes
  • ❓ ATS-specific limitations

Top level filters use AND, while individual filters use OR if they accept multiple arguments. That means filters will be resolved like this: (id IN ids) AND (remote_id IN remote_ids)

get/ats/applications

Request

Query parameters

cursorstring

An optional cursor string used for pagination. This can be retrieved from the next property of the previous page response.

page_sizeinteger

The number of results to return per page. Maximum is 250.

updated_afterstring date-time

Filter the entries based on the modification date in format YYYY-MM-DDTHH:mm:ss.sssZ. Returns records where either the record itself OR its nested data has been updated since this timestamp, even if the record's own changed_at field remains unchanged.

If you want to track entry deletion, also set the include_deleted=true query parameter, because otherwise, deleted entries will be hidden.

For more details, see Understanding changed_at vs updated_after Behavior.

For this endpoint, updated_after matches when the returned record changed, or when related data changed as described below.

PathAdded/RemovedLinked Record
candidaten/a✓ Yes
candidate → tags✗ No✗ No
current_stage✗ No✗ No
job✗ No✗ No
interviews✓ Yes✓ Yes
offers✓ Yes✓ Yes

Added/Removed: Whether adding or removing entries from this list triggers an update (n/a for single records). Linked Record: Whether changes to the linked record itself trigger an update.

include_deleted'true' | 'false'

By default, deleted entries are not returned. Use the include_deleted query param to include deleted entries too.

ignore_unsupported_filters'true' | 'false'

When set to true, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.

idsstring

Filter by a comma-separated list of IDs such as 222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3.

remote_idsstring

Filter by a comma-separated list of remote IDs.

outcome'PENDING' | 'HIRED' | 'DECLINED'

(⚠️ Deprecated - Use the outcomes filter instead.) Filter applications by outcome. This allows you to get applications that are for example PENDING, HIRED, or DECLINED.

outcomesstring

Filter by a comma-separated list of PENDING, HIRED, DECLINED

  • PENDING: The application is still being processed.
  • HIRED: The candidate was hired.
  • DECLINED: The candidate was declined.

Leave this blank to get results matching all values.

job_idsstring

Filter by a comma-separated list of job IDs. We will only return applications that are related to any of the jobs.

job_remote_idsstring

Filter by a comma-separated list of job remote IDs. We will only return applications that are related to any of the jobs.

current_stage_idsstring

Filter by a comma-separated list of application stage IDs. We will only return applications that are currently in any of the stages.

remote_created_afterstring date-time

Filter applications by the day they were created in the remote system. This allows you to get applications that were created on or after a certain day.

Headers

X-Integration-Idstring required

ID of the integration you want to interact with.

Response

GET /ats/applications Positive response

status'success' required

Example response

{
  "data": {
    "next": "eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=",
    "results": [
      {
        "id": "H77fDF8uvEzGNPRubiz5DvQ7",
        "remote_id": "32",
        "outcome": "HIRED",
        "rejection_reason_name": null,
        "rejected_at": null,
        "current_stage_id": "5J7L4b48wBfffYwek9Az9pkM",
        "job_id": "H5daSm8e85Dmvmne3wLeCPhX",
        "candidate_id": "26vafvWSRmbhNcxJYqjCzuJg",
        "screening_question_answers": [
          {
            "answer": {
              "choice": "TypeScript"
            },
            "question": {
              "remote_id": "48b4d36a-1d4b-4c50-ada7-9519078e65b4",
              "title": "Which is your primary programming language",
              "type": "SINGLE_SELECT"
            }
          }
        ],
        "custom_fields": {},
        "integration_fields": [],
        "remote_url": "https://app.greenhouse.io/applications/32",
        "changed_at": "2022-08-07T14:01:29.196Z",
        "remote_deleted_at": null,
        "remote_created_at": "2022-08-07T14:01:29.196Z",
        "remote_updated_at": "2022-08-07T14:01:29.196Z",
        "remote_data": null,
        "candidate": {
          "id": "26vafvWSRmbhNcxJYqjCzuJg",
          "remote_id": "32",
          "first_name": "John",
          "last_name": "Doe",
          "email_addresses": [
            {
              "email_address": "john.doe@example.com",
              "type": "PRIVATE"
            }
          ],
          "phone_numbers": [
            {
              "phone_number": "+1-541-754-3010",
              "type": "HOME"
            }
          ],
          "social_media": [
            {
              "link": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
              "type": "YOUTUBE",
              "username": null
            }
          ],
          "source": "Employee Referral",
          "remote_url": "https://app.greenhouse.io/people/32",
          "tags": [
            {
              "id": "26vafvWSRmbhNcxJYqjCzuJg",
              "remote_id": "32",
              "name": "High Potential"
            }
          ]
        },
        "current_stage": {
          "id": "5J7L4b48wBfffYwek9Az9pkM",
          "remote_id": "32",
          "name": "Initial Screening",
          "status": "ACTIVE",
          "custom_fields": {},
          "integration_fields": [],
          "index": 2
        },
        "job": {
          "id": "H5daSm8e85Dmvmne3wLeCPhX",
          "remote_id": "32",
          "name": "Backend Engineer"
        },
        "interviews": [
          {
            "id": "26vafvWSRmbhNcxJYqjCzuJg",
            "remote_id": "32",
            "title": "Interview with John Doe",
            "starting_at": "2023-06-26T14:30:00.000Z",
            "ending_at": "2023-06-26T15:30:00.000Z",
            "location": {
              "city": "Berlin",
              "country": "DE",
              "raw": "Berlin, Germany",
              "state": "Berlin",
              "street_1": "Lohmühlenstraße 65",
              "street_2": null,
              "zip_code": "12435"
            },
            "canceled": false
          }
        ],
        "offers": [
          {
            "id": "76bab8LKuFtqpZ89mofCPMHX",
            "remote_id": "6",
            "status": "ACCEPTED"
          }
        ]
      }
    ]
  }
}

Changes

    • info

      added the required property //// to the response with the status

    • info

      added the required property //// to the response with the status

    • info

      added the required property //// to the response with the status

    • breaking

      the // response's property type changed from no type to object for status

    • info

      added the new optional query request parameter current_stage_ids

    • info

      added the new optional query request parameter ignore_unsupported_filters

    • info

      added the new optional query request parameter job_ids

    • info

      added the new optional query request parameter job_remote_ids

    • info

      added the new optional query request parameter outcome

    • info

      added the new optional query request parameter outcomes

    • info

      added the new optional query request parameter remote_created_after

    • info

      removed the pattern /^([\da-z]{24}(,[\da-z]{24})*)?$/i from the query request parameter ids

    • info

      removed the non-success response with the status

    • info

      removed the non-success response with the status

    • info

      removed the non-success response with the status

    • info

      removed the non-success response with the status

    • info

      removed the non-success response with the status

    • info

      added the optional property /// to the response with the status

    • info

      removed subschema #1 subschema #2 from the // response property allOf list for the response status

    • info

      the response property const value success was added for the status

    • info

      removed the success enum value from the response property for the response status

    • info

      added the required property /// to the response with the status

    • info

      added the required property /// to the response with the status

    • info

      added the required property /// to the response with the status

    • info

      added the required property /// to the response with the status

    • info

      added the required property /// to the response with the status

    • info

      added the required property /// to the response with the status

    • info

      added the required property /// to the response with the status

    • info

      added the required property /// to the response with the status

    • info

      added the required property /// to the response with the status

    • info

      added the required property /// to the response with the status

    • info

      added the required property /// to the response with the status

    • info

      added the required property /// to the response with the status

    • info

      added the required property /// to the response with the status

    • info

      added the required property /// to the response with the status

    • info

      added the required property /// to the response with the status

    • info

      added the required property /// to the response with the status

    • info

      added the required property /// to the response with the status

    • info

      added the required property /// to the response with the status

    • info

      added the required property /// to the response with the status

    • info

      added the required property /// to the response with the status

    • info

      added the required property /// to the response with the status