Kombo Unified ATS API API

Unified endpoints to access all the ATS concepts you might need.

OpenAPI Specification

kombo-unified-ats-api-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Kombo AI Apply Unified ATS API API
  version: 1.0.0
  description: Endpoints for AI-powered job application features.
servers:
- url: https://api.kombo.dev/v1
  description: Kombo EU API
- url: https://api.us.kombo.dev/v1
  description: Kombo US API
security:
- ApiKey: []
tags:
- name: Unified ATS API
  description: Unified endpoints to access all the ATS concepts you might need.
paths:
  /ats/applications:
    get:
      operationId: GetAtsApplications
      summary: Get applications
      description: 'Retrieve all applications.


        Visit our in-depth guides to learn more about:


        - 💡 [Being aware of which applications are tracked](/ats/features/implementation-guide/tracking-created-applications#be-aware-of-which-applications-are-tracked)

        - 🚦 [Hiring signals](/ats/features/implementation-guide/tracking-created-applications#hiring-signals)

        - 📈 [Application stage changes](/ats/features/implementation-guide/tracking-created-applications#application-stage-changes)

        - ❓ [ATS-specific limitations](/ats/features/implementation-guide/tracking-created-applications#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)`'
      tags:
      - Unified ATS API
      parameters:
      - in: header
        name: X-Integration-Id
        schema:
          type: string
        description: ID of the integration you want to interact with.
        example: join:HWUTwvyx2wLoSUHphiWVrp28
        required: true
      - name: cursor
        in: query
        required: false
        description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
        schema:
          $ref: '#/components/schemas/GetAtsApplicationsParameterCursor'
      - name: page_size
        in: query
        required: false
        description: The number of results to return per page. Maximum is 250.
        schema:
          $ref: '#/components/schemas/GetAtsApplicationsParameterPageSize'
      - name: updated_after
        in: query
        required: false
        description: '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](https://docs.kombo.dev/ats/getting-started/fetching-data#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.


          | Path | Added/Removed | Linked Record |

          | --- | --- | --- |

          | `candidate` | n/a | ✓ Yes |

          | `candidate` → `tags` | ✗ No | ✗ No |

          | `current_stage` | n/a | ✓ Yes |

          | `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._'
        schema:
          $ref: '#/components/schemas/GetAtsApplicationsParameterUpdatedAfter'
      - name: include_deleted
        in: query
        required: false
        description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
        schema:
          $ref: '#/components/schemas/GetAtsApplicationsParameterIncludeDeleted'
      - name: ignore_unsupported_filters
        in: query
        required: false
        description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
        schema:
          $ref: '#/components/schemas/GetAtsApplicationsParameterIgnoreUnsupportedFilters'
      - name: ids
        in: query
        required: false
        description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
        schema:
          $ref: '#/components/schemas/GetAtsApplicationsParameterIds'
      - name: remote_ids
        in: query
        required: false
        description: Filter by a comma-separated list of remote IDs.
        schema:
          $ref: '#/components/schemas/GetAtsApplicationsParameterRemoteIds'
      - name: outcome
        in: query
        required: false
        description: '**(⚠️ Deprecated - Use the `outcomes` filter instead.)** Filter applications by outcome. This allows you to get applications that are for example `PENDING`, `HIRED`, or `DECLINED`.'
        schema:
          $ref: '#/components/schemas/GetAtsApplicationsParameterOutcome'
      - name: outcomes
        in: query
        required: false
        description: "Filter by a comma-separated list of `PENDING`, `HIRED`, `DECLINED` \n* `PENDING`: The application is still being processed. \n* `HIRED`: The candidate was hired. \n* `DECLINED`: The candidate was declined. \n \n\nLeave this blank to get results matching all values."
        schema:
          $ref: '#/components/schemas/GetAtsApplicationsParameterOutcomes'
      - name: job_ids
        in: query
        required: false
        description: Filter by a comma-separated list of job IDs. We will only return applications that are related to _any_ of the jobs.
        schema:
          $ref: '#/components/schemas/GetAtsApplicationsParameterJobIds'
      - name: job_remote_ids
        in: query
        required: false
        description: Filter by a comma-separated list of job remote IDs. We will only return applications that are related to _any_ of the jobs.
        schema:
          $ref: '#/components/schemas/GetAtsApplicationsParameterJobRemoteIds'
      - name: current_stage_ids
        in: query
        required: false
        description: Filter by a comma-separated list of application stage IDs. We will only return applications that are currently in _any_ of the stages.
        schema:
          $ref: '#/components/schemas/GetAtsApplicationsParameterCurrentStageIds'
      - name: remote_created_after
        in: query
        required: false
        description: 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.
        schema:
          $ref: '#/components/schemas/GetAtsApplicationsParameterRemoteCreatedAfter'
      responses:
        '200':
          description: GET /ats/applications Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAtsApplicationsPositiveResponse'
              examples:
                example1:
                  value:
                    status: success
                    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
                          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
        default:
          $ref: '#/components/responses/ErrorResponseATS'
  /ats/applications/{application_id}/stage:
    put:
      operationId: PutAtsApplicationsApplicationIdStage
      summary: Move application to stage
      description: "Moves an application to a specified stage. Use job-specific stages from GET /jobs, not the deprecated /application-stages endpoint.\n\n<Note>\n  This endpoint requires the permission **Set application stage** to be enabled in [your scope config](/scopes).\n</Note>\n\n### Example Request Body\n\n```json\n{\n  \"stage_id\": \"3PJ8PZhZZa1eEdd2DtPNtVup\",\n  \"remote_fields\": {}\n}\n```"
      tags:
      - Unified ATS API
      parameters:
      - in: header
        name: X-Integration-Id
        schema:
          type: string
        description: ID of the integration you want to interact with.
        example: join:HWUTwvyx2wLoSUHphiWVrp28
        required: true
      - name: application_id
        in: path
        required: true
        description: The Kombo ID of the application you want to move to a different stage.
        schema:
          $ref: '#/components/schemas/PutAtsApplicationsApplicationIdStageParameterApplicationId'
        examples:
          example1:
            value: GRKdd9dibYKKCrmGRSMJf3wu
      requestBody:
        description: PUT /ats/applications/:application_id/stage Request body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PutAtsApplicationsApplicationIdStageRequestBody'
            examples:
              example1:
                value:
                  stage_id: 3PJ8PZhZZa1eEdd2DtPNtVup
      responses:
        '200':
          description: PUT /ats/applications/:application_id/stage Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PutAtsApplicationsApplicationIdStagePositiveResponse'
              examples:
                example1:
                  value:
                    status: success
                    data: {}
                    warnings:
                    - message: This is an example warning!
        default:
          $ref: '#/components/responses/ErrorResponseATS'
  /ats/applications/{application_id}/result-links:
    post:
      operationId: PostAtsApplicationsApplicationIdResultLinks
      summary: Add result link to application
      description: "Add a result link to an application.\n\nThis can, for example, be used to link a candidate back to a test result/assessment in your application. As not all ATS tools have a \"result link\" feature, we sometimes repurpose other fields to expose it.\n\n<Note>\n  This endpoint requires the permission **Add result links** to be enabled in [your scope config](/scopes).\n</Note>\n\n### Example Request Body\n\n```json\n{\n  \"application_id\": \"8Xi6iZrwusZqJmDGXs49GBmJ\",\n  \"label\": \"Assessment Result\",\n  \"url\": \"https://example.com/test-results/5BtP1WC1UboS7CF3yxjKcvjG\",\n  \"details\": {\n    \"custom_field_name_prefix\": \"Acme:\",\n    \"attributes\": [\n      {\n        \"key\": \"Score\",\n        \"value\": \"100%\"\n      },\n      {\n        \"key\": \"Time\",\n        \"value\": \"2:30h\"\n      }\n    ]\n  },\n  \"remote_fields\": {}\n}\n```"
      tags:
      - Unified ATS API
      parameters:
      - in: header
        name: X-Integration-Id
        schema:
          type: string
        description: ID of the integration you want to interact with.
        example: join:HWUTwvyx2wLoSUHphiWVrp28
        required: true
      - name: application_id
        in: path
        required: true
        description: The Kombo ID of the application you want to create the link for.
        schema:
          $ref: '#/components/schemas/PostAtsApplicationsApplicationIdResultLinksParameterApplicationId'
        examples:
          example1:
            value: 8Xi6iZrwusZqJmDGXs49GBmJ
      requestBody:
        description: POST /ats/applications/:application_id/result-links Request body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostAtsApplicationsApplicationIdResultLinksRequestBody'
            examples:
              example1:
                value:
                  label: Assessment Result
                  url: https://example.com/test-results/5BtP1WC1UboS7CF3yxjKcvjG
                  details:
                    custom_field_name_prefix: 'Acme:'
                    attributes:
                    - key: Score
                      value: 100%
                    - key: Time
                      value: 2:30h
      responses:
        '200':
          description: POST /ats/applications/:application_id/result-links Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostAtsApplicationsApplicationIdResultLinksPositiveResponse'
              examples:
                example1:
                  value:
                    status: success
                    data: {}
                    warnings:
                    - message: This is an example warning!
        default:
          $ref: '#/components/responses/ErrorResponseATS'
  /ats/applications/{application_id}/notes:
    post:
      operationId: PostAtsApplicationsApplicationIdNotes
      summary: Add note to application
      description: "Add a note to an application.\n\nAdd extra information to an application. This can be any extra text information you want to add to an application.\n\n<Note>\n  This endpoint requires the permission **Add notes** to be enabled in [your scope config](/scopes).\n</Note>\n\n### Example Request Body\n\n```json\n{\n  \"content\": \"A new message from the candidate is available in YourChat!\",\n  \"content_type\": \"PLAIN_TEXT\",\n  \"remote_fields\": {}\n}\n```"
      tags:
      - Unified ATS API
      parameters:
      - in: header
        name: X-Integration-Id
        schema:
          type: string
        description: ID of the integration you want to interact with.
        example: join:HWUTwvyx2wLoSUHphiWVrp28
        required: true
      - name: application_id
        in: path
        required: true
        description: The Kombo ID of the application you want to create the note for.
        schema:
          $ref: '#/components/schemas/PostAtsApplicationsApplicationIdNotesParameterApplicationId'
        examples:
          example1:
            value: 8Xi6iZrwusZqJmDGXs49GBmJ
      requestBody:
        description: POST /ats/applications/:application_id/notes Request body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostAtsApplicationsApplicationIdNotesRequestBody'
            examples:
              example1:
                value:
                  content: A new message from the candidate is available in YourChat!
                  content_type: PLAIN_TEXT
      responses:
        '200':
          description: POST /ats/applications/:application_id/notes Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostAtsApplicationsApplicationIdNotesPositiveResponse'
              examples:
                example1:
                  value:
                    status: success
                    data: {}
                    warnings:
                    - message: This is an example warning!
        default:
          $ref: '#/components/responses/ErrorResponseATS'
  /ats/applications/{application_id}/attachments:
    get:
      operationId: GetAtsApplicationsApplicationIdAttachments
      summary: Get application attachments
      description: "Get attachments from a candidate or application.\n\nGet attachments from an application. If the ATS stores the attachments on the candidate, it will get the attachments from the corresponding candidate instead.\n\n<Note>\n  This endpoint requires the permission **Read document attachments** to be enabled in [your scope config](/scopes).\n</Note>"
      tags:
      - Unified ATS API
      parameters:
      - in: header
        name: X-Integration-Id
        schema:
          type: string
        description: ID of the integration you want to interact with.
        example: join:HWUTwvyx2wLoSUHphiWVrp28
        required: true
      - name: application_id
        in: path
        required: true
        description: The Kombo ID of the application you want to obtain attachments for.
        schema:
          $ref: '#/components/schemas/GetAtsApplicationsApplicationIdAttachmentsParameterApplicationId'
        examples:
          example1:
            value: 8Xi6iZrwusZqJmDGXs49GBmJ
      responses:
        '200':
          description: GET /ats/applications/:application_id/attachments Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAtsApplicationsApplicationIdAttachmentsPositiveResponse'
              examples:
                example1:
                  value:
                    status: success
                    data:
                      results:
                      - type: CV
                        id: EYJjhMQT3LtVKXnTbnRT8s6U
                        remote_id: GUzE666zfyjeoCJX6A8n7wh6
                        data_url: https://resources.kombo.dev/7yZfKGzWigXxxRTygqAfHvyE
                        file_name: Frank Doe CV.pdf
                        content_type: application/x-pdf
                        remote_created_at: null
                        remote_updated_at: null
                    warnings:
                    - message: This is an example warning!
        default:
          $ref: '#/components/responses/ErrorResponseATS'
    post:
      operationId: PostAtsApplicationsApplicationIdAttachments
      summary: Add attachment to application
      description: "Uploads an attachment file for the specified applicant.\n\n<Warning>\n  If adding an attachment to an application is not supported by the integration, the attachment will be [added to the candidate](/ats/v1/post-candidates-candidate-id-attachments) instead. \n</Warning>\n\n<Note>\n  This endpoint requires the permission **Add attachments** to be enabled in [your scope config](/scopes).\n</Note>\n\n### Example Request Body\n\n```json\n{\n  \"application_id\": \"GRKdd9dibYKKCrmGRSMJf3wu\",\n  \"attachment\": {\n    \"name\": \"Frank Doe CV.txt\",\n    \"data\": \"SGkgdGhlcmUsIEtvbWJvIGlzIGN1cnJlbnRseSBoaXJpbmcgZW5naW5lZXJzIHRoYXQgbG92ZSB0byB3b3JrIG9uIGRldmVsb3BlciBwcm9kdWN0cy4=\",\n    \"type\": \"CV\",\n    \"content_type\": \"text/plain\"\n  },\n  \"remote_fields\": {}\n}\n```"
      tags:
      - Unified ATS API
      parameters:
      - in: header
        name: X-Integration-Id
        schema:
          type: string
        description: ID of the integration you want to interact with.
        example: join:HWUTwvyx2wLoSUHphiWVrp28
        required: true
      - name: application_id
        in: path
        required: true
        description: POST /ats/applications/:application_id/attachments Parameter
        schema:
          $ref: '#/components/schemas/PostAtsApplicationsApplicationIdAttachmentsParameterApplicationId'
        examples:
          example1:
            value: GRKdd9dibYKKCrmGRSMJf3wu
      requestBody:
        description: POST /ats/applications/:application_id/attachments Request body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostAtsApplicationsApplicationIdAttachmentsRequestBody'
            examples:
              example1:
                value:
                  attachment:
                    name: Frank Doe CV.txt
                    data: SGkgdGhlcmUsIEtvbWJvIGlzIGN1cnJlbnRseSBoaXJpbmcgZW5naW5lZXJzIHRoYXQgbG92ZSB0byB3b3JrIG9uIGRldmVsb3BlciBwcm9kdWN0cy4=
                    type: CV
                    content_type: text/plain
      responses:
        '200':
          description: POST /ats/applications/:application_id/attachments Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostAtsApplicationsApplicationIdAttachmentsPositiveResponse'
              examples:
                example1:
                  value:
                    status: success
                    data: {}
                    warnings:
                    - message: This is an example warning!
        default:
          $ref: '#/components/responses/ErrorResponseATS'
  /ats/applications/{application_id}/reject:
    post:
      operationId: PostAtsApplicationsApplicationIdReject
      summary: Reject application
      description: "Rejects an application with a provided reason.\n\nRejects an application with a provided reason. Optionally, you can provide a free text note. You can get the list of rejection reasons with our [Get rejection reasons endpoint](/ats/v1/get-rejection-reasons).\n\n<Note>\n  This endpoint requires the permission **Reject applications** to be enabled in [your scope config](/scopes).\n</Note>\n\n### Example Request Body\n\n```json\n{\n  \"rejection_reason_id\": \"3PJ8PZhZZa1eEdd2DtPNtVup\",\n  \"note\": \"Candidate was a great culture fit but didn't bring the hard skills we need.\",\n  \"remote_fields\": {}\n}\n```"
      tags:
      - Unified ATS API
      parameters:
      - in: header
        name: X-Integration-Id
        schema:
          type: string
        description: ID of the integration you want to interact with.
        example: join:HWUTwvyx2wLoSUHphiWVrp28
        required: true
      - name: application_id
        in: path
        required: true
        description: The Kombo ID of the application you want to reject.
        schema:
          $ref: '#/components/schemas/PostAtsApplicationsApplicationIdRejectParameterApplicationId'
        examples:
          example1:
            value: GRKdd9dibYKKCrmGRSMJf3wu
      requestBody:
        description: POST /ats/applications/:application_id/reject Request body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostAtsApplicationsApplicationIdRejectRequestBody'
            examples:
              example1:
                value:
                  rejection_reason_id: 3PJ8PZhZZa1eEdd2DtPNtVup
                  note: Candidate was a great culture fit but didn't bring the hard skills we need.
      responses:
        '200':
          description: POST /ats/applications/:application_id/reject Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostAtsApplicationsApplicationIdRejectPositiveResponse'
              examples:
                example1:
                  value:
                    status: success
                    data: {}
                    warnings:
                    - message: This is an example warning!
        default:
          $ref: '#/components/responses/ErrorResponseATS'
  /ats/applications/{application_id}/interviews:
    post:
      operationId: PostAtsApplicationsApplicationIdInterviews
      summary: Create interview
      description: 'Create interview




        <Warning>**Closed Beta Feature:** This endpoint is currently in closed beta. We''re testing it with selected customers before its public release. If you''re interested in learning more or getting early access, please reach out.</Warning>


        '
      tags:
      - Unified ATS API
      parameters:
      - in: header
        name: X-Integration-Id
        schema:
          type: string
        description: ID of the integration you want to interact with.
        example: join:HWUTwvyx2wLoSUHphiWVrp28
        required: true
      - name: application_id
        in: path
        required: true
        description: The ID of the application
        schema:
          $ref: '#/components/schemas/PostAtsApplicationsApplicationIdInterviewsParameterApplicationId'
      requestBody:
        description: POST /ats/applications/:application_id/interviews Request body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostAtsApplicationsApplicationIdInterviewsRequestBody'
      responses:
        '200':
          description: POST /ats/applications/:application_id/interviews Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostAtsApplicationsApplicationIdInterviewsPositiveResponse'
        default:
          $ref: '#/components/responses/ErrorResponseATS'
    patch:
      operationId: PatchAtsApplicationsApplicationIdInterviews
      summary: Update interview
      description: 'Update interview




        <Warning>**Closed Beta Feature:** This endpoint is currently in closed beta. We''re testing it with selected customers before its public release. If you''re interested in learning more or getting early access, please reach out.</Warning>


        '
      tags:
      - Unified ATS API
      parameters:
      - in: header
        name: X-Integration-Id
        schema:
          type: string
        description: ID of the integration you want to interact with.
        example: join:HWUTwvyx2wLoSUHphiWVrp28
        required: true
      - name: application_id
        in: path
        required: true
        description: The ID of the application
        schema:
          $ref: '#/components/schemas/PatchAtsApplicationsApplicationIdInterviewsParameterApplicationId'
      requestBody:
        description: PATCH /ats/applications/:application_id/interviews Request body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchAtsApplicationsApplicationIdInterviewsRequestBody'
      responses:
        '200':
          description: PATCH /ats/applications/:application_id/interviews Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PatchAtsApplicationsApplicationIdInterviewsPositiveResponse'
        default:
          $ref: '#/components/responses/ErrorResponseATS'
  /ats/candidates:
    get:
      operationId: GetAtsCandidates
      summary: Get candidates
      description: 'Retrieve all candidates.


        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)`'
      tags:
      - Unified ATS API
      parameters:
      - in: header
        name: X-Integration-Id
        schema:
          type: string
        description: ID of the integration you want to interact with.
        example: join:HWUTwvyx2wLoSUHphiWVrp28
        required: true
      - name: cursor
        in: query
        required: false
        description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
        schema:
          $ref: '#/components/schemas/GetAtsCandidatesParameterCursor'
      - name: page_size
        in: query
        required: false
        description: The number of results to return per page. Maximum is 250.
        schema:
          $ref: '#/components/schemas/GetAtsCandidatesParameterPageSize'
      - name: updated_after
        in: query
        required: false
        description: '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](https://docs.kombo.dev/ats/getting-started/fetching-data#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.


          | Path | Added/Removed | Linked Record |

          | --- | --- | --- |

          | `applications` | ✓ Yes | ✓ Yes |

          | `applications` → `current_stage` | ✗ No | ✗ No |

          | `applications` → `job` | ✗ No | ✗ No |

          | `tags` | ✓ Yes | ✗ No |


          _**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._'
        schema:
          $ref: '#/components/schemas/GetAtsCandidatesParameterUpdatedAfter'
      - name: include_deleted
        in: query
        required: false
        description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
        schema:
          $ref: '#/components/schemas/GetAtsCandidatesParameterIncludeDeleted'
      - name: ignore_unsupported_filters
        in: query
        required: false
        description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
        schema:
          $ref: '#/components/schemas/GetAtsCandidatesParameterIgnoreUnsupportedFilters'
      - name: ids
        in: query
        required: false
        description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
        schema:
          $ref: '#/comp

# --- truncated at 32 KB (530 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/kombo/refs/heads/main/openapi/kombo-unified-ats-api-api-openapi.yml