Verify by Licence Number
Verify a SIA licence by its 16-digit licence number. The verification is performed by looking up the licence in the gov.uk public register of licence holders.
Requires authentication using an API key.
Request
POST
https://api.siachecker.co.uk/v1/licences/verify
Body
JSON
{
"licenceNumber": "1234567890123456"
}
Request fields
| Field | Type | Required | Description |
|---|---|---|---|
licenceNumber |
string | Yes | 16-digit SIA licence number |
Successful response
200 OK - Licence found
JSON
{
"status": "FOUND",
"message": "Licence found.",
"licence": {
"surname": "RIVERTON",
"firstName": "ALEX",
"licenceNumber": "1234123412341234",
"role": "Front Line",
"licenceSector": "Door Supervision",
"expiryDate": "2026-10-26",
"status": "Active"
}
}
Response fields
| Field | Type | Description |
|---|---|---|
status |
string | Verification status: FOUND, NOT_FOUND, TOO_MANY_RESULTS, or PENDING |
message |
string | Human-readable status message |
licence |
object or null | Licence details if found, null otherwise |
licence.licenceNumber |
string | 16-digit licence number |
licence.firstName |
string | Licence holder's first name |
licence.surname |
string | Licence holder's last name |
licence.dateOfBirth |
string | Date of birth in YYYY-MM-DD format |
licence.licenceType |
string | Type of SIA licence |
licence.expiryDate |
string | Licence expiry date in YYYY-MM-DD format |
licence.status |
string | Current licence status |
Other responses
202 Accepted - Verification pending
Verification is still in progress. Retry the request with the same idempotency key after a short delay.
JSON
{
"status": "PENDING",
"message": "Verification is still in progress. Please retry this request later.",
"licence": null
}
404 Not Found - Licence not found
No matching licence exists for the provided number.
JSON
{
"status": "NOT_FOUND",
"message": "No matching licence found.",
"licence": null
}
409 Conflict - Too many results
Multiple licences match the query. This typically indicates data quality issues.
JSON
{
"status": "TOO_MANY_RESULTS",
"message": "Multiple matching licences found. Refine your query to return a single result.",
"licence": null
}
Errors
400 Bad Request
Invalid request format or validation error.
JSON
{
"code": "VALIDATION_ERROR",
"message": "Licence number must be 16 digits"
}
401 Unauthorized
API key is invalid, missing, or expired.
JSON
{
"code": "UNAUTHORIZED",
"message": "Invalid or missing API key"
}
429 Too Many Requests
Monthly verification quota exceeded.
JSON
{
"code": "QUOTA_EXCEEDED",
"message": "Monthly verification quota exceeded. Upgrade your plan to continue."
}
500 Internal Server Error
An unexpected error occurred on the server.
JSON
{
"code": "INTERNAL_ERROR",
"message": "An internal error occurred while processing the request."
}
502 Bad Gateway
Upstream service returned an unexpected response.
JSON
{
"code": "PARSE_ERROR",
"message": "Upstream service returned an unexpected response."
}
503 Service Unavailable
Upstream service is temporarily unavailable.
JSON
{
"code": "SERVICE_UNAVAILABLE",
"message": "Upstream service is temporarily unavailable. Please try again later."
}
Notes
- Caching: If a cached result is available, it is returned immediately
- Response timing: Verification processes for up to 5 seconds (default timeout)
- Pending status: If verification doesn't complete within the timeout, a
202 Acceptedresponse withPENDINGstatus is returned - Retry logic: When receiving
PENDINGstatus, retry the request with the same idempotency key after a short delay - Idempotency: Multiple requests with the same licence number are idempotent and won't count multiple times against your quota
- Quota consumption: Each unique verification counts towards your monthly quota