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

# Create control persons

> Create one or more control persons for a customer



## OpenAPI

````yaml https://api.conduit.financial/api-docs/2024-12-01/openapi-external.yaml?mode=dynamic post /customers/{id}/control-persons
openapi: 3.0.2
info:
  version: '2024-12-01'
  title: Conduit API
  description: The Conduit Financial API
  contact:
    name: Conduit Support
    email: conduit@conduit.fi
servers:
  - url: https://api.conduit.financial
    description: The Conduit API live environment
  - url: https://api.sandbox.conduit.financial
    description: The Conduit API Sandbox environment
security: []
tags:
  - name: Accounts
    description: |
      Endpoints dealing with accounts.
  - name: Counterparties
    description: |
      Endpoints dealing with counterparties information. 
  - name: Quotes
    description: |
      Endpoints dealing with quotes.
  - name: Transactions
    description: |
      Endpoints dealing with transactions.
  - name: Documents
    description: |
      Endpoints dealing with documents.
  - name: Customers
    description: |
      Endpoints dealing with customer information. 
paths:
  /customers/{id}/control-persons:
    post:
      tags:
        - Customers
      summary: Create control persons
      description: Create one or more control persons for a customer
      operationId: createControlPersons
      parameters:
        - schema:
            $ref: '#/components/schemas/CustomerId'
          required: true
          description: A valid Customer ID
          name: id
          in: path
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateControlPersonRequest'
      responses:
        '201':
          description: Control persons created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateControlPersonsResponse'
        '400':
          description: Input validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
        '401':
          description: Authentication error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
        '403':
          description: Authorization error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponse'
        '415':
          description: Unsupported media type error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnsupportedMediaTypeErrorResponse'
        '429':
          description: Throttling error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorResponse'
        '500':
          description: Internal Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerErrorResponse'
      security:
        - apiKey: []
          apiSecret: []
