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

# Link/unlink the representative to a beneficial owner

> Links the case's Authorized Representative to an existing beneficial owner — owner_id null clears the link back to independent manual entry. The link is literal identity sharing: whichever side already carries a KYC verification keeps it, the other side's applicant_id is repointed to match, and the representative section's identity fields are refreshed from the owner's current data. Calling again (same or a different owner_id) is safe and just re-resolves the link.



## OpenAPI

````yaml https://api.dataspike.io/openapi/kyb/public.json put /api/v4/kyb/widget/{publicId}/representative/link
openapi: 3.1.0
info:
  description: Know Your Business (KYB) — case creation and the embedded onboarding widget.
  title: Dataspike KYB API
  version: '1.0'
servers: []
security: []
paths:
  /api/v4/kyb/widget/{publicId}/representative/link:
    put:
      tags:
        - KYB Widget
      summary: Link/unlink the representative to a beneficial owner
      description: >-
        Links the case's Authorized Representative to an existing beneficial
        owner — owner_id null clears the link back to independent manual entry.
        The link is literal identity sharing: whichever side already carries a
        KYC verification keeps it, the other side's applicant_id is repointed to
        match, and the representative section's identity fields are refreshed
        from the owner's current data. Calling again (same or a different
        owner_id) is safe and just re-resolves the link.
      operationId: PUT_/api/v4/kyb/widget/:publicId/representative/link
      parameters:
        - description: KYB case public id.
          in: path
          name: publicId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LinkRepresentativeRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/LinkRepresentativeRequest'
        description: Request body for kyb.LinkRepresentativeRequest
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LinkRepresentativeResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/LinkRepresentativeResponse'
          description: Link state resolved.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrInvalidBody'
            application/xml:
              schema:
                $ref: '#/components/schemas/ErrInvalidBody'
          description: Invalid request body.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrCaseNotFound'
            application/xml:
              schema:
                $ref: '#/components/schemas/ErrCaseNotFound'
          description: Case or owner not found (case_not_found / owner_not_found).
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrCaseLocked'
            application/xml:
              schema:
                $ref: '#/components/schemas/ErrCaseLocked'
          description: >-
            Case is locked/mid-remediation (case_locked / not_requested), the
            owner has no applicant_id yet (owner_not_reconciled), or both sides
            already carry their own KYC verification
            (representative_link_conflict).
components:
  schemas:
    LinkRepresentativeRequest:
      description: LinkRepresentativeRequest schema
      properties:
        owner_id:
          nullable: true
          type: string
      type: object
    LinkRepresentativeResponse:
      description: LinkRepresentativeResponse schema
      properties:
        linked:
          type: boolean
      type: object
    ErrInvalidBody:
      description: ErrInvalidBody schema
      example:
        code: invalid_body
        message: Invalid request body
      properties:
        code:
          example: email_otp_expired
          type: string
        message:
          example: OTP has expired
          type: string
        param:
          nullable: true
          type: string
      type: object
    ErrCaseNotFound:
      description: ErrCaseNotFound schema
      example:
        code: case_not_found
        message: Case not found
      properties:
        code:
          example: email_otp_expired
          type: string
        message:
          example: OTP has expired
          type: string
        param:
          nullable: true
          type: string
      type: object
    ErrCaseLocked:
      description: ErrCaseLocked schema
      example:
        code: case_locked
        message: Case is locked and cannot be modified
      properties:
        code:
          example: email_otp_expired
          type: string
        message:
          example: OTP has expired
          type: string
        param:
          nullable: true
          type: string
      type: object

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.