Version history
What changed in the sandbox, newest first. This page starts on 16 July 2026 and grows forward. Earlier changes are not listed.
16 July 2026
Company cases in jurisdictions without a registry search
Not every jurisdiction has a searchable company registry behind the API. GET /v2/Jurisdictions reports those with "isautomated": false. The sandbox used to refuse a case in one of them, because there was nothing to search and nothing to match. It now accepts them.
Since there is no search, you have no company identifier to send. Supply entityType instead. It stands in for the identifier:
curl -X POST https://api.knowyourcustomer.dev/v2/Companies \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"rawname":"mdm software GmbH","codeiso31662":"LI","entityType":"Company"}'
entityType accepts Company, Regulated, Listed, Trust or Partnership. The value comes back on the case as company.type and as the Company Type property. The name is accepted as given, so any name works. There is no catalogue to match against.
Leave entityType out and the API tells you exactly what is missing:
{
"statusCode": 400,
"message": "Api Error",
"apiErrors": [
{
"description": "The jurisdiction 'Liechtenstein' is not yet automated. Please provide the entity type that best suits the company.",
"timeStamp": "07/16/2026 12:42:23"
}
]
}
The message names the jurisdiction rather than its code, so you can catch the 400, add entityType, and retry. That is the intended flow if you do not want to read isautomated up front.
The lifecycle you will observe
These cases take a different path from a registry-backed case, and a slower one. Poll GET /v2/Companies/{caseCommonId} and you will see common.statusId move through:
| statusId | Name | Starts at |
|---|---|---|
0 | Initializing Case | on create |
100 | Performing AML checks | about 45 seconds |
9 | Google Search | about 75 seconds |
1 | Data Collection | about 3 minutes |
2 | Data Verification | about 8 minutes |
3 | Ready | about 18 minutes |
Two things worth designing for. caseReadyDatetime is null while the case is being worked and is populated once it reaches Ready, so do not treat it as a scheduled completion time. And GET /v2/Companies/{caseCommonId}/report returns 409 until the case is Ready, as it does for any case still building.
Budget about 18 minutes from create to Ready. A registry-backed case in an automated jurisdiction is much faster.
These cases finish empty, and that is correct
A case created this way reaches Ready with no members, no officers and no ownership structure. The org chart contains the company itself and nothing else.
This is worth stating plainly, because it looks like a failure and is not. The sandbox serves pre-loaded data. It holds none for a company it has never seen, and it will not invent officers and attach them to a real company name, because you would have no way to tell invented data from real data. So the case is well-formed and empty rather than populated and fictional.
Everything else about the case behaves normally: the status walk, the AML step, the audit trail, the report at Ready, close and reopen. If you need a case with a populated ownership structure to develop against, use one of the companies on Test cases in a jurisdiction with a registry search.
Jurisdiction automation flags now match the platform
isautomated on GET /v2/Jurisdictions now carries the same value as the production platform for all 253 jurisdictions, rather than a shorter hand-maintained list. Two consequences you may notice:
- Jurisdictions without a registry search are now listed. They are creatable by name with
entityType, so they belong in the picker. - A few jurisdictions changed flag. The British Virgin Islands is reported as automated, which is what the platform reports.
isautomated is the flag to branch on if you want to decide up front whether to send entityType.