components:
  schemas:
    CustomerId:
      type: string
      pattern: ^cus_[a-zA-Z0-9]{27}$
      description: A valid Customer ID
      example: cus_2ofTA13AD0xBtbEvBl20aEb1hEu
    CreateControlPersonRequest:
      type: object
      properties:
        controlPersons:
          type: array
          items:
            $ref: '#/components/schemas/ControlPerson'
          minItems: 1
      required:
        - controlPersons
      description: Request to create a control person
      example:
        controlPersons:
          - firstName: John
            lastName: Doe
            middleName: Michael
            email: john.doe@example.com
            address:
              streetLine1: 123 Main St
              streetLine2: Suite 100
              city: New York
              state: NY
              postalCode: '10001'
              country: USA
            nationality: USA
            sharesAllocated: 500
            ownershipPercentage: 35.5
            birthDate: '2000-01-01'
            gender: male
            phone: '+1234567890'
            title: CEO
            isEntity: false
            ssn: 123-45-6789
            immigrationStatus: citizen
            numberType: ssn
            taxResidencyCountry: USA
            regulatoryAffiliations:
              - regulatoryAffiliation: FINRA
            roles:
              - name: beneficial_owner
                startDate: '2021-01-01'
                endDate: '2025-01-01'
                current: true
            identityInfo:
              documentCountry: USA
              documentType: passport
              documentNumber: '1234567890'
              documentIssueDate: '2021-01-01'
              documentExpiryDate: '2025-01-01'
          - firstName: Marie
            lastName: Dubois
            middleName: Claire
            email: marie.dubois@example.com
            address:
              streetLine1: 15 Rue de la Paix
              streetLine2: Apt 4B
              city: Paris
              state: Île-de-France
              postalCode: '75001'
              country: FRA
            nationality: FRA
            sharesAllocated: 750
            ownershipPercentage: 64.25
            birthDate: '1988-03-15'
            gender: female
            phone: '+33123456789'
            title: CTO
            isEntity: false
            taxResidencyCountry: FRA
            regulatoryAffiliations:
              - regulatoryAffiliation: ACPR
            roles:
              - name: beneficial_owner
                startDate: '2020-01-01'
                endDate: '2030-01-01'
                current: true
            identityInfo:
              documentCountry: FRA
              documentType: passport
              documentNumber: FR123456789
              documentIssueDate: '2020-01-01'
              documentExpiryDate: '2030-01-01'
    CreateControlPersonsResponse:
      type: object
      properties:
        success:
          type: boolean
        customerId:
          $ref: '#/components/schemas/CustomerId'
        controlPersons:
          type: array
          items:
            $ref: '#/components/schemas/ControlPersonResponse'
      required:
        - success
        - controlPersons
      description: Control person creation response
      example:
        success: true
        customerId: cus_2ofTA13AD0xBtbEvBl20aEb1hEu
        controlPersons:
          - id: ctl_2ofTA13AD0xBtbEvBl20aEb1hEu
            firstName: John
            lastName: Doe
            middleName: Michael
            email: john.doe@example.com
            birthDate: '2000-01-01'
            address:
              streetLine1: 123 Main St
              streetLine2: Suite 100
              city: New York
              state: NY
              postalCode: '10001'
              country: USA
            nationality: USA
            gender: male
            phone: '+1234567890'
            title: CEO
            isEntity: false
            immigrationStatus: citizen
            numberType: ssn
            taxResidencyCountry: USA
            regulatoryAffiliations:
              - regulatoryAffiliation: FINRA
            sharesAllocated: 1500
            ownershipPercentage: 100
            referenceId: ref_123
            roles:
              - name: beneficial_owner
                startDate: '2021-01-01'
                endDate: '2025-01-01'
                current: true
            identityInfo:
              documentCountry: USA
              documentType: passport
              documentNumber: '1234567890'
              documentIssueDate: '2021-01-01'
              documentExpiryDate: '2025-01-01'
    BadRequestErrorResponse:
      type: object
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              detail:
                type: string
              code:
                type: string
            required:
              - detail
              - code
      required:
        - errors
    ForbiddenErrorResponse:
      type: object
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              detail:
                type: string
              code:
                type: string
            required:
              - detail
              - code
      required:
        - errors
    UnsupportedMediaTypeErrorResponse:
      type: object
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              detail:
                type: string
              code:
                type: string
            required:
              - detail
              - code
      required:
        - errors
    TooManyRequestsErrorResponse:
      type: object
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              detail:
                type: string
              code:
                type: string
            required:
              - detail
              - code
      required:
        - errors
    InternalServerErrorResponse:
      type: object
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              detail:
                type: string
              code:
                type: string
            required:
              - detail
              - code
      required:
        - errors
    ControlPerson:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/ControlPersonId'
        firstName:
          type: string
        lastName:
          type: string
        middleName:
          type: string
        email:
          type: string
          format: email
        roles:
          type: array
          items:
            type: object
            properties:
              name:
                $ref: '#/components/schemas/ControlPersonRole'
              startDate:
                type: string
              endDate:
                type: string
              current:
                type: boolean
            required:
              - name
        sharesAllocated:
          type: number
          minimum: 0
        ownershipPercentage:
          type: number
        referenceId:
          type: string
        birthDate:
          type: string
        address:
          $ref: '#/components/schemas/Address'
        title:
          type: string
        isEntity:
          type: boolean
        ssn:
          type: string
        immigrationStatus:
          type: string
        numberType:
          type: string
        taxResidencyCountry:
          type: string
          minLength: 3
          maxLength: 3
          description: The ISO 3166-1 alpha-3 country code (e.g., USA, GBR, FRA)
        regulatoryAffiliations:
          type: array
          items:
            type: object
            properties:
              regulatoryAffiliation:
                type: string
            required:
              - regulatoryAffiliation
        phone:
          type: string
          pattern: ^\+[1-9]\d{1,14}$
        nationality:
          type: string
          minLength: 3
          maxLength: 3
          pattern: ^[A-Z]{3}$
        gender:
          type: string
          enum:
            - male
            - female
            - other
        identityInfo:
          type: object
          properties:
            documentCountry:
              type: string
              minLength: 3
              maxLength: 3
            state:
              type: string
            documentType:
              type: string
              enum:
                - passport
                - driver_license
                - national_id
                - proof_of_address
                - selfie
                - selfie_image
                - selfie_video
                - pan_card
                - voter_id_card
                - resident_card
                - ghana_card
                - ghana_ssnit_card
                - kenya_alien_card
                - bank_statement
                - power_of_attorney
                - terms_of_service
                - visa
                - other
            documentNumber:
              type: string
            documentIssueDate:
              type: string
            documentExpiryDate:
              type: string
          required:
            - documentCountry
            - documentType
            - documentNumber
            - documentIssueDate
        isPoliticallyExposed:
          type: boolean
        reasonForPoliticallyExposed:
          type: string
        documents:
          type: array
          items:
            $ref: '#/components/schemas/Document'
      required:
        - firstName
        - lastName
        - email
        - roles
        - sharesAllocated
        - ownershipPercentage
        - birthDate
        - address
        - nationality
        - identityInfo
      description: Control person information. SSN is required for US-based control persons
      example:
        firstName: John
        lastName: Doe
        middleName: Michael
        email: john.doe@example.com
        birthDate: '2000-01-01'
        address:
          streetLine1: 123 Main St
          streetLine2: Suite 100
          city: New York
          state: NY
          postalCode: '10001'
          country: USA
        identityInfo:
          documentCountry: USA
          documentType: passport
          documentNumber: '1234567890'
          documentIssueDate: '2021-01-01'
          documentExpiryDate: '2025-01-01'
        referenceId: ref_123
        nationality: USA
        sharesAllocated: 1000
        ownershipPercentage: 25.75
        gender: male
        phone: '+1234567890'
        title: CEO
        isEntity: false
        ssn: 123-45-6789
        immigrationStatus: citizen
        numberType: ssn
        taxResidencyCountry: USA
        regulatoryAffiliations:
          - regulatoryAffiliation: FINRA
        roles:
          - name: beneficial_owner
            startDate: '2021-01-01'
            endDate: '2025-01-01'
            current: true
        documents:
          - documentId: doc_2ofTA13AD0xBtbEvBl20aEb1hEu
            documentName: Passport
            documentPurpose: kyc
            documentType: passport
            createdAt: '2021-01-01T00:00:00.000Z'
            updatedAt: '2021-01-01T00:00:00.000Z'
        isPoliticallyExposed: false
        reasonForPoliticallyExposed: None
    ControlPersonResponse:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/ControlPersonId'
        firstName:
          type: string
        lastName:
          type: string
        middleName:
          type: string
        email:
          type: string
          format: email
        roles:
          type: array
          items:
            type: object
            properties:
              name:
                $ref: '#/components/schemas/ControlPersonRole'
              startDate:
                type: string
              endDate:
                type: string
              current:
                type: boolean
            required:
              - name
        sharesAllocated:
          type: number
          minimum: 0
        ownershipPercentage:
          type: number
        referenceId:
          type: string
        birthDate:
          type: string
        address:
          $ref: '#/components/schemas/Address'
        title:
          type: string
        isEntity:
          type: boolean
        immigrationStatus:
          type: string
        numberType:
          type: string
        taxResidencyCountry:
          type: string
          minLength: 3
          maxLength: 3
          description: The ISO 3166-1 alpha-3 country code (e.g., USA, GBR, FRA)
        regulatoryAffiliations:
          type: array
          items:
            type: object
            properties:
              regulatoryAffiliation:
                type: string
            required:
              - regulatoryAffiliation
        phone:
          type: string
          pattern: ^\+[1-9]\d{1,14}$
        nationality:
          type: string
          minLength: 3
          maxLength: 3
          pattern: ^[A-Z]{3}$
        gender:
          type: string
          enum:
            - male
            - female
            - other
        identityInfo:
          type: object
          properties:
            documentCountry:
              type: string
              minLength: 3
              maxLength: 3
            state:
              type: string
            documentType:
              type: string
              enum:
                - passport
                - driver_license
                - national_id
                - proof_of_address
                - selfie
                - selfie_image
                - selfie_video
                - pan_card
                - voter_id_card
                - resident_card
                - ghana_card
                - ghana_ssnit_card
                - kenya_alien_card
                - bank_statement
                - power_of_attorney
                - terms_of_service
                - visa
                - other
            documentNumber:
              type: string
            documentIssueDate:
              type: string
            documentExpiryDate:
              type: string
          required:
            - documentCountry
            - documentType
            - documentNumber
            - documentIssueDate
        isPoliticallyExposed:
          type: boolean
        reasonForPoliticallyExposed:
          type: string
        documents:
          type: array
          items:
            $ref: '#/components/schemas/Document'
      required:
        - firstName
        - lastName
        - email
        - roles
        - sharesAllocated
        - ownershipPercentage
        - birthDate
        - address
        - nationality
        - identityInfo
      description: Control person response (SSN excluded for security)
      example:
        id: ctl_2ofTA13AD0xBtbEvBl20aEb1hEu
        firstName: John
        lastName: Doe
        middleName: Michael
        email: john.doe@example.com
        birthDate: '2000-01-01'
        address:
          streetLine1: 123 Main St
          streetLine2: Suite 100
          city: New York
          state: NY
          postalCode: '10001'
          country: USA
        nationality: USA
        gender: male
        phone: '+1234567890'
        title: CEO
        isEntity: false
        immigrationStatus: citizen
        numberType: ssn
        taxResidencyCountry: USA
        regulatoryAffiliations:
          - regulatoryAffiliation: FINRA
        sharesAllocated: 2000
        ownershipPercentage: 100
        referenceId: ref_123
        roles:
          - name: beneficial_owner
            startDate: '2021-01-01'
            endDate: '2025-01-01'
            current: true
        identityInfo:
          documentCountry: USA
          documentType: passport
          documentNumber: '1234567890'
          documentIssueDate: '2021-01-01'
          documentExpiryDate: '2025-01-01'
        documents:
          - documentId: doc_2ofTA13AD0xBtbEvBl20aEb1hEu
            documentName: Passport
            documentPurpose: kyc
            documentType: passport
            createdAt: '2021-01-01T00:00:00.000Z'
            updatedAt: '2021-01-01T00:00:00.000Z'
    ControlPersonId:
      type: string
      pattern: ^ctl_[a-zA-Z0-9]{27}$
      description: A valid Control Person ID
      example: ctl_2ofTA13AD0xBtbEvBl20aEb1hEu
    ControlPersonRole:
      type: string
      enum:
        - director
        - shareholder
        - beneficial_owner
        - control_person
        - officer
        - other
        - legal_representative
        - authorized_representative
    Address:
      type: object
      properties:
        streetLine1:
          type: string
          minLength: 1
        streetLine2:
          type: string
        city:
          type: string
          minLength: 1
          pattern: '^[A-Za-zÀ-ÖØ-öø-ÿ''''.-]+(?: [A-Za-zÀ-ÖØ-öø-ÿ''''.-]+)*$'
        state:
          type: string
          pattern: ^[A-Za-zÀ-ÖØ-öø-ÿ0-9''.-](?:[A-Za-zÀ-ÖØ-öø-ÿ0-9''.\- ]{0,})$
        postalCode:
          type: string
        country:
          type: string
          minLength: 3
          maxLength: 3
          description: The ISO 3166-1 alpha-3 country code (e.g., USA, GBR, FRA)
      required:
        - streetLine1
        - city
        - country
      description: Address information
      example:
        streetLine1: 123 Main St
        streetLine2: Suite 100
        city: New York
        state: NY
        postalCode: '10001'
        country: USA
    Document:
      type: object
      properties:
        documentId:
          $ref: '#/components/schemas/DocumentId'
        documentName:
          type: string
        documentPurpose:
          type: string
        documentType:
          type: string
        createdAt:
          type: string
        updatedAt:
          type: string
      required:
        - documentId
        - documentName
        - documentPurpose
        - documentType
        - createdAt
        - updatedAt
      description: Document information
      example:
        documentId: doc_2ofTA13AD0xBtbEvBl20aEb1hEu
        documentName: Contract
        documentPurpose: transaction_justification
        documentType: contract
        createdAt: '2021-01-01T00:00:00.000Z'
        updatedAt: '2021-01-01T00:00:00.000Z'
    DocumentId:
      type: string
      pattern: ^doc_[a-zA-Z0-9]{27}$
      description: A valid Document ID
      example: doc_2ofTAESrTs4uQ8N3yGBMhGj59jV
  securitySchemes:
    apiKey:
      type: apiKey
      description: Includes an API key in the HTTP headers to authenticate the client.
      name: X-API-Key
      in: header
    apiSecret:
      type: apiKey
      description: Includes an API secret in the HTTP headers to authenticate the client.
      name: X-API-Secret
      in: header

````