Identity verification for developers
Verify chip-based passports, ID cards and digital wallet credentials. Add face verification to connect the presenter to their identity, or Face search to find possible links to existing records.
Start with a hosted journey or embed verification in your iOS or Android app. Your backend creates the session and retrieves the result.
Choose your integration
Hosted verification
Open a ready-made journey from your website or app. Users are guided to the appropriate device for their credential, then return to your product.
Hosted integration guideNative identity SDKs
Embed verification in your own mobile app. Keep API credentials on your backend and pass the session token to the SDK.
Create your first session
Create an account and generate an API key and secret in your dashboard. From your backend, create a session using HTTP Basic Auth:
curl http://localhost:4000/api/v2/session.create \ -u "$PASSPORTREADER_KEY:$PASSPORTREADER_SECRET" \ -H "Content-Type: application/json" \ -d @- << EOF{ "face_verification": true}EOFStore the returned session id on your backend and use its token to open the hosted journey. URL-encode your return address:
http://localhost:4000/open?token=TOKEN&redirect_url=https%3A%2F%2Fexample.com%2FdoneAfter the user returns, retrieve the result from your backend using session.get. Follow the integration guide for the complete flow and the API reference for request and response fields.
Decide what to accept
A completed flow is a result to evaluate. Apply your issuer trust, document validity and authentication requirements before approving an identity. Retrieve results before the session expires.
For chip-based documents, check data integrity and the issuer certificate. For digital wallets, confirm the supported credential, issuer and attributes for your deployment.
face verification adds face matching and liveness. Face search returns possible links to existing records and is available through the Tailored plan.
Build with a coding agent
Give your coding agent the documentation and requirements for your integration. Choose a hosted flow or native SDK, then review the resulting code in your own application.
Generate API credentials in your dashboard and configure them securely yourself. The prompts use environment variable names; there is no need to paste credentials or identity data into your agent.
Hosted verification flow
For a website or app that opens the PassportReader journey and retrieves the result on its backend.
Integrate PassportReader’s hosted verification flow into this application, following its architecture and code style. Read:https://passportreader.app/integration-guidehttps://passportreader.app/api-referencehttps://passportreader.app/coveragehttps://passportreader.app/dataIf unavailable, ask for the documentation. Do not invent APIs. - Create and retrieve sessions on our backend using server-side credentials. Associate each session id with its authenticated user and attempt; pass only the token to the hosted flow.- Open the documented /open URL with encoded parameters and our configured return URL. After the redirect, retrieve the result on our backend; never trust the redirect as approval.- Handle pending, failed, cancelled and expired sessions. Retrieve results before expiry; use a new session for each attempt.- Confirm issuer trust, credential validity, authentication and face-verification requirements before implementing acceptance. COMPLETED alone is not approval. Follow the documented result checks for the credential type.- Confirm credential coverage; wallets and Face search may require separate integration arrangements.- Keep credentials, tokens and identity data out of logs; minimize retained data. Testing uses production: mock automated tests and ask before live sessions. Implement the flow, test authorization and result handling, and explain configuration and unresolved decisions.Native iOS or Android SDK
For an existing mobile app that embeds verification. The agent should use the guide for your app’s platform.
Integrate PassportReader’s native identity SDK into this application. Identify iOS or Android and follow the project’s architecture and code style. Read the relevant platform guide and API reference:https://passportreader.app/ios-integration-guidehttps://passportreader.app/android-integration-guidehttps://passportreader.app/api-referencehttps://passportreader.app/coveragehttps://passportreader.app/dataIf unavailable, ask for the documentation. Use documented installation, permissions, NFC setup and SDK methods. - Create and retrieve sessions on our backend using server-side credentials. Associate each session id with its authenticated user and attempt; give the app only the session token.- Start the documented SDK flow. On completion, retrieve the result on our backend; never trust a callback as approval.- Handle cancellation, capture/read errors, network failures and expiry. Retrieve results before expiry; use a new session for each attempt.- Confirm issuer trust, credential validity, authentication and face-verification requirements before implementing acceptance. COMPLETED alone is not approval. Follow the documented result checks for the credential type.- Confirm credential and platform support; wallets and Face search may require separate integration arrangements.- Keep credentials, tokens and identity data out of logs; minimize retained data. Testing uses production: mock automated tests and ask before live sessions. Implement the SDK and backend flow, test authorization and result handling, and explain configuration and unresolved decisions.Test and go live
Test completed, failed, cancelled and expired sessions. Confirm that credentials stay on your backend and that only your own acceptance policy can approve an identity.
The free Developer plan includes 25 identities free per month. Testing uses the production service and real credentials; there is no separate sandbox.
Production is $0.15 per identity with no monthly minimum. Failed attempts are free. EUDI wallets are included; early access integration pricing varies by provider.
Create your account, see pricing or discuss your integration.