Check Credentials API

Returns whether a user holds a valid, active credential for a given policy.

This API returns whether a user has a valid and active credential required for a given policy. For example, passing in an IAL2 policy scope returns whether the user is verified at that level or not.

Environments

ID.me provides two environments:

Sandbox

https://api.idmelabs.com

  • Used for development, connectivity, and user-acceptance testing
  • Test credentials can be used for testing various scenarios
  • Credentials are separate from the production environment
Production

https://api.id.me

  • Used for production-level integration
  • Only real credentials can be used (no test credentials)
  • Credentials are separate from the sandbox environment

Authentication

API authentication works using a shared secret token generated with a strong cryptographic algorithm. This token must be handled and stored securely.

All API calls require the token to be passed in the request, using either a query parameter or a Bearer token authorization header:

Query parameter
$?access_token=<token>
Authorization header
$Authorization: Bearer <token>

The API token only grants access to the endpoints listed in this document, and access is constrained to users tied to the partner through a valid and active credential license. If no credential license exists, or the license has expired, the request is rejected with an appropriate error message.

API tokens are provided out-of-band from the technical integration.

Errors and HTTP status codes

Common HTTP status codes separate failure scenarios by type. Some responses also include a specific error code and human-readable message:

1{
2 "code": "<code>",
3 "message": "<message>"
4}

401 - Invalid authentication credentials

CodeDescription
110Access token is invalid or missing
120Attempting to access an invalid resource
130Access token is not tied to a valid policy
140Integration credentials are invalid or missing
160Invalid or missing event identifier
180Resource license is missing or invalid
190Setup identifier is missing or invalid

403 - Credentials do not have access to given resource

CodeDescription
111Access token has been revoked
112Access token has expired
121Attempting to access a suspended resource
122Attempting to access a revoked resource
131Access token is tied to an inactive policy
141Integration credentials are disabled
181Resource license has expired

Other status codes

StatusDescription
404Accessed resource does not exist
422Invalid or missing parameters
429Rate limit exceeded
500Internal service errors

Validation errors

HTTP status code 422 is reserved for input validation errors. The response contains an object where the keys correspond to input parameter names and the values are error messages.

The key can also be base, indicating a higher-level, process-related error — for example, an SMS-based code that has already been used or has exceeded the retry threshold.

Example - field error
1{
2 "errors": {
3 "delivery": "Delivery can't be blank"
4 }
5}
Example - field and base error
1{
2 "errors": {
3 "code": "Code can't be blank",
4 "base": "Confirmation code is not valid. Please request a new code and try again."
5 }
6}
Recommended handling

Treat errors on the base key as overall, general errors shown in a notification banner at the top of the page. Show individual field-related errors below the corresponding field. This mirrors the structure of the API response in the UI.

Check credentials

POST   /api/auth/v1/credentials/:uuid/check

Returns whether a user has a valid and active credential required for a given policy. For example, passing in an IAL2 policy scope returns whether the user is verified at that level or not.

Parameters

NameDescriptionTypeRequired
uuidUnique identifier for the user (passed in the URL)stringYes
scopePolicy handle to check against (same value passed as the SAML AuthnContext value)stringYes

Response

FieldDescriptionType
verifiedWhether the user has the required credentialboolean
Response body
1{
2 "verified": true
3}