---
title: "Create a person"
method: POST
path: "/persons"
tags: ["customers"]
---

# Create a person

`POST /persons`

Creates a person from claims with optional verification evidence. Supports both natural and legal persons.

## Request body

- CreatePersonRequest
  - `claims` union[], required — Identity and business claims for the person.
    - union
      - IdentityClaimSpec — Spec for identity claim data.
        - `claim_type` 'identity', required
        - `date_of_birth` string, date, required
        - `first_name` string, required
        - `last_name` string, required
      - NationalitiesClaimSpec — Spec for nationalities claim data.
        - `claim_type` 'nationalities', required
        - `nationalities` NationalityEntry[]
          - `basis` 'birth' | 'naturalisation' | 'descent' | 'marriage' | 'investment_programme' | 'other'
          - `country_code` string, required
      - ResidenceClaimSpec — Spec for residence claim data (aligned with Address).
        - `city` string, required
        - `claim_type` 'residence', required
        - `country_code` string, required
        - `district_county` string, nullable
        - `line1` string, required
        - `line2` string, nullable
        - `line3` string, nullable
        - `postal_code` string, required
      - TaxResidenciesClaimSpec — Spec for tax residencies claim data.
        - `claim_type` 'tax_residencies', required
        - `tax_residencies` TaxResidencyEntry[]
          - `country_code` string, required
          - `tin` string, nullable
          - `tin_exemption_reason` 'not_issued' | 'pending_application' | 'not_required'
      - FatcaStatusClaimSpec — Spec for FATCA US-person status (natural or legal person).
        - `claim_type` 'fatca_status', required
        - `is_us_person` boolean, required
      - PepStatusClaimSpec — Spec for politically exposed person (PEP) declaration claim data.
        - `claim_type` 'pep_status', required
        - `has_pep_association` boolean, required
        - `is_pep` boolean, required
        - `pep_associate_name` string, nullable
        - `pep_associate_relationship` string, nullable
        - `pep_role` string, nullable
        - `pep_role_end_date` string, date, nullable
        - `pep_role_start_date` string, date, nullable
      - EducationLevelClaimSpec — Spec for education level claim data (MiFID II suitability).
        - `claim_type` 'education_level', required
        - `education_level` 'none' | 'secondary' | 'bachelors' | 'masters' | 'doctorate' | 'professional', required
      - EmploymentClaimSpec — Spec for employment claim data (MiFID II suitability).
        - `claim_type` 'employment', required
        - `employment_status` 'employed' | 'self_employed' | 'retired' | 'student' | 'unemployed', required
        - `industry` 'accountancy' | 'admin_secretarial' | 'agricultural' | 'arms_trade' | 'catering_hospitality' | 'company_services' | 'consulting' | 'creative_media' | 'defence_military' | 'education' | 'emergency_services' | 'energy' | 'export_import' | 'financial_services' | 'gambling' | 'government_public_sector' | 'health_medical' | 'legal' | 'leisure_entertainment_tourism' | 'manufacturing' | 'marketing_pr_advertising' | 'ngo' | 'nonprofit_charity' | 'oil_gas_mining' | 'pharmaceuticals' | 'precious_metals_stones' | 'professional_services' | 'property_construction_trade' | 'retail' | 'social_care_services' | 'technology' | 'telecommunications' | 'transport_logistics' | 'adult_entertainment' | 'cannabis_cbd' | 'cryptocurrencies' | 'embassy_consulate' | 'other'
        - `industry_other` string, nullable
      - FinancialProfileClaimSpec — Spec for income and wealth financial profile claim data.
        - `annual_income_eur` 'lt_50k' | '50k_100k' | '100k_250k' | '250k_500k' | '500k_1m' | '1m_3m' | 'gt_3m', required
        - `claim_type` 'financial_profile', required
        - `income_sources` ClaimIncomeSource[], required
        - `net_worth_eur` 'lt_50k' | '50k_100k' | '100k_250k' | '250k_500k' | '500k_1m' | '1m_3m' | 'gt_3m', required
        - `wealth_sources` ClaimWealthSource[], required
      - InvestmentExperienceClaimSpec — Spec for prior investment experience claim data.
        - `asset_classes` ClaimAssetClass[]
        - `claim_type` 'investment_experience', required
        - `has_prior_experience` boolean, required
      - RegistrationClaimSpec — Spec for legal entity registration claim data.
        - `claim_type` 'registration', required
        - `country_of_incorporation` string, required
        - `date_of_incorporation` string, date, required
        - `entity_type` 'private_company' | 'public_company' | 'listed_company' | 'investment_firm' | 'pension_provident_fund' | 'investment_fund' | 'insurance_firm' | 'trust' | 'partnership' | 'bank_emi', required
        - `legal_name` string, required
        - `registration_number` string, required
        - `trading_name` string, nullable
      - ContactDetailsClaimSpec — Spec for legal entity contact details claim data.
        - `claim_type` 'contact_details', required
        - `email` string, nullable
        - `phone_number` string, required
      - LeiClaimSpec — Spec for Legal Entity Identifier (LEI) claim data.
        - `claim_type` 'lei', required
        - `expiry_date` string, date, required
        - `identifier` string, required
      - RegisteredAddressClaimSpec — Spec for legal entity registered address claim data. When `operating_address_is_same` is True, onboarding applications for this entity do not need a separate `operating_address` claim or `proof_of_operating_address` evidence -- compliance treats the registered address as both. Defaults to False so existing behaviour (distinct operating address required) is preserved.
        - `city` string, required
        - `claim_type` 'registered_address', required
        - `country_code` string, required
        - `district_county` string, nullable
        - `line1` string, required
        - `line2` string, nullable
        - `line3` string, nullable
        - `operating_address_is_same` boolean
        - `postal_code` string, required
      - OperatingAddressClaimSpec — Spec for legal entity operating (principal place of business) address.
        - `city` string, required
        - `claim_type` 'operating_address', required
        - `country_code` string, required
        - `district_county` string, nullable
        - `line1` string, required
        - `line2` string, nullable
        - `line3` string, nullable
        - `postal_code` string, required
      - BusinessNatureClaimSpec — Spec for legal entity business nature and turnover claim data.
        - `annual_turnover_eur` 'lt_50k' | '50k_100k' | '100k_250k' | '250k_500k' | '500k_1m' | '1m_3m' | 'gt_3m', required
        - `business_activity` 'accountancy' | 'admin_secretarial' | 'agricultural' | 'arms_trade' | 'catering_hospitality' | 'company_services' | 'consulting' | 'creative_media' | 'defence_military' | 'education' | 'emergency_services' | 'energy' | 'export_import' | 'financial_services' | 'gambling' | 'government_public_sector' | 'health_medical' | 'legal' | 'leisure_entertainment_tourism' | 'manufacturing' | 'marketing_pr_advertising' | 'ngo' | 'nonprofit_charity' | 'oil_gas_mining' | 'pharmaceuticals' | 'precious_metals_stones' | 'professional_services' | 'property_construction_trade' | 'retail' | 'social_care_services' | 'technology' | 'telecommunications' | 'transport_logistics' | 'adult_entertainment' | 'cannabis_cbd' | 'cryptocurrencies' | 'embassy_consulate' | 'other', required
        - `business_activity_other` string, nullable
        - `claim_type` 'business_nature', required
        - `has_nominee_shareholders` boolean, required
        - `has_shell_bank_relationships` boolean, required
        - `is_regulated` boolean, required
        - `issues_bearer_shares` boolean, required
        - `license_number` string, nullable
      - ExpectedActivityClaimSpec — Spec for expected investment activity claim data.
        - `annual_transactions` string, required
        - `asset_classes` string[], required
        - `claim_type` 'expected_activity', required
        - `funding_currency` string, required
        - `investment_amount` string, required
      - RelationshipsClaimSpec — Spec for person relationships (UBOs, directors, shareholders, etc.).
        - `claim_type` 'relationships', required
        - `relationships` RelationshipEntryInput[], required
          - `appointment_date` string, date, nullable
          - `authority_scope` string, nullable
          - `control_type` 'ownership' | 'voting' | 'other'
          - `end_date` string, date, nullable
          - `ownership_percentage` union
            - number
            - string
          - `position` string, nullable
          - `related_person` string, required
          - `relationship_type` 'director' | 'shareholder' | 'beneficial_owner' | 'trustee' | 'settlor' | 'authorised_signatory' | 'senior_management', required
  - `person_type` 'natural' | 'legal', required

