Infer ID type
The /infer-type endpoint infers the most plausible ID types for a raw identifier string when its nature is unknown or ambiguous.
It analyses the input against all supported ID types and returns a ranked list of candidates with associated confidence scores.
This endpoint performs format, checksum, and pattern analysis only. It does not verify existence or query external registries.
Making a request
The endpoint supports GET and POST requests.
Parameters may be provided via path segments, query parameters, or JSON body fields.
### JSON bodyPOST https://api.verifyvat.com/v1/infer-typeContent-Type: application/json{ "id": "{id}", "country": "{country}"}
### Path segmentPOST https://api.verifyvat.com/v1/infer-type/:idContent-Type: application/json{ "country": "{country}"}
### Query parametersGET https://api.verifyvat.com/v1/infer-type?id={id}&country={country}
### MixedGET https://api.verifyvat.com/v1/infer-type/:id?country={country}Parameters
| Field | Required | Accepts | Description |
|---|---|---|---|
id | yes | string | Raw identifier string. Formatting is automatically removed before evaluation. |
country | no | string or list | ISO 3166-1 alpha-2 code used to restrict national patterns |
region | no | string or list | World region code ( EU, EMEA, APAC, WW) to limit evaluation |
### Single valuePOST { "region": "EMEA" }
### Comma-separated listGET "?country=NO,IT"
### ArrayPOST { "country": ["NO", "IT"] }Response structure
Responses use the common Response envelope.
Within data, the structure is:
| Field | Description |
|---|---|
input.id | Normalised identifier used for analysis |
input.country | Optional country filter |
input.region | Optional region filter |
candidates[] | List of inferred ID type candidates |
If no supported format matches the input, the response will include an empty candidates array.
Each candidate includes:
| Field | Description |
|---|---|
type | Internal ID type ( e.g. no_orgnr, ww_lei) |
id | ID value for that type |
display | Human-readable display representation |
confidence | Likelihood score between 0 and 1 |
details | ID type metadata |
Candidates are ranked by confidence with deterministic matches with checksum validation receiving the highest score.
The details object contains the ID acronym, formal name, formatting patterns, expected country, registry sources, and validation method.
Real-world examples
1. Straightforward Norwegian national ID
The system recognises a Norwegian organisation number with full confidence. It also suggests the equivalent VAT number with slightly lower confidence.
2. Structurally invalid under local rules
Norwegian organisation numbers must be 9-digit numbers with a valid checksum.
The input 9955258289 fails that check, so no candidates are returned.
3. A globally recognisable LEI number
LEI numbers often arrive fragmented or with spaces, type inference handles that reliably.
Recommended usage
Type inference determines ID type, not entity existence. A typical flow is:
- Call
/infer-type - Select the highest-confidence candidate
- Pass the result to
/verifyfor ID verification - Persist the selected type and canonical ID
- Handle empty candidate sets explicitly