Kombo API — Unified ATS API. 30 operations. Lead operation: Get application stages. Self-contained Naftiko capability covering one Kombo business surface.
naftiko: 1.0.0-alpha2
info:
label: Kombo API — Unified ATS API
description: 'Kombo API — Unified ATS API. 30 operations. Lead operation: Get application stages. Self-contained Naftiko
capability covering one Kombo business surface.'
tags:
- Kombo
- Unified ATS API
created: '2026-05-19'
modified: '2026-05-19'
binds:
- namespace: env
keys:
KOMBO_API_KEY: KOMBO_API_KEY
capability:
consumes:
- type: http
namespace: kombo-unified-ats-api
baseUri: https://api.kombo.dev/v1
description: Kombo API — Unified ATS API business capability. Self-contained, no shared references.
resources:
- name: ats-actions-ats_add_application_attachment
path: /ats/actions/ats_add_application_attachment
operations:
- name: getatsactionsatsaddapplicationattachment
method: GET
description: ''
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: ats-actions-ats_add_candidate_attachment
path: /ats/actions/ats_add_candidate_attachment
operations:
- name: getatsactionsatsaddcandidateattachment
method: GET
description: ''
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: ats-actions-ats_create_application
path: /ats/actions/ats_create_application
operations:
- name: getatsactionsatscreateapplication
method: GET
description: ''
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: ats-actions-ats_create_candidate
path: /ats/actions/ats_create_candidate
operations:
- name: getatsactionsatscreatecandidate
method: GET
description: ''
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: ats-application-stages
path: /ats/application-stages
operations:
- name: getatsapplicationstages
method: GET
description: Get application stages
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: cursor
in: query
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the
previous page response.
- name: page_size
in: query
type: string
description: The number of results to return per page. Maximum is 250.
- name: updated_after
in: query
type: string
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 ha
- name: include_deleted
in: query
type: string
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted
entries too.
- name: ignore_unsupported_filters
in: query
type: string
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead
of filtering out all results.
- name: ids
in: query
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
- name: remote_ids
in: query
type: string
description: Filter by a comma-separated list of remote IDs.
- name: ats-applications
path: /ats/applications
operations:
- name: getatsapplications
method: GET
description: Get applications
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: cursor
in: query
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the
previous page response.
- name: page_size
in: query
type: string
description: The number of results to return per page. Maximum is 250.
- name: updated_after
in: query
type: string
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 ha
- name: include_deleted
in: query
type: string
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted
entries too.
- name: ignore_unsupported_filters
in: query
type: string
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead
of filtering out all results.
- name: ids
in: query
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
- name: remote_ids
in: query
type: string
description: Filter by a comma-separated list of remote IDs.
- name: outcome
in: query
type: string
description: '**(⚠️ Deprecated - Use the `outcomes` filter instead.)** Filter applications by outcome. This allows
you to get applications that are for example `PENDING`, `HI'
- name: outcomes
in: query
type: string
description: 'Filter by a comma-separated list of `PENDING`, `HIRED`, `DECLINED` '
- name: job_ids
in: query
type: string
description: Filter by a comma-separated list of job IDs. We will only return applications that are related to _any_
of the jobs.
- name: job_remote_ids
in: query
type: string
description: Filter by a comma-separated list of job remote IDs. We will only return applications that are related
to _any_ of the jobs.
- name: current_stage_ids
in: query
type: string
description: Filter by a comma-separated list of application stage IDs. We will only return applications that are
currently in _any_ of the stages.
- name: remote_created_after
in: query
type: string
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.
- name: ats-applications-application_id-attachments
path: /ats/applications/{application_id}/attachments
operations:
- name: getatsapplicationsapplicationidattachments
method: GET
description: Get application attachments
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: application_id
in: path
type: string
description: The Kombo ID of the application you want to obtain attachments for.
required: true
- name: postatsapplicationsapplicationidattachments
method: POST
description: Add attachment to application
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: application_id
in: path
type: string
description: POST /ats/applications/:application_id/attachments Parameter
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: ats-applications-application_id-interviews
path: /ats/applications/{application_id}/interviews
operations:
- name: postatsapplicationsapplicationidinterviews
method: POST
description: Create interview
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: application_id
in: path
type: string
description: The ID of the application
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: patchatsapplicationsapplicationidinterviews
method: PATCH
description: Update interview
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: application_id
in: path
type: string
description: The ID of the application
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: ats-applications-application_id-notes
path: /ats/applications/{application_id}/notes
operations:
- name: postatsapplicationsapplicationidnotes
method: POST
description: Add note to application
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: application_id
in: path
type: string
description: The Kombo ID of the application you want to create the note for.
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: ats-applications-application_id-reject
path: /ats/applications/{application_id}/reject
operations:
- name: postatsapplicationsapplicationidreject
method: POST
description: Reject application
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: application_id
in: path
type: string
description: The Kombo ID of the application you want to reject.
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: ats-applications-application_id-result-links
path: /ats/applications/{application_id}/result-links
operations:
- name: postatsapplicationsapplicationidresultlinks
method: POST
description: Add result link to application
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: application_id
in: path
type: string
description: The Kombo ID of the application you want to create the link for.
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: ats-applications-application_id-stage
path: /ats/applications/{application_id}/stage
operations:
- name: putatsapplicationsapplicationidstage
method: PUT
description: Move application to stage
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: application_id
in: path
type: string
description: The Kombo ID of the application you want to move to a different stage.
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: ats-candidates
path: /ats/candidates
operations:
- name: getatscandidates
method: GET
description: Get candidates
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: cursor
in: query
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the
previous page response.
- name: page_size
in: query
type: string
description: The number of results to return per page. Maximum is 250.
- name: updated_after
in: query
type: string
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 ha
- name: include_deleted
in: query
type: string
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted
entries too.
- name: ignore_unsupported_filters
in: query
type: string
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead
of filtering out all results.
- name: ids
in: query
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
- name: remote_ids
in: query
type: string
description: Filter by a comma-separated list of remote IDs.
- name: email
in: query
type: string
description: Filter the candidates based on an email address. When set, returns only the candidates where the given
`email` is in `email_addresses`. This filter is case-inse
- name: job_ids
in: query
type: string
description: Filter by a comma-separated list of job IDs. We will only return candidates that have applied to _any_
of the jobs.
- name: first_name
in: query
type: string
description: Filter candidates by first name. This filter is case-insensitive and matches the exact first name.
Fuzzy matching might be enabled in the future, so consider th
- name: last_name
in: query
type: string
description: Filter candidates by last name. This filter is case-insensitive and matches the exact last name. Fuzzy
matching might be enabled in the future, so consider this
- name: postatscandidates
method: POST
description: Create candidate
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: ats-candidates-candidate_id-attachments
path: /ats/candidates/{candidate_id}/attachments
operations:
- name: getatscandidatescandidateidattachments
method: GET
description: Get candidate attachments
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: candidate_id
in: path
type: string
description: The Kombo ID of the candidate you want to obtain attachments for.
required: true
- name: postatscandidatescandidateidattachments
method: POST
description: Add attachment to candidate
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: candidate_id
in: path
type: string
description: The Kombo ID of the candidate you want to add the attachment to.
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: ats-candidates-candidate_id-result-links
path: /ats/candidates/{candidate_id}/result-links
operations:
- name: postatscandidatescandidateidresultlinks
method: POST
description: Add result link to candidate
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: candidate_id
in: path
type: string
description: The Kombo ID of the candidate you want to add the result link to.
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: ats-candidates-candidate_id-tags
path: /ats/candidates/{candidate_id}/tags
operations:
- name: postatscandidatescandidateidtags
method: POST
description: Add tag to candidate
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: candidate_id
in: path
type: string
description: The Kombo ID of the candidate you want to add the tag to.
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: deleteatscandidatescandidateidtags
method: DELETE
description: Remove tag from candidate
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: candidate_id
in: path
type: string
description: The Kombo ID of the candidate you want to remove the tag from.
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: ats-import-tracked-application
path: /ats/import-tracked-application
operations:
- name: postatsimporttrackedapplication
method: POST
description: Import tracked application
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: ats-interviews
path: /ats/interviews
operations:
- name: getatsinterviews
method: GET
description: Get interviews
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: cursor
in: query
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the
previous page response.
- name: page_size
in: query
type: string
description: The number of results to return per page. Maximum is 250.
- name: updated_after
in: query
type: string
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 ha
- name: include_deleted
in: query
type: string
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted
entries too.
- name: ignore_unsupported_filters
in: query
type: string
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead
of filtering out all results.
- name: ids
in: query
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
- name: remote_ids
in: query
type: string
description: Filter by a comma-separated list of remote IDs.
- name: job_ids
in: query
type: string
description: Filter by a comma-separated list of job IDs. We will only return interviews for applications associated
with any of these jobs.
- name: ats-jobs
path: /ats/jobs
operations:
- name: getatsjobs
method: GET
description: Get jobs
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: cursor
in: query
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the
previous page response.
- name: page_size
in: query
type: string
description: The number of results to return per page. Maximum is 250.
- name: updated_after
in: query
type: string
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 ha
- name: include_deleted
in: query
type: string
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted
entries too.
- name: ignore_unsupported_filters
in: query
type: string
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead
of filtering out all results.
- name: ids
in: query
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
- name: remote_ids
in: query
type: string
description: Filter by a comma-separated list of remote IDs.
- name: job_codes
in: query
type: string
description: Filter by a comma-separated list of job codes.
- name: post_url
in: query
type: string
description: Filter by the `post_url` field. Can be used to find a job based on its public posting URL.
- name: status
in: query
type: string
description: '**(⚠️ Deprecated - Use the `statuses` filter instead.)** Filter by the `status` field. Can be used
to find a job based on its status.'
- name: statuses
in: query
type: string
description: 'Filter by a comma-separated list of `OPEN`, `CLOSED`, `DRAFT`, `ARCHIVED` '
- name: employment_types
in: query
type: string
description: 'Filter by a comma-separated list of `FULL_TIME`, `PART_TIME`, `CONTRACT`, `SEASONAL`, `INTERNSHIP` '
- name: visibilities
in: query
type: string
description: 'Filter by a comma-separated list of `PUBLIC`, `INTERNAL`, `UNLISTED`, `CONFIDENTIAL` '
- name: remote_created_after
in: query
type: string
description: Filter jobs by the day they were created in the remote system. This allows you to get jobs that were
created on or after a certain day.
- name: name_contains
in: query
type: string
description: Filter by the `name` field. Can be used to find a job by keywords present in the job name.
- name: ats-jobs-job_id-applications
path: /ats/jobs/{job_id}/applications
operations:
- name: postatsjobsjobidapplications
method: POST
description: Create application
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: job_id
in: path
type: string
description: The Kombo ID or Remote ID of the Job this candidate should apply for. If you want to use the ID of
the integrated system (remote_id) you need to prefix the id w
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: ats-offers
path: /ats/offers
operations:
- name: getatsoffers
method: GET
description: Get offers
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: cursor
in: query
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the
previous page response.
- name: page_size
in: query
type: string
description: The number of results to return per page. Maximum is 250.
- name: updated_after
in: query
type: string
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 ha
- name: include_deleted
in: query
type: string
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted
entries too.
- name: ignore_unsupported_filters
in: query
type: string
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead
of filtering out all results.
- name: ids
in: query
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
- name: remote_ids
in: query
type: string
description: Filter by a comma-separated list of remote IDs.
- name: ats-rejection-reasons
path: /ats/rejection-reasons
operations:
- name: getatsrejectionreasons
method: GET
description: Get rejection reasons
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: cursor
in: query
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the
previous page response.
- name: page_size
in: query
type: string
description: The number of results to return per page. Maximum is 250.
- name: updated_after
in: query
type: string
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 ha
- name: include_deleted
in: query
type: string
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted
entries too.
- na
# --- truncated at 32 KB (71 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/kombo/refs/heads/main/capabilities/kombo-unified-ats-api.yaml