> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kombo.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Add tag to candidate

> Add a tag to a candidate.

<Accordion title="Supported integrations" icon="list-check">
  This feature is currently available for the following integrations:

  <ul>
    <li class="flex items-center"><img src="https://storage.googleapis.com/kombo-assets/integrations/workday/icon.svg" height="16px" width="16px" class="m-0 mr-2" /><a href="/ats/connectors/workday">Workday</a></li>
    <li class="flex items-center"><img src="https://storage.googleapis.com/kombo-assets/integrations/successfactors/icon.svg" height="16px" width="16px" class="m-0 mr-2" /><a href="/ats/connectors/successfactors">SAP SuccessFactors</a></li>
    <li class="flex items-center"><img src="https://storage.googleapis.com/kombo-assets/integrations/smartrecruiters/icon.svg" height="16px" width="16px" class="m-0 mr-2" /><a href="/ats/connectors/smartrecruiters">SmartRecruiters</a></li>
    <li class="flex items-center"><img src="https://storage.googleapis.com/kombo-assets/integrations/lever/icon.svg" height="16px" width="16px" class="m-0 mr-2" /><a href="/ats/connectors/lever">Lever</a></li>
    <li class="flex items-center"><img src="https://storage.googleapis.com/kombo-assets/integrations/recruitee/icon.svg" height="16px" width="16px" class="m-0 mr-2" /><a href="/ats/connectors/recruitee">Recruitee</a></li>
    <li class="flex items-center"><img src="https://storage.googleapis.com/kombo-assets/integrations/greenhouse/icon.svg" height="16px" width="16px" class="m-0 mr-2" /><a href="/ats/connectors/greenhouse">Greenhouse (V1)</a></li>
    <li class="flex items-center"><img src="https://storage.googleapis.com/kombo-assets/integrations/greenhousev3/icon.svg" height="16px" width="16px" class="m-0 mr-2" /><a href="/ats/connectors/greenhousev3">Greenhouse (V3)</a></li>
    <li class="flex items-center"><img src="https://storage.googleapis.com/kombo-assets/integrations/teamtailor/icon.svg" height="16px" width="16px" class="m-0 mr-2" /><a href="/ats/connectors/teamtailor">Teamtailor</a></li>
    <li class="flex items-center"><img src="https://storage.googleapis.com/kombo-assets/integrations/ashby/icon.svg" height="16px" width="16px" class="m-0 mr-2" /><a href="/ats/connectors/ashby">Ashby</a></li>
    <li class="flex items-center"><img src="https://storage.googleapis.com/kombo-assets/integrations/onlyfy/icon.svg" height="16px" width="16px" class="m-0 mr-2" /><a href="/ats/connectors/onlyfy">Onlyfy</a></li>
    <li class="flex items-center"><img src="https://storage.googleapis.com/kombo-assets/integrations/workable/icon.svg" height="16px" width="16px" class="m-0 mr-2" /><a href="/ats/connectors/workable">Workable</a></li>
    <li class="flex items-center"><img src="https://storage.googleapis.com/kombo-assets/integrations/welcometothejungle/icon.svg" height="16px" width="16px" class="m-0 mr-2" /><a href="/ats/connectors/welcometothejungle">Welcome to the Jungle</a></li>
    <li class="flex items-center"><img src="https://storage.googleapis.com/kombo-assets/integrations/erecruiter/icon.svg" height="16px" width="16px" class="m-0 mr-2" /><a href="/ats/connectors/erecruiter">eRecruiter</a></li>
    <li class="flex items-center"><img src="https://storage.googleapis.com/kombo-assets/integrations/zohorecruit/icon.svg" height="16px" width="16px" class="m-0 mr-2" /><a href="/ats/connectors/zohorecruit">Zoho Recruit</a></li>
    <li class="flex items-center"><img src="https://storage.googleapis.com/kombo-assets/integrations/recruhr/icon.svg" height="16px" width="16px" class="m-0 mr-2" /><a href="/ats/connectors/recruhr">RECRU</a></li>
    <li class="flex items-center"><img src="https://storage.googleapis.com/kombo-assets/integrations/odoo/icon.svg" height="16px" width="16px" class="m-0 mr-2" /><a href="/ats/connectors/odoo">Odoo</a></li>
    <li class="flex items-center"><img src="https://storage.googleapis.com/kombo-assets/integrations/avionte/icon.svg" height="16px" width="16px" class="m-0 mr-2" /><a href="/ats/connectors/avionte">Avionté</a></li>
    <li class="flex items-center"><img src="https://storage.googleapis.com/kombo-assets/integrations/sandbox/icon.svg" height="16px" width="16px" class="m-0 mr-2" /><a href="/ats/connectors/sandbox">Kombo Sandbox</a></li>
  </ul>

  You'd like to see this feature for another integration? Please reach out!
  We're always happy to discuss extending our coverage.