## Response `201`

Created

- PersonCreationResponse
  - `claims` union[], required — Claims created for this person.
    - union
      - IdentityPersonClaimSummary
        - `claim_type` 'identity', required
        - `created_at` string, date-time, required — Time the claim was created.
        - `date_of_birth` string, date, required
        - `first_name` string, required
        - `id` string, required — Unique resource identifier.
        - `last_name` string, required
        - `status` 'pending' | 'verified', required — The status of the claim (`pending` or `verified`).
      - NationalitiesPersonClaimSummary
        - `claim_type` 'nationalities', required
        - `created_at` string, date-time, required — Time the claim was created.
        - `id` string, required — Unique resource identifier.
        - `nationalities` NationalityEntry[]
          - `basis` 'birth' | 'naturalisation' | 'descent' | 'marriage' | 'investment_programme' | 'other'
          - `country_code` string, required
        - `status` 'pending' | 'verified', required — The status of the claim (`pending` or `verified`).
      - ResidencePersonClaimSummary
        - `city` string, required
        - `claim_type` 'residence', required
        - `country_code` string, required
        - `created_at` string, date-time, required — Time the claim was created.
        - `district_county` string, nullable
        - `id` string, required — Unique resource identifier.
        - `line1` string, required
        - `line2` string, nullable
        - `line3` string, nullable
        - `postal_code` string, required
        - `status` 'pending' | 'verified', required — The status of the claim (`pending` or `verified`).
      - TaxResidenciesPersonClaimSummary
        - `claim_type` 'tax_residencies', required
        - `created_at` string, date-time, required — Time the claim was created.
        - `id` string, required — Unique resource identifier.
        - `status` 'pending' | 'verified', required — The status of the claim (`pending` or `verified`).
        - `tax_residencies` TaxResidencyEntry[]
          - `country_code` string, required
          - `tin` string, nullable
          - `tin_exemption_reason` 'not_issued' | 'pending_application' | 'not_required'
      - FatcaStatusPersonClaimSummary
        - `claim_type` 'fatca_status', required
        - `created_at` string, date-time, required — Time the claim was created.
        - `id` string, required — Unique resource identifier.
        - `is_us_person` boolean, required
        - `status` 'pending' | 'verified', required — The status of the claim (`pending` or `verified`).
      - PepStatusPersonClaimSummary
        - `claim_type` 'pep_status', required
        - `created_at` string, date-time, required — Time the claim was created.
        - `has_pep_association` boolean, required
        - `id` string, required — Unique resource identifier.
        - `is_pep` boolean, required
        - `pep_associate_name` string, nullable
        - `pep_associate_relationship` string, nullable
        - `pep_role` string, nullable
        - `pep_role_end_date` string, date, nullable
        - `pep_role_start_date` string, date, nullable
        - `status` 'pending' | 'verified', required — The status of the claim (`pending` or `verified`).
      - EducationLevelPersonClaimSummary
        - `claim_type` 'education_level', required
        - `created_at` string, date-time, required — Time the claim was created.
        - `education_level` 'none' | 'secondary' | 'bachelors' | 'masters' | 'doctorate' | 'professional', required
        - `id` string, required — Unique resource identifier.
        - `status` 'pending' | 'verified', required — The status of the claim (`pending` or `verified`).
      - EmploymentPersonClaimSummary
        - `claim_type` 'employment', required
        - `created_at` string, date-time, required — Time the claim was created.
        - `employment_status` 'employed' | 'self_employed' | 'retired' | 'student' | 'unemployed', required
        - `id` string, required — Unique resource identifier.
        - `industry` 'accountancy' | 'admin_secretarial' | 'agricultural' | 'arms_trade' | 'catering_hospitality' | 'company_services' | 'consulting' | 'creative_media' | 'defence_military' | 'education' | 'emergency_services' | 'energy' | 'export_import' | 'financial_services' | 'gambling' | 'government_public_sector' | 'health_medical' | 'legal' | 'leisure_entertainment_tourism' | 'manufacturing' | 'marketing_pr_advertising' | 'ngo' | 'nonprofit_charity' | 'oil_gas_mining' | 'pharmaceuticals' | 'precious_metals_stones' | 'professional_services' | 'property_construction_trade' | 'retail' | 'social_care_services' | 'technology' | 'telecommunications' | 'transport_logistics' | 'adult_entertainment' | 'cannabis_cbd' | 'cryptocurrencies' | 'embassy_consulate' | 'other'
        - `industry_other` string, nullable
        - `status` 'pending' | 'verified', required — The status of the claim (`pending` or `verified`).
      - FinancialProfilePersonClaimSummary
        - `annual_income_eur` 'lt_50k' | '50k_100k' | '100k_250k' | '250k_500k' | '500k_1m' | '1m_3m' | 'gt_3m', required
        - `claim_type` 'financial_profile', required
        - `created_at` string, date-time, required — Time the claim was created.
        - `id` string, required — Unique resource identifier.
        - `income_sources` ClaimIncomeSource[], required
        - `net_worth_eur` 'lt_50k' | '50k_100k' | '100k_250k' | '250k_500k' | '500k_1m' | '1m_3m' | 'gt_3m', required
        - `status` 'pending' | 'verified', required — The status of the claim (`pending` or `verified`).
        - `wealth_sources` ClaimWealthSource[], required
      - InvestmentExperiencePersonClaimSummary
        - `asset_classes` ClaimAssetClass[]
        - `claim_type` 'investment_experience', required
        - `created_at` string, date-time, required — Time the claim was created.
        - `has_prior_experience` boolean, required
        - `id` string, required — Unique resource identifier.
        - `status` 'pending' | 'verified', required — The status of the claim (`pending` or `verified`).
      - RegistrationPersonClaimSummary
        - `claim_type` 'registration', required
        - `country_of_incorporation` string, required
        - `created_at` string, date-time, required — Time the claim was created.
        - `date_of_incorporation` string, date, required
        - `entity_type` 'private_company' | 'public_company' | 'listed_company' | 'investment_firm' | 'pension_provident_fund' | 'investment_fund' | 'insurance_firm' | 'trust' | 'partnership' | 'bank_emi', required
        - `id` string, required — Unique resource identifier.
        - `legal_name` string, required
        - `registration_number` string, required
        - `status` 'pending' | 'verified', required — The status of the claim (`pending` or `verified`).
        - `trading_name` string, nullable
      - ContactDetailsPersonClaimSummary
        - `claim_type` 'contact_details', required
        - `created_at` string, date-time, required — Time the claim was created.
        - `email` string, nullable
        - `id` string, required — Unique resource identifier.
        - `phone_number` string, required
        - `status` 'pending' | 'verified', required — The status of the claim (`pending` or `verified`).
      - LeiPersonClaimSummary
        - `claim_type` 'lei', required
        - `created_at` string, date-time, required — Time the claim was created.
        - `expiry_date` string, date, required
        - `id` string, required — Unique resource identifier.
        - `identifier` string, required
        - `status` 'pending' | 'verified', required — The status of the claim (`pending` or `verified`).
      - RegisteredAddressPersonClaimSummary
        - `city` string, required
        - `claim_type` 'registered_address', required
        - `country_code` string, required
        - `created_at` string, date-time, required — Time the claim was created.
        - `district_county` string, nullable
        - `id` string, required — Unique resource identifier.
        - `line1` string, required
        - `line2` string, nullable
        - `line3` string, nullable
        - `operating_address_is_same` boolean
        - `postal_code` string, required
        - `status` 'pending' | 'verified', required — The status of the claim (`pending` or `verified`).
      - OperatingAddressPersonClaimSummary
        - `city` string, required
        - `claim_type` 'operating_address', required
        - `country_code` string, required
        - `created_at` string, date-time, required — Time the claim was created.
        - `district_county` string, nullable
        - `id` string, required — Unique resource identifier.
        - `line1` string, required
        - `line2` string, nullable
        - `line3` string, nullable
        - `postal_code` string, required
        - `status` 'pending' | 'verified', required — The status of the claim (`pending` or `verified`).
      - BusinessNaturePersonClaimSummary
        - `annual_turnover_eur` 'lt_50k' | '50k_100k' | '100k_250k' | '250k_500k' | '500k_1m' | '1m_3m' | 'gt_3m', required
        - `business_activity` 'accountancy' | 'admin_secretarial' | 'agricultural' | 'arms_trade' | 'catering_hospitality' | 'company_services' | 'consulting' | 'creative_media' | 'defence_military' | 'education' | 'emergency_services' | 'energy' | 'export_import' | 'financial_services' | 'gambling' | 'government_public_sector' | 'health_medical' | 'legal' | 'leisure_entertainment_tourism' | 'manufacturing' | 'marketing_pr_advertising' | 'ngo' | 'nonprofit_charity' | 'oil_gas_mining' | 'pharmaceuticals' | 'precious_metals_stones' | 'professional_services' | 'property_construction_trade' | 'retail' | 'social_care_services' | 'technology' | 'telecommunications' | 'transport_logistics' | 'adult_entertainment' | 'cannabis_cbd' | 'cryptocurrencies' | 'embassy_consulate' | 'other', required
        - `business_activity_other` string, nullable
        - `claim_type` 'business_nature', required
        - `created_at` string, date-time, required — Time the claim was created.
        - `has_nominee_shareholders` boolean, required
        - `has_shell_bank_relationships` boolean, required
        - `id` string, required — Unique resource identifier.
        - `is_regulated` boolean, required
        - `issues_bearer_shares` boolean, required
        - `license_number` string, nullable
        - `status` 'pending' | 'verified', required — The status of the claim (`pending` or `verified`).
      - ExpectedActivityPersonClaimSummary
        - `annual_transactions` string, required
        - `asset_classes` string[], required
        - `claim_type` 'expected_activity', required
        - `created_at` string, date-time, required — Time the claim was created.
        - `funding_currency` string, required
        - `id` string, required — Unique resource identifier.
        - `investment_amount` string, required
        - `status` 'pending' | 'verified', required — The status of the claim (`pending` or `verified`).
      - RelationshipsPersonClaimSummary
        - `claim_type` 'relationships', required
        - `created_at` string, date-time, required — Time the claim was created.
        - `id` string, required — Unique resource identifier.
        - `relationships` RelationshipEntryOutput[], required
          - `appointment_date` string, date, nullable
          - `authority_scope` string, nullable
          - `control_type` 'ownership' | 'voting' | 'other'
          - `end_date` string, date, nullable
          - `ownership_percentage` string, nullable
          - `position` string, nullable
          - `related_person` string, required
          - `relationship_type` 'director' | 'shareholder' | 'beneficial_owner' | 'trustee' | 'settlor' | 'authorised_signatory' | 'senior_management', required
        - `status` 'pending' | 'verified', required — The status of the claim (`pending` or `verified`).
  - `created_at` string, date-time, required — The timestamp (in [ISO-8601](https://www.iso.org/iso-8601-date-and-time-format.html) format) of when the resource was created.
  - `full_name` string, required — Person's full name.
  - `id` string, required — Unique resource identifier.
  - `modified_at` string, date-time, required — The timestamp (in [ISO-8601](https://www.iso.org/iso-8601-date-and-time-format.html) format) of when the resource was last modified.
  - `person_type` 'natural' | 'legal', required

## Other responses

- `400` — Bad Request

---

[API](https://skmtc.net/joinsophic/apis/sophic-engine-api.md) · [All operations](https://skmtc.net/joinsophic/apis/sophic-engine-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/joinsophic/sophic-engine-api/revisions/250f4b477cbf/schema)
