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

# Order a UBO Register Profile

> Places an order for a beneficial ownership profile and returns an `orderId`. Every order is asynchronous: the profile is never returned inline, and collection is the same in every jurisdiction.

Each successful call places a new, chargeable order. If a call times out or fails with a `5xx`, check `GET /v2/orders` for an order carrying your `customerReference` before you call again.

## Before you call
Search for the company with `GET /v2/companies` in the Company V2 API to obtain its `kyckrId`.

## Collecting the profile
1. Poll `GET /v2/orders/{orderId}` until `status` is `Success`.
2. Download the profile as JSON from `GET /v2/orders/{orderId}/download?format=json` (`links.data` on the order), or as a PDF with `format=pdf` (`links.document`).
3. The JSON profile carries `_payloadType: BOProfile_v2`, and the order's product is `UBO_Register_Profile`.




## OpenAPI

````yaml /openapi/bo_v2.yaml post /companies/{kyckrId}/uboregister
openapi: 3.0.3
info:
  title: Kyckr UBO Register API
  version: 1.0.0
  contact:
    url: https://www.kyckr.com
  description: >
    # Kyckr Beneficial Ownership Registry V2 API


    ## Overview

    Order beneficial ownership profiles sourced directly from central registers
    of beneficial owners. Each profile reports what a company declared to the
    central register in its country: the parties holding ownership or control
    interests, the nature and size of each interest, and any statements the
    register holds about the declaration. Kyckr's normalised values are
    accompanied by the register's own text, or the register's documented meaning
    of a code it sends, so the profile is usable both as an audit record and as
    structured data.


    This API reports declared ownership, as filed. Ownership Discovery, by
    contrast, calculates ultimate beneficial ownership from share-capital data.


    Access requires Legitimate Interest under the EU AML framework (AMLR). Your
    Account Manager can tell you more.


    ## How to use this API

    1. **Search** for a company using `GET /v2/companies` in the Company V2 API
    to obtain a `kyckrId`.

    2. **Order** a profile via `POST /companies/{kyckrId}/uboregister`.

    3. **Collect** the result: poll `GET /v2/orders/{orderId}`, then download
    the profile from `GET /v2/orders/{orderId}/download?format=json`, or the PDF
    with `format=pdf`.
  license:
    name: Kyckr API License
    url: https://www.kyckr.com/legal
  termsOfService: https://www.kyckr.com/legal
servers:
  - url: https://api.kyckr.com/v2
    description: Production
  - url: https://test-api.kyckr.com/v2
    description: Testing
security:
  - AuthHeader: []
tags:
  - name: Operations
    description: Order beneficial ownership profiles
paths:
  /companies/{kyckrId}/uboregister:
    parameters:
      - $ref: '#/components/parameters/kyckrId'
    post:
      tags:
        - Operations
      summary: Order a UBO Register Profile
      description: >
        Places an order for a beneficial ownership profile and returns an
        `orderId`. Every order is asynchronous: the profile is never returned
        inline, and collection is the same in every jurisdiction.


        Each successful call places a new, chargeable order. If a call times out
        or fails with a `5xx`, check `GET /v2/orders` for an order carrying your
        `customerReference` before you call again.


        ## Before you call

        Search for the company with `GET /v2/companies` in the Company V2 API to
        obtain its `kyckrId`.


        ## Collecting the profile

        1. Poll `GET /v2/orders/{orderId}` until `status` is `Success`.

        2. Download the profile as JSON from `GET
        /v2/orders/{orderId}/download?format=json` (`links.data` on the order),
        or as a PDF with `format=pdf` (`links.document`).

        3. The JSON profile carries `_payloadType: BOProfile_v2`, and the
        order's product is `UBO_Register_Profile`.
      operationId: post-bo-profile
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                customerReference:
                  type: string
                  description: Optional reference for tracking
                  example: BO-2026-001
      responses:
        '202':
          description: >-
            Accepted: the order is created; collect the profile once the order
            completes
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/BaseResponse'
                  - type: object
                    properties:
                      data:
                        type: object
                        properties:
                          status:
                            type: string
                            enum:
                              - Pending
                            description: >-
                              Always `Pending` when the order is created. Poll
                              GET /v2/orders/{orderId} until the status is
                              `Success` or `Failed`.
                          orderId:
                            type: integer
                            description: >-
                              Unique order identifier. Poll GET
                              /v2/orders/{orderId} for status, then download the
                              profile from GET
                              /v2/orders/{orderId}/download?format=json.
                          cost:
                            $ref: '#/components/schemas/Cost'
              examples:
                Pending Order:
                  value:
                    correlationId: 90b271d92b084f0bad3730e828a63d39
                    timeStamp: '2026-03-09T10:20:00Z'
                    data:
                      status: Pending
                      orderId: 12345
                      cost:
                        type: credit
                        value: 1
        '400':
          $ref: '#/components/responses/400Response'
        '401':
          $ref: '#/components/responses/401Response'
        '402':
          $ref: '#/components/responses/402Response'
        '403':
          $ref: '#/components/responses/403Response'
        '404':
          $ref: '#/components/responses/404Response'
        '429':
          $ref: '#/components/responses/429Response'
        '503':
          $ref: '#/components/responses/503Response'
