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

# Submit a consumer + business identity for verification

> Submits a consumer identity together with the business they operate for KYC + KYB verification and evaluation of the operator link between them. Verification runs asynchronously: the request is accepted with a `202` and a submission id — poll `GET /identity_submissions/{submission_id}` or subscribe to the `OnboardingSession.completed` webhook for the outcome, the `principal_ref`, and the `business_ref`. Submissions are idempotent per `idempotency_key`.



## OpenAPI

````yaml /api-reference/openapi.json post /identity_submissions/consumer_business
openapi: 3.1.0
info:
  title: baselayer-api-service
  version: 0.1.0
servers:
  - url: https://api.baselayer.com/
security: []
paths:
  /identity_submissions/consumer_business:
    post:
      tags:
        - Identities
      summary: Submit a consumer + business identity for verification
      description: >-
        Submits a consumer identity together with the business they operate for
        KYC + KYB verification and evaluation of the operator link between them.
        Verification runs asynchronously: the request is accepted with a `202`
        and a submission id — poll `GET /identity_submissions/{submission_id}`
        or subscribe to the `OnboardingSession.completed` webhook for the
        outcome, the `principal_ref`, and the `business_ref`. Submissions are
        idempotent per `idempotency_key`.
      operationId: submit_consumer_business_identity
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/v1.ConsumerBusinessIdentitySubmissionRequest
          application/vnd.baselayer.v1+json:
            schema:
              $ref: >-
                #/components/schemas/v1.ConsumerBusinessIdentitySubmissionRequest
        required: true
      responses:
        '202':
          description: Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1.IdentitySubmissionResponse'
            application/vnd.baselayer.v1+json:
              schema:
                $ref: '#/components/schemas/v1.IdentitySubmissionResponse'
        '409':
          description: >-
            A submission with this idempotency_key already exists but could not
            be returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIError'
                title: IdentitySubmissionConflict
                description: A submission with this idempotency key already exists.
                examples:
                  - code: 6201
                    message: A submission with this idempotency key already exists.
                    metadata: {}
        '422':
          description: The submission payload failed validation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIError'
                title: InvalidIdentitySubmissionPayload
                description: The identity submission payload failed validation.
                examples:
                  - code: 6200
                    message: The identity submission payload failed validation.
                    metadata: {}
      security:
        - APIKeyHeader: []
