Skip to main content

Requirements

  • iOS 15 or later
  • Xcode 16 or later
  • A physical device for capture steps: the simulator can load the flow but cannot use the camera

1. Get access to the package

The SDK is distributed from a private GitHub repository while in partner beta. Ask your Legal Talent contact to add your GitHub users to the partner team, then authenticate Xcode with a classic personal access token with repo (read) scope:
Xcode → Settings → Accounts → + → GitHub, and paste the token.

2. Add the package

File → Add Package Dependencies, then enter:
Or in Package.swift:
Link LegalTalentUI for the drop-in flow, or LegalTalentCore for a headless integration.

3. Declare permissions

Add to your app’s Info.plist the keys for the features your workflows use:

4. Create a session on your backend

Your backend creates the session with its API key and returns only the access_token to the app:
Return data.access_token to the app. See Create Session for every parameter.
Never call POST /kyc/sessions from the app, and never embed the API key in the binary.

5. Present the flow

environment defaults to .dev. Always pass it explicitly: .staging while you integrate, .production when you go live. The token must come from the same environment.
Present it however your app navigates: a fullScreenCover, a pushed view, or a hosting controller in UIKit:

6. Handle the result

onComplete fires once, after the last step is submitted. Treat it as a UX signal:
  1. Dismiss the flow and show a “verification in progress” screen.
  2. Wait for your backend to receive kyc.session.processed (or the manual approved / rejected events), or poll GET /kyc/sessions/{id} from your backend.
  3. Update the app from your backend’s state.
If the applicant closes the flow, onExit fires after a confirmation dialog. The session stays open until it expires, so you can present the flow again with the same token and the applicant resumes where they left off.

Headless

For a custom UI, use LegalTalentClient directly:
The client maps the public session API: uploads, step completion and polling. Errors are thrown as LegalTalentError; see Reference.

Localize the liveness screens

The face-liveness detector is rendered by AWS Amplify, which ships English only. To show it in Spanish or Portuguese, copy the en.lproj, es.lproj and pt.lproj folders from liveness-strings/ in the SDK repository into your app target and list es and pt as app localizations. See Customization.