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

# Create Tenant

> Creates a new tenant profile using the provided tenant information.

A unique **tenant identifier** (`id`) is returned upon successful creation.
This identifier is required and must be supplied as the `tenantId` path
parameter for all subsequent tenant-related API operations.

All endpoints that include `{tenantId}` in the request path expect this value
to be replaced with the tenant identifier returned by this API.




## OpenAPI

````yaml /api-reference/openapi.yaml post /tenants/create-tenant
openapi: 3.1.0
info:
  title: SKOR Modular API
  version: 1.0.0
  description: >
    ## Overview

    This is the SKOR Modular API v1. It provides access to tenant

    workflows, API keys, webhooks, document processing, identity

    verification, banking connectivity, and forensic analysis.


    ## Error Statuses


    The API uses standard HTTP status codes to indicate the success

    or failure of requests. Each error response provides guidance

    to help identify the issue and take corrective action.


    ### Success — `200 OK`

    The request was processed successfully and the expected response

    data is returned.


    ### Validation Error — `400 Bad Request`

    The request is invalid due to missing, malformed, or incorrect

    parameters.


    **Common causes:**

    - Required fields are missing from the request.

    - Invalid data formats or unsupported values are provided.

    - File size or payload limits are exceeded.


    **How to resolve:**

    - Verify all required parameters are present.

    - Ensure the request payload matches the documented schema.

    - Validate data formats and constraints before retrying.


    ### Unauthorized — `401 Unauthorized`

    Authentication failed or the provided token is missing or invalid.


    **Common causes:**

    - The `Authorization` header is missing.

    - An invalid or expired bearer token is provided.


    **How to resolve:**

    - Ensure the token is included in the request as an `Authorization: Bearer
    <token>` header.

    - Verify the token is valid and has not expired.

    - Generate a new token if required.


    ### Not Found — `404 Not Found`

    The requested resource does not exist or is not accessible.


    **Common causes:**

    - An invalid or non-existent resource identifier.

    - The resource has not been created or has been deleted.


    **How to resolve:**

    - Confirm the resource identifier is correct.

    - Ensure the resource exists before accessing it.


    ### Server Error — `500 Internal Server Error`

    An unexpected error occurred on the server while processing the request.


    **How to resolve:**

    - Retry the request after a short delay.

    - If the issue persists, **[contact us](mailto:info@skortorent.com)** with
    relevant request details.


    ### Need Help?

    If you encounter unexpected behavior,

    please **[contact us](mailto:info@skortorent.com)** for assistance.
servers:
  - url: https://api.skortorent.com/api/v1
    description: Live
  - url: https://dev-api.skortorent.com/api/v1
    description: Sandbox
security:
  - BearerAuth: []
paths:
  /tenants/create-tenant:
    post:
      tags:
        - Tenants
      summary: Create Tenant
      description: >
        Creates a new tenant profile using the provided tenant information.


        A unique **tenant identifier** (`id`) is returned upon successful
        creation.

        This identifier is required and must be supplied as the `tenantId` path

        parameter for all subsequent tenant-related API operations.


        All endpoints that include `{tenantId}` in the request path expect this
        value

        to be replaced with the tenant identifier returned by this API.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - email
                - fname
                - lname
                - phone_number
                - post_code
                - dob
                - employment_status
                - current_annual_income
                - currency
              properties:
                email:
                  type: string
                  format: email
                fname:
                  type: string
                lname:
                  type: string
                dni_nie:
                  type: string
                  description: >
                    Either `dni_nie` or `passport_id` is required. At least one
                    of these identification fields must be provided.
                passport_id:
                  type: string
                  description: >
                    Either `dni_nie` or `passport_id` is required. At least one
                    of these identification fields must be provided.
                post_code:
                  type: string
                  description: Postal code (numbers only)
                  minLength: 5
                  maxLength: 5
                dob:
                  type: string
                  format: date
                  description: Date of birth format ```(YYYY-MM-DD)```
                employment_status:
                  type: string
                  enum:
                    - employed
                    - self_employed
                    - student
                    - unemployed
                    - retired
                    - public_servant
                employment_category:
                  type: string
                  enum:
                    - public_servant
                    - military
                    - permanent
                    - temporary
                    - permanent_seasonal_worker
                    - paternity_or_maternity_leave
                    - medical_leave
                    - ownACompany
                    - freelancer
                current_annual_income:
                  type: number
                  minimum: 0
                currency:
                  type: string
                  minLength: 3
                  maxLength: 3
                phone_number:
                  type: string
                  description: Phone number (numbers only)
                  minLength: 6
                  maxLength: 15
                protected_housing_docs:
                  type: array
                  items:
                    type: string
                about_me:
                  type: string
      responses:
        '200':
          $ref: '#/components/responses/SuccessResponse'
        '400':
          $ref: '#/components/responses/ErrorResponse'
        '401':
          $ref: '#/components/responses/ErrorResponse'
        '500':
          $ref: '#/components/responses/ErrorResponse'
components:
  responses:
    SuccessResponse:
      description: Successful response
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: string
                enum:
                  - success
              message:
                type: string
              data:
                type: object
    ErrorResponse:
      description: Error response
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: string
                enum:
                  - error
              message:
                type: string
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: |
        HTTP Bearer Authentication. Pass the token generated via
        `/keys/generate-token` as `Authorization: Bearer <token>`.

````