</Accordion>

Kombo takes care of creating the tag if required, finding out the right ID, and appending it to the list of tags.

<Note>
  This endpoint requires the permission **Manage tags** to be enabled in [your scope config](/scopes).
</Note>

### Example Request Body

```json theme={null}
{
  "tag": {
    "name": "Excellent Fit"
  }
}
```


## OpenAPI

````yaml POST /ats/candidates/{candidate_id}/tags
openapi: 3.1.0
info:
  title: Kombo API
  version: 1.0.0
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: General
  - name: Kombo Connect
    description: >-
      Endpoints for Kombo Connect, our end-user-facing flow for setting up new
      integrations.
  - name: Unified HRIS API
    description: Unified endpoints to access all the HR concepts you might need.
  - name: Unified ATS API
    description: Unified endpoints to access all the ATS concepts you might need.
  - name: Unified ATS (Assessment & Background Check) API
    description: >-
      Unified endpoints to operate Assessments and Background Checks for many
      applicant tracking systems.
  - name: Unified LMS API
    description: Unified endpoints to access all the LMS concepts you might need.
  - name: AI Apply
    description: Endpoints for AI-powered job application features.
  - name: Custom Endpoints
    description: Custom integration-specific endpoints.
paths:
  /ats/candidates/{candidate_id}/tags:
    post:
      tags:
        - Unified ATS API
      summary: Add tag to candidate
      description: >-
        Add a tag to a candidate.


        <Accordion title="Supported integrations" icon="list-check">

        This feature is currently available for the following integrations:


        <ul>

        <li class="flex items-center"><img
          src="https://storage.googleapis.com/kombo-assets/integrations/workday/icon.svg"
          height="16px"
          width="16px"
          class="m-0 mr-2"
        /><a href="/ats/connectors/workday">Workday</a></li>

        <li class="flex items-center"><img
          src="https://storage.googleapis.com/kombo-assets/integrations/successfactors/icon.svg"
          height="16px"
          width="16px"
          class="m-0 mr-2"
        /><a href="/ats/connectors/successfactors">SAP SuccessFactors</a></li>

        <li class="flex items-center"><img
          src="https://storage.googleapis.com/kombo-assets/integrations/smartrecruiters/icon.svg"
          height="16px"
          width="16px"
          class="m-0 mr-2"
        /><a href="/ats/connectors/smartrecruiters">SmartRecruiters</a></li>

        <li class="flex items-center"><img
          src="https://storage.googleapis.com/kombo-assets/integrations/lever/icon.svg"
          height="16px"
          width="16px"
          class="m-0 mr-2"
        /><a href="/ats/connectors/lever">Lever</a></li>

        <li class="flex items-center"><img
          src="https://storage.googleapis.com/kombo-assets/integrations/recruitee/icon.svg"
          height="16px"
          width="16px"
          class="m-0 mr-2"
        /><a href="/ats/connectors/recruitee">Recruitee</a></li>

        <li class="flex items-center"><img
          src="https://storage.googleapis.com/kombo-assets/integrations/greenhouse/icon.svg"
          height="16px"
          width="16px"
          class="m-0 mr-2"
        /><a href="/ats/connectors/greenhouse">Greenhouse (V1)</a></li>

        <li class="flex items-center"><img
          src="https://storage.googleapis.com/kombo-assets/integrations/greenhousev3/icon.svg"
          height="16px"
          width="16px"
          class="m-0 mr-2"
        /><a href="/ats/connectors/greenhousev3">Greenhouse (V3)</a></li>

        <li class="flex items-center"><img
          src="https://storage.googleapis.com/kombo-assets/integrations/teamtailor/icon.svg"
          height="16px"
          width="16px"
          class="m-0 mr-2"
        /><a href="/ats/connectors/teamtailor">Teamtailor</a></li>

        <li class="flex items-center"><img
          src="https://storage.googleapis.com/kombo-assets/integrations/ashby/icon.svg"
          height="16px"
          width="16px"
          class="m-0 mr-2"
        /><a href="/ats/connectors/ashby">Ashby</a></li>

        <li class="flex items-center"><img
          src="https://storage.googleapis.com/kombo-assets/integrations/onlyfy/icon.svg"
          height="16px"
          width="16px"
          class="m-0 mr-2"
        /><a href="/ats/connectors/onlyfy">Onlyfy</a></li>

        <li class="flex items-center"><img
          src="https://storage.googleapis.com/kombo-assets/integrations/workable/icon.svg"
          height="16px"
          width="16px"
          class="m-0 mr-2"
        /><a href="/ats/connectors/workable">Workable</a></li>

        <li class="flex items-center"><img
          src="https://storage.googleapis.com/kombo-assets/integrations/welcometothejungle/icon.svg"
          height="16px"
          width="16px"
          class="m-0 mr-2"
        /><a href="/ats/connectors/welcometothejungle">Welcome to the
        Jungle</a></li>

        <li class="flex items-center"><img
          src="https://storage.googleapis.com/kombo-assets/integrations/erecruiter/icon.svg"
          height="16px"
          width="16px"
          class="m-0 mr-2"
        /><a href="/ats/connectors/erecruiter">eRecruiter</a></li>

        <li class="flex items-center"><img
          src="https://storage.googleapis.com/kombo-assets/integrations/zohorecruit/icon.svg"
          height="16px"
          width="16px"
          class="m-0 mr-2"
        /><a href="/ats/connectors/zohorecruit">Zoho Recruit</a></li>

        <li class="flex items-center"><img
          src="https://storage.googleapis.com/kombo-assets/integrations/recruhr/icon.svg"
          height="16px"
          width="16px"
          class="m-0 mr-2"
        /><a href="/ats/connectors/recruhr">RECRU</a></li>

        <li class="flex items-center"><img
          src="https://storage.googleapis.com/kombo-assets/integrations/odoo/icon.svg"
          height="16px"
          width="16px"
          class="m-0 mr-2"
        /><a href="/ats/connectors/odoo">Odoo</a></li>

        <li class="flex items-center"><img
          src="https://storage.googleapis.com/kombo-assets/integrations/avionte/icon.svg"
          height="16px"
          width="16px"
          class="m-0 mr-2"
        /><a href="/ats/connectors/avionte">Avionté</a></li>

        <li class="flex items-center"><img
          src="https://storage.googleapis.com/kombo-assets/integrations/sandbox/icon.svg"
          height="16px"
          width="16px"
          class="m-0 mr-2"
        /><a href="/ats/connectors/sandbox">Kombo Sandbox</a></li>

        </ul>


        You'd like to see this feature for another integration? Please reach
        out!

        We're always happy to discuss extending our coverage.

        </Accordion>



        Kombo takes care of creating the tag if required, finding out the right
        ID, and appending it to the list of tags.


        <Note>
          This endpoint requires the permission **Manage tags** to be enabled in [your scope config](/scopes).
        </Note>


        ### Example Request Body


        ```json

        {
          "tag": {
            "name": "Excellent Fit"
          }
        }

        ```
      operationId: PostAtsCandidatesCandidateIdTags
      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: candidate_id
          in: path
          required: true
          description: The Kombo ID of the candidate you want to add the tag to.
          schema:
            $ref: >-
              #/components/schemas/PostAtsCandidatesCandidateIdTagsParameterCandidateId
          examples:
            example1:
              value: 8Xi6iZrwusZqJmDGXs49GBmJ
      requestBody:
        description: POST /ats/candidates/:candidate_id/tags Request body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostAtsCandidatesCandidateIdTagsRequestBody'
            examples:
              example1:
                value:
                  tag:
                    name: Excellent Fit
      responses:
        '200':
          description: POST /ats/candidates/:candidate_id/tags Positive response
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/PostAtsCandidatesCandidateIdTagsPositiveResponse
              examples:
                example1:
                  value:
                    status: success
                    data: {}
                    warnings:
                      - message: This is an example warning!
        default:
          $ref: '#/components/responses/ErrorResponseATS'
      x-codeSamples:
        - lang: python
          label: PostAtsCandidatesCandidateIdTags
          source: |-
            from kombo import Kombo


            with Kombo(
                integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
                api_key="<YOUR_BEARER_TOKEN_HERE>",
            ) as k_client:

                res = k_client.ats.add_candidate_tag(candidate_id="8Xi6iZrwusZqJmDGXs49GBmJ", tag={
                    "name": "Excellent Fit",
                })

                # Handle response
                print(res)
        - lang: typescript
          label: PostAtsCandidatesCandidateIdTags
          source: |-
            import { Kombo } from "@kombo-api/sdk";

            const kombo = new Kombo({
              integration_id: "workday:HWUTwvyx2wLoSUHphiWVrp28",
              api_key: "<YOUR_BEARER_TOKEN_HERE>",
            });

            async function run() {
              const result = await kombo.ats.addCandidateTag({
                candidate_id: "8Xi6iZrwusZqJmDGXs49GBmJ",
                body: {
                  tag: {
                    name: "Excellent Fit",
                  },
                },
              });

              console.log(result);
            }

            run();
        - lang: ruby
          label: PostAtsCandidatesCandidateIdTags
          source: >-
            require 'kombo'


            Models = ::Kombo::Models

            s = ::Kombo::Kombo.new(
              integration_id: 'workday:HWUTwvyx2wLoSUHphiWVrp28',
              security: Models::Shared::Security.new(
                api_key: '<YOUR_BEARER_TOKEN_HERE>'
              )
            )

            res = s.ats.add_candidate_tag(candidate_id:
            '8Xi6iZrwusZqJmDGXs49GBmJ', body:
            Models::Shared::PostAtsCandidatesCandidateIdTagsRequestBody.new(
              tag: Models::Shared::PostAtsCandidatesCandidateIdTagsRequestBodyTag.new(
                name: 'Excellent Fit'
              )
            ))


            unless
            res.post_ats_candidates_candidate_id_tags_positive_response.nil?
              # handle response
            end
