Skip to main content
GET
/
partner
/
incorporation
/
requirements
Get incorporation requirements
curl --request GET \
  --url https://api.prod.commenda.io/api/v1/partner/incorporation/requirements \
  --header 'x-api-key: <api-key>'
{
  "requirements": {
    "schemaVersion": "2026-04-22",
    "dslVersion": "mvp-2026-04-22",
    "key": "sg.private_limited_company",
    "country": "SG",
    "countryOptions": {
      "corporationType": "PRIVATE_LIMITED_COMPANY"
    },
    "name": "Singapore Private Limited Company Incorporation Requirements",
    "blocks": [
      {
        "key": "companyNames",
        "name": "Company name options"
      }
    ],
    "participantRequirements": [
      {
        "key": "directors",
        "name": "Directors",
        "role": "DIRECTOR",
        "allowedParticipantTypes": [
          "INDIVIDUAL"
        ],
        "allowedResourceTypes": [
          "KEY_PERSON"
        ],
        "resourceFieldsByParticipantType": {
          "INDIVIDUAL": [
            {
              "kind": "resource",
              "key": "residentialAddress",
              "name": "Residential address",
              "description": "The key person's current residential address. Store this on the Commenda OS person as residentialAddress.",
              "required": true,
              "resourceKind": "address",
              "commendaOs": {
                "entity": "keyPerson",
                "field": "residentialAddress"
              },
              "fields": [
                {
                  "kind": "scalar",
                  "key": "addressLine1",
                  "name": "Address line 1",
                  "required": true,
                  "commendaOs": {
                    "entity": "keyPerson",
                    "field": "residentialAddress.addressLine1"
                  }
                },
                {
                  "kind": "scalar",
                  "key": "city",
                  "name": "City",
                  "required": true,
                  "commendaOs": {
                    "entity": "keyPerson",
                    "field": "residentialAddress.city"
                  }
                },
                {
                  "kind": "scalar",
                  "key": "country",
                  "name": "Country",
                  "required": true,
                  "commendaOs": {
                    "entity": "keyPerson",
                    "field": "residentialAddress.country"
                  }
                }
              ]
            }
          ]
        },
        "documentRequirements": [
          {
            "documentKind": "PASSPORT_SCAN",
            "name": "Passport scan"
          },
          {
            "documentKind": "UTILITY_BILL",
            "name": "Utility bill"
          }
        ]
      }
    ]
  }
}

Documentation Index

Fetch the complete documentation index at: https://docs.commenda.io/llms.txt

Use this file to discover all available pages before exploring further.

Returns the current requirements for a selected incorporation. For Singapore private limited companies:
curl --request GET \
  --url 'https://api.prod.commenda.io/api/v1/partner/incorporation/requirements?country=SG&countryOptions[corporationType]=PRIVATE_LIMITED_COMPANY' \
  --header 'x-api-key: <partner_api_key>'
Use the returned requirements to render your intake UI and to understand required fields, participant roles, document requirements, and validation constraints. Rule of thumb: render from the requirements response, but validate from write/read responses. Intake updates are always validated against the current server-side requirements, so clients should handle missingRequirements and invalidRequirements from intake responses. For a renderer-oriented explanation of field kinds, input types, conditions, cardinality, constraints, and endpoint routing, see Requirements guide.

Participant role/resource combinations

