> For the complete documentation index, see [llms.txt](https://docs.vida.id/identity-stack/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.vida.id/identity-stack/authentication/authentication-factors/cryptographic-token-pki/integration-methods/sdk/ios-development-kit/error-code.md).

# Error Code

When working with asynchronous functions in CredentialServicesKit, the framework employs the `VIDAResultBlock` typealias to return results. This typealias has the signature `VIDAResultBlock = ([String: Any]) -> Void`.

In the event of an error, the result NSDictionary will include an "error" key of type NSError. The NSError object will have the `VIDAErrorCode` set as the error code and `localizedDescription` set to a user-facing error string. This standardized error structure enables developers to effectively handle and process errors returned by the framework.

#### Error Code

Here is a table listing the error codes and their corresponding descriptions

<table><thead><tr><th width="289.375">Error Code</th><th>Description</th></tr></thead><tbody><tr><td>20001</td><td>Message signing failed</td></tr><tr><td>20002</td><td>Failed to store key</td></tr><tr><td>20003</td><td>Failed to update key</td></tr><tr><td>20004</td><td>Failed to load key</td></tr><tr><td>20005</td><td>Failed to delete key</td></tr><tr><td>20006</td><td>No credentials found</td></tr><tr><td>20007</td><td>Failed to store signed signatures</td></tr><tr><td>20008</td><td>Failed to load signed signatures</td></tr><tr><td>20009</td><td>Failed to send signed signatures</td></tr><tr><td>20010</td><td>Signing with biometry is disabled</td></tr><tr><td>20011</td><td>Signing with biometry was canceled</td></tr><tr><td>20012</td><td>Network error occurred</td></tr><tr><td>20013</td><td>Wrong password provided</td></tr><tr><td>20014</td><td>No signatures to send</td></tr><tr><td>20015</td><td>Embed token is wrong</td></tr><tr><td>20016</td><td>Biometry is not available</td></tr><tr><td>20017</td><td>Registered presence is different than required</td></tr><tr><td>20018</td><td>Token has expired</td></tr><tr><td>20019</td><td>Credential not found</td></tr><tr><td>20020</td><td>Biometry reset from system</td></tr></tbody></table>