components:
  schemas:
    PostAtsCandidatesCandidateIdTagsParameterCandidateId:
      type: string
      description: The Kombo ID of the candidate you want to add the tag to.
    PostAtsCandidatesCandidateIdTagsRequestBody:
      type: object
      properties:
        tag:
          type: object
          properties:
            name:
              type: string
              minLength: 1
              description: >-
                The name of the tag you would like to add. We will automatically
                find the matching ID of the tag in the system.
          required:
            - name
        remote_fields:
          type: object
          properties:
            greenhouse:
              type: object
              properties:
                post_headers:
                  type: object
                  properties:
                    On-Behalf-Of:
                      type:
                        - string
                        - 'null'
                      description: >-
                        ID of the the user that will show up as having performed
                        the action in Greenhouse. We already pass a value by
                        default, but you can use this to override it.
                  description: Headers we will pass with `POST` requests to Greenhouse.
              description: Fields specific to Greenhouse.
            workable:
              type: object
              properties:
                on_behalf_of_user_remote_id:
                  type: string
                  description: >-
                    The remote ID of the user that will be displayed in the UI
                    as the one that performed the action.
              description: Workable specific remote fields for ATS actions.
          description: Additional fields that we will pass through to specific ATS systems.
      required:
        - tag
    PostAtsCandidatesCandidateIdTagsPositiveResponse:
      type: object
      properties:
        status:
          type: string
          const: success
        data:
          type: object
          examples:
            - {}
        warnings:
          type: array
          items:
            type: object
            properties:
              message:
                type: string
            required:
              - message
          description: >-
            These are the interaction warnings that are shown in the dashboard.
            They are meant to provide debug information to you. We recommend
            logging them to the console.
      required:
        - status
        - data
        - warnings
  responses:
    ErrorResponseATS:
      description: The standard error response with the error codes for the ATS use case.
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: string
                enum:
                  - error
              error:
                type: object
                properties:
                  code:
                    type:
                      - string
                      - 'null'
                    enum:
                      - PLATFORM.RATE_LIMIT_EXCEEDED
                      - PLATFORM.CONCURRENCY_LIMIT_EXCEEDED
                      - PLATFORM.INTEGRATION_NOT_FOUND
                      - PLATFORM.INPUT_INVALID
                      - PLATFORM.UNKNOWN_ERROR
                      - PLATFORM.IP_NOT_WHITELISTED
                      - PLATFORM.AUTHENTICATION_INVALID
                      - PLATFORM.TASK_TIMED_OUT
                      - INTEGRATION.PERMISSION_MISSING
                      - INTEGRATION.AUTHENTICATION_INVALID
                      - INTEGRATION.QA_FAILED
                      - INTEGRATION.SETUP_SYNC_PENDING
                      - INTEGRATION.SETUP_INCOMPLETE
                      - INTEGRATION.INACTIVE
                      - INTEGRATION.MODEL_NOT_AVAILABLE
                      - INTEGRATION.MODEL_DISABLED
                      - INTEGRATION.ACTION_NOT_AVAILABLE
                      - INTEGRATION.ACTION_DISABLED
                      - REMOTE.SERVICE_UNAVAILABLE
                      - REMOTE.RATE_LIMIT_EXCEEDED
                      - REMOTE.INPUT_INVALID
                      - REMOTE.UNKNOWN_HTTP_ERROR
                      - ATS.JOB_CLOSED
                      - ATS.APPLICATION_ALREADY_EXISTS
                    example: ATS.JOB_CLOSED
                    description: >-
                      Some errors include an error code that can be used to
                      identify their cause. See the [Error Handling
                      Docs](https://docs.kombo.dev/guides/errors) for more
                      information. For your error handling logic please use the
                      error `code` instead of other properties (e.g. message,
                      http status code, ...).
                  title:
                    type:
                      - string
                      - 'null'
                    description: A static, human-readable label.
                  message:
                    type: string
                    description: >-
                      A dynamic, detailed description of what went wrong in this
                      specific instance.
                  log_url:
                    type:
                      - string
                      - 'null'
                    format: uri
                    description: >-
                      The log page in the Kombo UI lists every interaction with
                      full details. If you need assistance, share that link with
                      our support team.
                required:
                  - code
                  - title
                  - message
                  - log_url
                description: Error details with structured code for programmatic handling.
            required:
              - status
              - error
          examples:
            Error Response:
              description: >-
                When building error handling logic, always use the `code` field
                to identify specific error types programmatically. See the
                complete list of error codes in the
                [docs](https://docs.kombo.dev/guides/errors).
              value:
                status: error
                error:
                  code: INTEGRATION.MODEL_NOT_AVAILABLE
                  title: >-
                    This data model isn't supported for the selected
                    integration.
                  message: >-
                    The "employees" model is not yet available for Greenhouse.
                    Please reach out to Kombo if you need this functionality.
                  log_url: https://app.kombo.dev/my-prod/logs?interactionId=123456
            Minimal Error Response:
              description: >-
                The "message" is always required while other fields can also be
                `null`. See the [docs](https://docs.kombo.dev/guides/errors) for
                more information.
              value:
                status: error
                error:
                  code: null
                  title: null
                  message: The message is always in the response.
                  log_url: null
  securitySchemes:
    ApiKey:
      type: http
      scheme: bearer
      description: >-
        Create an API key on the [Secrets](https://app.kombo.dev/secrets) page
        in the Kombo dashboard.

````