summary.verified field in the response body tells you whether the verification itself passed. Never rely on the HTTP status alone.
Response Structure
Successful Response
When a request is processed successfully and the verification completes, the API returns HTTP200 OK with success: true and summary.verified: true.
Failed Verification Response
When a verification cannot be completed — for example, a NIN that isn’t found — the API still returns HTTP200 OK and success: true, but sets summary.verified to false and data to null.
Failed verifications (such as a NIN not found in the database) still return HTTP
200 with success: true. The distinction lies in summary.verified, which will be false. Always check summary.verified in addition to the HTTP status before processing a verification result.Response Metadata
Every response includes ameta object with fields you can use for logging, auditing, and troubleshooting.
Error Code Reference
The table below lists all error codes returned by the LumiID API, along with their causes and recommended actions.Best Practices
Following these guidelines will help you build a resilient, production-ready integration with LumiID:- Check both the HTTP status code and
summary.verified. An HTTP200does not guarantee a successful verification — always readsummary.verifiedbefore processing the result. - Use the
codefield for application logic, notmessage. Themessagefield is human-readable and may change between releases. Your code should branch oncodevalues, which are stable. - Log
request_idandcustomer_referencesecurely. These values are essential for debugging and for getting faster resolutions when you contact LumiID Support. - Retry temporary failures with exponential backoff. Errors like
503 SERVICE_UNAVAILABLEand504 TIMEOUTare transient. Implement a backoff strategy rather than retrying immediately. - Do not retry authentication or validation errors. Errors like
INVALID_API_KEY,UNAPPROVED_ORGANIZATION, andSUBSCRIPTION_REQUIREDrequire a configuration fix — retrying without addressing the root cause will not help. - Add
customer_referenceto all production requests. A consistent reference value (such as your internal customer ID) makes it much easier to trace a specific request in your logs and in the LumiID Dashboard.