components:
  schemas:
    v1.ConsumerBusinessIdentitySubmissionRequest:
      additionalProperties: false
      description: Body for ``POST /identity_submissions/consumer_business``.
      properties:
        idempotency_key:
          description: >-
            Caller-chosen key making the submission idempotent: a resubmission
            under the same key returns the original submission instead of
            minting a second session.
          maxLength: 255
          minLength: 1
          title: Idempotency Key
          type: string
        reference_id:
          anyOf:
            - maxLength: 128
              type: string
            - type: 'null'
          default: null
          description: Caller-supplied correlation id.
          title: Reference Id
        consumer:
          $ref: '#/components/schemas/v1.ConsumerIdentityPayload'
          description: The consumer identity to verify.
        business:
          $ref: '#/components/schemas/v1.BusinessIdentityPayload'
          description: The business the consumer operates.
      required:
        - idempotency_key
        - consumer
        - business
      title: ConsumerBusinessIdentitySubmissionRequest (v1)
      type: object
    v1.IdentitySubmissionResponse:
      description: >-
        Body for the submission routes: the accepted, asynchronous submission.


        KYC/KYB run asynchronously — the response never carries a verification

        result. Poll ``GET /identity_submissions/{submission_id}`` or subscribe
        to

        the ``OnboardingSession.completed`` webhook for the outcome and refs.
      properties:
        submission_id:
          description: >-
            Unique id of the accepted submission — the handle for status
            polling, and the session id the OnboardingSession.completed webhook
            carries.
          format: uuid
          title: Submission Id
          type: string
        state:
          $ref: '#/components/schemas/v1.ResumableWorkflowState'
          description: Lifecycle state of the verification workflow.
        reference_id:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: Caller-supplied correlation id.
          title: Reference Id
      required:
        - submission_id
        - state
      title: IdentitySubmissionResponse (v1)
      type: object
    APIError:
      properties:
        code:
          type: integer
          title: Code
        message:
          type: string
          title: Message
        uri:
          anyOf:
            - type: string
            - type: 'null'
          title: Uri
        metadata:
          additionalProperties: true
          type: object
          title: Metadata
      type: object
      required:
        - code
        - message
      title: APIError
      description: >-
        APIError is a Pydantic model for standardizing error responses from the
        API.


        This class is used internally by APIException for JSON serialization.

        Users should typically work with APIException directly in exception
        catalogs.
    v1.ConsumerIdentityPayload:
      additionalProperties: false
      description: The consumer identity a customer asserts for verification.
      properties:
        first_name:
          description: Legal first name.
          maxLength: 128
          minLength: 1
          title: First Name
          type: string
        middle_name:
          anyOf:
            - maxLength: 128
              type: string
            - type: 'null'
          default: null
          description: Legal middle name, if any.
          title: Middle Name
        last_name:
          description: Legal last name.
          maxLength: 128
          minLength: 1
          title: Last Name
          type: string
        dob:
          description: Date of birth (YYYY-MM-DD).
          format: date
          title: Dob
          type: string
        phone_number:
          description: Phone number in E.164 format.
          pattern: ^\+[1-9]\d{1,14}$
          title: Phone Number
          type: string
        email:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: Email address, if collected.
          title: Email
        address:
          description: >-
            Residential address as a single line; normalized server-side before
            verification.
          examples:
            - 1640 Riverside Drive, Hill Valley, CA 95420
          maxLength: 500
          minLength: 2
          title: Address
          type: string
        national_id:
          description: >-
            US national id (SSN), nine digits; separators are accepted and
            stripped. Required: identity continuity is anchored on it, and a
            submission without one could never earn a principal_ref.
          title: National Id
          type: string
      required:
        - first_name
        - last_name
        - dob
        - phone_number
        - address
        - national_id
      title: ConsumerIdentityPayload (v1)
      type: object
    v1.BusinessIdentityPayload:
      additionalProperties: false
      description: |-
        The business a customer asserts the consumer operates.

        Exactly the ``POST /searches`` input surface — the submission backs a
        KYB BusinessSearch, so it accepts every lookup input that route does,
        with the same names and validation. Note the operator link can only
        auto-verify when a ``tin`` is supplied and the IRS confirms it; without
        one, KYB runs registry verification alone.
      properties:
        name:
          description: The name of the business to search for.
          examples:
            - White, Floyd and Cook
          maxLength: 500
          minLength: 1
          title: Name
          type: string
        address:
          description: The address of the business to search for.
          examples:
            - 155 Carla Circles Jordanfurt, OK 59066
          maxLength: 500
          minLength: 2
          title: Address
          type: string
        officer_names:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          default: null
          description: The officer names to include in the search.
          examples:
            - - Nathan Harrington
              - Alexander Wolfe
          title: Officer Names
        website:
          anyOf:
            - type: string
              minLength: 1
              format: uri
            - type: 'null'
          default: null
          description: The website to include in the search.
          examples:
            - https://www.figueroa.com/
          title: Website
        phone_number:
          anyOf:
            - maxLength: 24
              type: string
            - type: 'null'
          default: null
          description: The phone number to include in the search.
          examples:
            - 436-502-9710
          title: Phone Number
        email:
          anyOf:
            - maxLength: 64
              type: string
            - type: 'null'
          default: null
          description: The email to include in the search.
          examples:
            - zacharymoore@example.com
          title: Email
        alternative_names:
          anyOf:
            - items:
                type: string
              type: array
              uniqueItems: true
            - type: 'null'
          default: null
          description: The alternative names to include in the search.
          examples:
            - - Joe's Pizza
              - Joe's Pizzeria
          title: Alternative Names
        tin:
          anyOf:
            - maxLength: 9
              minLength: 9
              type: string
            - type: 'null'
          default: null
          description: The TIN/EIN to search for.
          examples:
            - '732842774'
          title: Tin
      required:
        - name
        - address
      title: BusinessIdentityPayload (v1)
      type: object
    v1.ResumableWorkflowState:
      description: |-
        Lifecycle state of an asynchronous verification workflow, such as an
        identity submission: PENDING, EXECUTING, or WAITING while in flight,
        then a terminal COMPLETED, FAILED, EXPIRED, or CANCELLED.
      enum:
        - PENDING
        - EXECUTING
        - WAITING
        - COMPLETED
        - FAILED
        - EXPIRED
        - CANCELLED
      title: ResumableWorkflowState
      type: string
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key

````