The requirements response describes participant requirements in terms of role, participant type, and resource type. For Singapore private limited companies:
Role requirementparticipantTyperesource.resourceTypeNotes
Individual directorINDIVIDUALKEY_PERSONUse a Commenda OS person id. One person can also hold a shareholder role.
Individual shareholderINDIVIDUALKEY_PERSONUse a Commenda OS person id and include ownershipPercentage.
Corporate shareholderCORPORATEBUSINESS_ENTITYUse a Commenda OS business entity id and include ownershipPercentage.
Corporate directorCORPORATEBUSINESS_ENTITYNot supported for Singapore private limited companies.
When documentRequirements are returned, match them by role, participantType, and resourceType. Individual Singapore directors and shareholders require PASSPORT_SCAN and UTILITY_BILL; corporate shareholder documents, if required by the selected incorporation type, are surfaced by the same documentRequirements array. Some participant requirements also include resourceFieldsByParticipantType. These are fields on the Commenda OS resource you registered as the participant. For example, Singapore individual directors require the key person to have residentialAddress. Satisfy that field by creating or updating the person with residentialAddress; it is not a reusable Commenda OS Location and should not be sent as registeredOfficeAddressLocation. Requirements snippet:
{
  "participantRequirements": [
    {
      "key": "directors",
      "role": "DIRECTOR",
      "allowedParticipantTypes": ["INDIVIDUAL"],
      "allowedResourceTypes": ["KEY_PERSON"],
      "resourceFieldsByParticipantType": {
        "INDIVIDUAL": [
          {
            "kind": "resource",
            "key": "residentialAddress",
            "required": true,
            "commendaOs": {
              "entity": "keyPerson",
              "field": "residentialAddress"
            }
          }
        ]
      }
    }
  ]
}
If validation later returns:
{
  "path": "participants.participant_123.resource.residentialAddress",
  "message": "Residential address is required"
}
Find participant_123 in the incorporation response:
{
  "id": "participant_123",
  "resource": {
    "resourceType": "KEY_PERSON",
    "resourceId": 12
  }
}
Then update person 12:
{
  "residentialAddress": {
    "addressLine1": "1 Raffles Place",
    "city": "Singapore",
    "postalCode": "048616",
    "country": "SG"
  }
}
Validation paths in missingRequirements and invalidRequirements correspond to requirements fields or participant/document requirements. Field validation paths include the requirements block key, such as companyNames.companyNameOptions, even though the intake payload key remains requirements.companyNameOptions. Participant resource paths look like participants.participant_123.resource.residentialAddress. Participant document paths look like participants.participant_123.documents.PASSPORT_SCAN. You may cache the requirements response by country plus countryOptions, but do not send a requirements version back to Commenda. If validation returns new missing or invalid requirements, update your UI from the latest response.

Authorizations

x-api-key
string
header
required

Query Parameters

country
enum<string>
required

Incorporation country. ISO 3166-1 alpha-2 country code for the incorporation jurisdiction.

Available options:
AE,
CA,
GB,
IE,
IN,
KY,
NZ,
SG,
US
Example:

"SG"

countryOptions
object
required

Country-specific options using deep-object query syntax, for example countryOptions[corporationType]=PRIVATE_LIMITED_COMPANY. Country-specific incorporation options. Use the jurisdiction catalog for the currently supported fields and values.

Example:
{
"corporationType": "PRIVATE_LIMITED_COMPANY"
}

Response

Requirements retrieved successfully

requirements
object
required

Requirements schema for the selected incorporation. Clients can use this to render their own intake UI, but intake updates are always validated against the current server-side incorporation requirements.

Example:
{
"schemaVersion": "2026-04-22",
"dslVersion": "mvp-2026-04-22",
"key": "sg.private_limited_company",
"country": "SG",
"countryOptions": {
"corporationType": "PRIVATE_LIMITED_COMPANY"
},
"name": "Singapore Private Limited Company Incorporation Requirements",
"blocks": [
{
"key": "companyNames",
"name": "Company name options"
}
],
"participantRequirements": [
{
"key": "directors",
"name": "Directors",
"role": "DIRECTOR",
"allowedParticipantTypes": ["INDIVIDUAL"],
"allowedResourceTypes": ["KEY_PERSON"],
"resourceFieldsByParticipantType": {
"INDIVIDUAL": [
{
"kind": "resource",
"key": "residentialAddress",
"name": "Residential address",
"description": "The key person's current residential address. Store this on the Commenda OS person as residentialAddress.",
"required": true,
"resourceKind": "address",
"commendaOs": {
"entity": "keyPerson",
"field": "residentialAddress"
},
"fields": [
{
"kind": "scalar",
"key": "addressLine1",
"name": "Address line 1",
"required": true,
"commendaOs": {
"entity": "keyPerson",
"field": "residentialAddress.addressLine1"
}
},
{
"kind": "scalar",
"key": "city",
"name": "City",
"required": true,
"commendaOs": {
"entity": "keyPerson",
"field": "residentialAddress.city"
}
},
{
"kind": "scalar",
"key": "country",
"name": "Country",
"required": true,
"commendaOs": {
"entity": "keyPerson",
"field": "residentialAddress.country"
}
}
]
}
]
},
"documentRequirements": [
{
"documentKind": "PASSPORT_SCAN",
"name": "Passport scan"
},
{
"documentKind": "UTILITY_BILL",
"name": "Utility bill"
}
]
}
]
}