Prerequisites
To use Para, you need an API key. This key authenticates your requests to Para services and is essential for integration.Don’t have an API key yet? Request access to the Developer Portal to create API keys, manage billing, teams, and more.
Installation
Start by installing the Para SDK:Project Setup
To set up associated domains for passkey functionality in your Flutter project, you need to configure both iOS and Android platforms:- iOS
- Android

- Open your Flutter project’s iOS folder in Xcode
- Select your target and go to “Signing & Capabilities”
- Click ”+ Capability” and add “Associated Domains”
- Add the following domains:
webcredentials:app.beta.usecapsule.comwebcredentials:app.usecapsule.com
Important: You must register your TeamId and BundleId with Para via the Developer Portal to use associated domains. This is required by Apple for passkey security. Allow up to 24 hours for domain propagation.
Initializing Para
To use Para’s features, you’ll need to initialize a Para client instance that can be accessed throughout your app. This client handles all interactions with Para’s services, including authentication, wallet management, and transaction signing. Create a file (e.g.,lib/services/para_client.dart) to initialize your Para client:
You can access
para from anywhere in your app by importing the file where you initialized it. This singleton pattern
ensures consistent state management across your application.Para offers two hosted environments:
Environment.BETA (alias Environment.DEVELOPMENT) for testing, and
Environment.PROD (alias Environment.PRODUCTION) for live use. Select the environment that matches your current
development phase.Using the Para SDK
The Para SDK provides multiple authentication methods including email and phone. Here’s how to implement these methods in your Flutter application.Beta Testing Credentials In the
BETA Environment, you can use any email ending in @test.getpara.com (like
dev@test.getpara.com) or US phone numbers (+1) in the format (area code)-555-xxxx (like (425)-555-1234). Any OTP
code will work for verification with these test credentials. These credentials are for beta testing only. You can
delete test users anytime in the beta developer console to free up user slots.- Email Authentication
- Phone Authentication
When
createWallet is called with skipDistribute: false, Para automatically handles the distribution of backup
shares. Make sure to securely store and display the recovery secret to the user in your app as it’s essential for account recovery.Working with Wallets
Once a user is authenticated, you can access and manage their wallets:Examples
For practical implementations of the Para SDK in Flutter environments, check out our GitHub repository:Troubleshooting
If you encounter issues during the integration or usage of the Para SDK in your Flutter application, here are some common problems and their solutions:Para SDK initialization fails
Para SDK initialization fails
If you’re having trouble initializing the Para SDK:
- Ensure that you’re using the correct API key and environment.
- Check that all necessary dependencies are installed properly.
- Look for any Dart errors in your Flutter debug console.
- Verify that your Flutter version is compatible with the Para SDK.
Passkey operations fail or throw errors
Passkey operations fail or throw errors
If passkey creation, retrieval, or usage isn’t working:
- Verify that you’ve set up associated domains correctly in your iOS project.
- For Android, check that you’ve configured your
build.gradlefile with the namespace fix. - Make sure you’ve provided the correct SHA-256 fingerprint to the Para team for Android.
- Ensure that biometric authentication is enabled on the test device.
- For Android, confirm the test device has a Google account signed in.
Authentication fails or API requests are rejected
Authentication fails or API requests are rejected
If you’re experiencing authentication issues:
- Double-check that your API key is correct and properly set in your Para client initialization.
- Verify you’re using the correct environment (
betaorprod) that matches your API key. - Ensure your account has the necessary permissions for the operations you’re attempting.
- Check for any network-related issues that might be blocking API requests.
Flutter platform-specific issues
Flutter platform-specific issues
If you’re encountering platform-specific problems:
- For iOS, ensure your team ID and bundle ID are correctly registered with Para.
- For Android, confirm your package name and SHA-256 fingerprint are properly registered.
- Check that you’re running on a physical device or emulator that supports biometric authentication.
- Verify that your Flutter plugins are compatible with your Flutter SDK version.