components:
  parameters:
    kyckrId:
      name: kyckrId
      in: path
      required: true
      schema:
        type: string
      description: Kyckr company reference, a shared format usable across Kyckr V2 APIs
      example: FR|MTIzNDU2Nzg5
  schemas:
    BaseResponse:
      title: BaseResponse
      type: object
      properties:
        orderId:
          type: string
          nullable: true
          description: Order ID for billing/tracking
          example: '12345'
        correlationId:
          type: string
          description: Request correlation ID for tracing
        customerReference:
          type: string
          nullable: true
          description: Customer-provided reference
        timeStamp:
          type: string
          format: date-time
          description: Response timestamp
        details:
          type: string
          nullable: true
          description: Status message
        cost:
          $ref: '#/components/schemas/Cost'
        links:
          type: object
          nullable: true
          additionalProperties:
            type: string
    Cost:
      title: Cost
      type: object
      properties:
        type:
          type: string
          enum:
            - credit
            - lite
        value:
          type: number
    ProblemDetails:
      title: ProblemDetails
      type: object
      properties:
        type:
          type: string
        title:
          type: string
        detail:
          type: string
        errors:
          type: array
          items:
            type: string
  responses:
    400Response:
      description: Bad Request
      content:
        application/json:
          schema:
            allOf:
              - $ref: '#/components/schemas/BaseResponse'
              - type: object
                properties:
                  data:
                    $ref: '#/components/schemas/ProblemDetails'
    401Response:
      description: Unauthorized
      content:
        application/json:
          schema:
            allOf:
              - $ref: '#/components/schemas/BaseResponse'
              - type: object
                properties:
                  data:
                    $ref: '#/components/schemas/ProblemDetails'
    402Response:
      description: 'Payment Required: the account is not able to place the order'
      content:
        application/json:
          schema:
            allOf:
              - $ref: '#/components/schemas/BaseResponse'
              - type: object
                properties:
                  data:
                    $ref: '#/components/schemas/ProblemDetails'
    403Response:
      description: Forbidden
      content:
        application/json:
          schema:
            allOf:
              - $ref: '#/components/schemas/BaseResponse'
              - type: object
                properties:
                  data:
                    $ref: '#/components/schemas/ProblemDetails'
    404Response:
      description: Not Found
      content:
        application/json:
          schema:
            allOf:
              - $ref: '#/components/schemas/BaseResponse'
              - type: object
                properties:
                  data:
                    $ref: '#/components/schemas/ProblemDetails'
    429Response:
      description: Too Many Requests
      content:
        application/json:
          schema:
            allOf:
              - $ref: '#/components/schemas/BaseResponse'
              - type: object
                properties:
                  data:
                    $ref: '#/components/schemas/ProblemDetails'
    503Response:
      description: Service Unavailable
      content:
        application/json:
          schema:
            allOf:
              - $ref: '#/components/schemas/BaseResponse'
              - type: object
                properties:
                  data:
                    $ref: '#/components/schemas/ProblemDetails'
  securitySchemes:
    AuthHeader:
      type: http
      scheme: bearer

````

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