Skip to main content
Every LumiID API request returns a standard HTTP status code alongside a JSON response body. To correctly determine whether a request succeeded, you need to check both — the HTTP status tells you whether the request was received and processed, while the 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 HTTP 200 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 HTTP 200 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 a meta 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 HTTP 200 does not guarantee a successful verification — always read summary.verified before processing the result.
  • Use the code field for application logic, not message. The message field is human-readable and may change between releases. Your code should branch on code values, which are stable.
  • Log request_id and customer_reference securely. 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_UNAVAILABLE and 504 TIMEOUT are transient. Implement a backoff strategy rather than retrying immediately.
  • Do not retry authentication or validation errors. Errors like INVALID_API_KEY, UNAPPROVED_ORGANIZATION, and SUBSCRIPTION_REQUIRED require a configuration fix — retrying without addressing the root cause will not help.
  • Add customer_reference to 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.