> ## 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.

# Create connection link

> Generate a unique link that allows your user to enter the embedded Kombo Connect flow.

> Check out [our full guide](/connect/embedded-flow) for more details about implementing the connection flow into your app.

> Kombo will not deduplicate integrations for you that are created with this endpoint. You are responsible for keeping track of integrations in your system and prevent customers from connecting the same tool again. Use the [reconnection link](/v1/post-integrations-integration-id-relink) endpoint if you want a customer to update their credentials.

### Example Request Body

```json theme={null}
{
  "end_user_email": "test@example.com",
  "end_user_organization_name": "Test Inc.",
  "integration_category": "HRIS",
  "integration_tool": "personio",
  "end_user_origin_id": "123",
  "language": "en",
  "link_type": "EMBEDDED"
}
```


## OpenAPI

````yaml POST /connect/create-link
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:
  /connect/create-link:
    post:
      tags:
        - Kombo Connect
      summary: Create connection link
      description: >-
        Generate a unique link that allows your user to enter the embedded Kombo
        Connect flow.


        > Check out [our full guide](/connect/embedded-flow) for more details
        about implementing the connection flow into your app.


        > Kombo will not deduplicate integrations for you that are created with
        this endpoint. You are responsible for keeping track of integrations in
        your system and prevent customers from connecting the same tool again.
        Use the [reconnection link](/v1/post-integrations-integration-id-relink)
        endpoint if you want a customer to update their credentials.


        ### Example Request Body


        ```json

        {
          "end_user_email": "test@example.com",
          "end_user_organization_name": "Test Inc.",
          "integration_category": "HRIS",
          "integration_tool": "personio",
          "end_user_origin_id": "123",
          "language": "en",
          "link_type": "EMBEDDED"
        }

        ```
      operationId: PostConnectCreateLink
      requestBody:
        description: POST /connect/create-link Request body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostConnectCreateLinkRequestBody'
            examples:
              example1:
                value:
                  end_user_email: test@example.com
                  end_user_organization_name: Test Inc.
                  integration_category: HRIS
                  integration_tool: personio
                  end_user_origin_id: '123'
                  language: en
                  link_type: EMBEDDED
      responses:
        '200':
          description: POST /connect/create-link Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostConnectCreateLinkPositiveResponse'
              examples:
                example1:
                  value:
                    status: success
                    data:
                      link: >-
                        https://connect.kombo.dev/v1?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.SWYgeW91IGFyZSByZWFkaW5nIHRoaXMsIHdlIHdvdWxkIGxpa2UgdG8gbGV0IHlvdSBrbm93IHRoYXQgd2UgYXJlIGhpcmluZyBwZW9wbGUgbGlrZSB5b3UgOikuIFJlYWNoIG91dCB0byBhbGV4QGtvbWJvLmRldiB0byBnZXQgaW4gY29udGFjdCBhbmQgdGVsbCBoaW0geW91IGNvbWUgZnJvbSB0aGUgSldUIDsp._hhX5YTtHfLn9ZC806dZceRn2whzxHyrhft1ONzNgOE
        default:
          $ref: '#/components/responses/ErrorResponseGeneral'
      x-codeSamples:
        - lang: python
          label: PostConnectCreateLink
          source: |-
            from kombo import Kombo


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

                res = k_client.connect.create_connection_link(end_user_email="test@example.com", end_user_organization_name="Test Inc.", end_user_origin_id="123", integration_category="HRIS", integration_tool="personio", language="en", enable_filtering=False, enable_field_mapping=False, link_type="EMBEDDED")

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

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

            async function run() {
              const result = await kombo.connect.createConnectionLink({
                end_user_email: "test@example.com",
                end_user_organization_name: "Test Inc.",
                end_user_origin_id: "123",
                integration_tool: "personio",
              });

              console.log(result);
            }

            run();
        - lang: ruby
          label: PostConnectCreateLink
          source: |-
            require 'kombo'

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

            req = Models::Shared::PostConnectCreateLinkRequestBody.new(
              end_user_email: 'test@example.com',
              end_user_organization_name: 'Test Inc.',
              end_user_origin_id: '123',
              integration_tool: Models::Shared::IntegrationTool::PERSONIO
            )
            res = s.connect.create_connection_link(request: req)

            unless res.post_connect_create_link_positive_response.nil?
              # handle response
            end
