Identify Africa SDK

A Flutter SDK for Identify Africa's KYC and identity verification services. This SDK provides a simple, secure way to access Identify Africa's verification APIs within Flutter applications.

Features

  • National ID verification
  • Secure authentication handling
  • Comprehensive error handling and reporting
  • Extensible architecture for future verification types
  • Cross-platform support (iOS, Android, Web)

Installation

Add the package to your pubspec.yaml:

dependencies:
  identify_africa_sdk: ^0.1.0

Then run:

flutter pub get

Usage

Initialize the SDK

First, initialize the SDK with your API credentials:

final identifyAfrica = IdentifyAfrica(
  username: 'YOUR_API_USERNAME',
  apiSecret: 'YOUR_API_SECRET',
  baseUrl: 'https://partner.identifyafrica.io',
);

You must replace YOUR_API_USERNAME and YOUR_API_SECRET with the credentials provided by Identify Africa. Contact our support team if you don't have API credentials.

National ID Verification

Verify a Kenyan National ID with a simple API call:

try {
  final response = await identifyAfrica.idVerification.verifyNationalId('12345678');
  
  if (response.success) {
    // Access the verified data
    final data = response.data;
    print('First Name: ${data?.firstName}');
    print('Last Name: ${data?.lastName}');
    print('Other Name: ${data?.otherName}');
    print('Full Name: ${data?.name}');
    print('Gender: ${data?.gender}');
    print('Date of Birth: ${data?.dob}');
    print('Citizenship: ${data?.citizenship}');
    print('ID Number: ${data?.idNumber}');
    print('Serial Number: ${data?.serialNo}');
    print('Valid: ${data?.valid}');
    
    // The unique request ID for tracking and support
    print('Request ID: ${response.requestId}');
  } else {
    print('Verification failed: ${response.message}');
    print('Response code: ${response.responseCode}');
    print('Request ID: ${response.requestId}');
  }
} catch (e) {
  print('Error: $e');
}

Response Structure

All API responses follow a consistent structure:

  • success: Boolean indicating if the request was successful
  • responseCode: HTTP status code
  • message: Human-readable message about the response
  • data: The verification data (specific to each verification type)
  • requestId: Unique identifier for the request (useful for support)

Available Data Fields for National ID

Field Description Type
firstName First name of the individual String
lastName Last name of the individual String
otherName Middle/other names String
name Full name String
gender Gender (Male/Female) String
dob Date of birth (YYYY-MM-DD) String
citizenship Nationality String
idNumber National ID number String
serialNo ID card serial number String
valid Whether the ID is valid Boolean

Error Handling

The SDK provides specific exception types for better error handling:

  • AuthenticationException: Authentication failed (check your credentials)
  • ApiException: API returned an error response
  • ServerException: Server-side error occurred
  • NetworkException: Network connection issues
  • ValidationException: Input validation failed

Example of Comprehensive Error Handling

try {
  final response = await identifyAfrica.idVerification.verifyNationalId('12345678');
  // Process successful response...
} catch (e) {
  if (e is AuthenticationException) {
    print('Authentication failed: ${e.message}');
    // Handle authentication errors (e.g., show login screen)
  } else if (e is ApiException) {
    print('API error: ${e.message}, Status: ${e.statusCode}');
    // Handle API errors based on status code
  } else if (e is ServerException) {
    print('Server error: ${e.message}');
    // Handle server errors (e.g., retry with backoff)
  } else if (e is NetworkException) {
    print('Network error: ${e.message}');
    // Handle network errors (e.g., check connectivity)
  } else {
    print('Unexpected error: $e');
    // Handle other errors
  }
}

Requirements

  • Flutter 2.0.0 or higher
  • Dart 2.17.0 or higher
  • Valid Identify Africa API credentials

Example Project

For a complete working example, see the example folder in the repository. The example demonstrates:

  • Initializing the SDK
  • Making verification requests
  • Handling responses
  • Error handling

Future Enhancements

The SDK is designed to be extensible. Future updates will include support for:

  • Alien ID verification
  • Driving License verification
  • Business Registration verification
  • Phone number verification
  • Bank account verification
  • Vehicle plate verification
  • Document verification
  • Liveness checks

Support

For support, please contact:

License

This project is licensed under the MIT License - see the LICENSE file for details.

Security

This SDK communicates securely with the Identify Africa API using HTTPS. API credentials are transmitted with every request but never stored locally.

Security Best Practices:

  • Store API credentials securely
  • Implement proper access controls in your application
  • Do not hardcode credentials in your source code
  • Consider using environment variables for credentials in production