Skip to content

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 Accepted response with PENDING status is returned
  • Retry logic: When receiving PENDING status, 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