components:
  schemas:
    PostConnectCreateLinkRequestBody:
      type: object
      properties:
        end_user_email:
          type: string
          description: The email of the user this link is meant for.
          format: email
        end_user_organization_name:
          type: string
          minLength: 1
          description: The name of the user's organization.
        end_user_origin_id:
          type:
            - string
            - 'null'
          minLength: 1
          description: The id the user/organization has in your own database.
        remote_environment:
          type:
            - string
            - 'null'
          description: >-
            If the tool you want to connect offers different environments, you
            can specify which one you want to connect to here. If you don't
            specify this, we'll assume you want to use the production
            environment. Note that this can only be used if you've also
            specified a tool through `integration_tool`.
        integration_category:
          type: string
          enum:
            - HRIS
            - ATS
            - ASSESSMENT
            - LMS
          default: HRIS
          description: Category of the integration you want your customer to create.
        integration_tool:
          type:
            - string
            - 'null'
          enum:
            - workday
            - successfactors
            - smartrecruiters
            - factorial
            - oraclerecruiting
            - lever
            - icims
            - cornerstonetalentlink
            - recruitee
            - recruiterflow
            - greenhouse
            - greenhousev3
            - greenhousejobboard
            - teamtailor
            - teamtailorjobboards
            - ashby
            - talentsoft
            - talentsoftcustomer
            - concludis
            - talention
            - piloga
            - onlyfy
            - personio
            - ukgpro
            - ukgready
            - adpworkforcenow
            - taleo
            - rexx
            - afas
            - bamboohr
            - bullhorn4salesforce
            - bullhorn
            - bullhornlogin
            - workable
            - jobvite
            - fountain
            - softgarden
            - softgardenpartner
            - pinpoint
            - welcometothejungle
            - dvinci
            - dvinciadmin
            - join
            - sagehr
            - traffit
            - erecruiter
            - abacusumantis
            - umantis
            - jobylon
            - taleez
            - hrworks
            - otys
            - zohorecruit
            - ceipal
            - eploy
            - jobdiva
            - careerplug
            - perview
            - eightfold
            - paylocity
            - paycor
            - avature
            - apploi
            - phenom
            - paradox
            - heyrecruit
            - recruhr
            - recruitcrm
            - jazzhr
            - bite
            - brassring
            - homerun
            - mysolution
            - carerix
            - hroffice
            - talentclue
            - inrecruiting
            - jobadder
            - ubeeo
            - connexys
            - hr4you
            - cornerstoneondemand
            - zvooverecruit
            - odoo
            - comeet
            - compleetpitcher
            - compleetpersy
            - compleet
            - gem
            - laura
            - covetorest
            - coveto
            - mercury
            - crelate
            - manatal
            - avionte
            - mhmhr
            - asymbl
            - breezyhr
            - flatchr
            - dayforce
            - digitalrecruiters
            - applicantstack
            - reachmee
            - talentadore
            - sandbox
            - guidecom
            - spott
            - logicmelon
            - loxo
            - kula
            - workdaycustomreport
            - workdaycustomreportsftp
            - ukgprowfm
            - payfitcustomer
            - payfitpartner
            - payfit
            - employmenthero
            - fourth
            - kenjo
            - heavenhr
            - hibob
            - cezannehr
            - entraid
            - azuread
            - googleworkspace
            - nmbrs
            - deel
            - remotecom
            - iriscascade
            - okta
            - sagepeople
            - humaans
            - eurecia
            - oraclehcm
            - officient
            - sesamehr
            - charliehr
            - abacus
            - zohopeople
            - gusto
            - breathehr
            - catalystone
            - mirus
            - alexishr
            - simployer
            - peple
            - youserve
            - hansalog
            - lattice
            - latticetalent
            - hoorayhr
            - trinet
            - trinetpeo
            - namely
            - paycom
            - insperity
            - paychex
            - rippling
            - sapling
            - peoplehr
            - lucca
            - zelt
            - planday
            - boondmanager
            - haileyhr
            - oysterhr
            - kiwihr
            - square
            - perbilityhelix
            - leapsome
            - loket
            - workforcecom
            - peoplefirst
            - sdworx
            - itrent
            - absenceio
            - a3innuvanomina
            - scim
            - datevlauds
            - datevhr
            - datev
            - datevlug
            - sympa
            - youforce
            - nibelis
            - peoplexd
            - sftp
            - sftpfetch
            - 360learning
            - talentlms
            - udemy
            - linkedinlearning
            - moodle
          description: Pre-define a tool this integration link can be used for.
        language:
          type:
            - string
            - 'null'
          enum:
            - en
            - de
            - fr
            - it
            - es
          default: en
          description: Language of the connection flow UI.
        scope_config_id:
          type:
            - string
            - 'null'
          description: >-
            Specify a scope config that should be used for this integration.
            This is an advanced feature, only use it if you know what you're
            doing!
        enable_filtering:
          type: boolean
          default: false
          description: >-
            Enable the [filtering
            feature](https://docs.kombo.dev/other/filtering) for the
            integration. HRIS only.
        enable_field_mapping:
          type: boolean
          default: false
          description: >-
            Enable the [field mapping
            feature](https://docs.kombo.dev/hris/features/setup-flow/introduction#field-mapping)
            for this integration.
        link_type:
          type: string
          enum:
            - EMBEDDED
            - MAGIC_LINK
          default: EMBEDDED
          description: >-
            The type of link you want to create. `EMBEDDED` is for the [embedded
            flow](../guides/connect/embedded-flow) using the Kombo Connect SDK
            (these links are valid for 1 hour) and `MAGIC_LINK` is for [magic
            links](../guides/connect/magic-links) which you send out manually to
            customers (there are valid for 1 year).


            This defaults to `EMBEDDED`, which is our recommended method of
            implementing the connection flow for a seamless user experience.
      required:
        - end_user_email
        - end_user_organization_name
    PostConnectCreateLinkPositiveResponse:
      type: object
      properties:
        status:
          type: string
          const: success
        data:
          type: object
          properties:
            link:
              type: string
              format: uri
          required:
            - link
          examples:
            - link: >-
                https://connect.kombo.dev/v1?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.SWYgeW91IGFyZSByZWFkaW5nIHRoaXMsIHdlIHdvdWxkIGxpa2UgdG8gbGV0IHlvdSBrbm93IHRoYXQgd2UgYXJlIGhpcmluZyBwZW9wbGUgbGlrZSB5b3UgOikuIFJlYWNoIG91dCB0byBhbGV4QGtvbWJvLmRldiB0byBnZXQgaW4gY29udGFjdCBhbmQgdGVsbCBoaW0geW91IGNvbWUgZnJvbSB0aGUgSldUIDsp._hhX5YTtHfLn9ZC806dZceRn2whzxHyrhft1ONzNgOE
      required:
        - status
        - data
  responses:
    ErrorResponseGeneral:
      description: The standard error response with just the platform error codes.
      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
                    example: PLATFORM.RATE_LIMIT_EXCEEDED
                    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.

````