Complete ID check Onboarding Guide
This comprehensive guide will take you from zero to production with ARGOS ID check. Whether you’re a developer new to identity verification or migrating from another solution, this guide covers everything you need to know.- ARGOS Identity account (Sign up here)
- Basic knowledge of REST APIs
- Development environment with internet access
Table of Contents
Part 1: Foundation
Part 2: Integration
Part 3: Production
Part 1: Foundation
What is ARGOS ID check?
ARGOS ID check is a comprehensive identity verification platform that combines AI-powered document verification with fraud detection and compliance features. Core Capabilities:Document Verification
Data Extraction
Fraud Detection
Compliance
User Submits Documents
AI Analysis
Verification Decision
Results Delivered
Account Setup and Dashboard Orientation
Let’s get you set up and familiar with the dashboard.Create Your Account
- Visit idcheck.argosidentity.com
- Click “Sign Up” and complete registration
- Verify your email address
- Log in to access your dashboard

Navigate the Dashboard
- Submissions: View and manage all verification submissions
- Settings: Configure project settings, webhooks, and security
- Access Management: API keys, Liveform URLs, and IP whitelisting
- Analytics: Track verification metrics and success rates
- Project Settings: Verification rules, document types, and policies
Locate Your API Credentials
- API Key: Your authentication key for API requests (keep this secure!)
- Project ID (PID): Your unique project identifier
- Liveform URL: Your hosted verification page URL
Core Concepts You Need to Know
Before diving into integration, let’s understand the key concepts:Submissions
Submissions
- Submission ID: Unique identifier (
sub_abc123
) - KYC Status:
approved
,rejected
, orpending
- User Data: Extracted information (name, DOB, nationality, etc.)
- Images: Document photos and selfies
- Metadata: Timestamps, IP address, device info
Liveform vs API Integration
Liveform vs API Integration
- Use ARGOS-hosted verification page
- Customize via URL parameters
- No UI development required
- Best for: Quick deployment, mobile apps
- Build custom verification UI
- Full programmatic control
- Integrate into existing workflows
- Best for: Custom UX, complex workflows
Webhooks
Webhooks
- Triggered when submission status changes
- Delivered as POST requests to your endpoint
- Include full submission data
- Support retry mechanism
approved
- Verification approvedrejected
- Verification rejectedpending
- Manual review requiredupdated
- Data updateddeleted
- Submission deleted
Query Parameters and Tokens
Query Parameters and Tokens
- Pre-fill user data (
email
,userid
) - Restrict countries/document types
- Override verification policies
- Control form fields
- One-time use URLs
- Prevent URL sharing
- Expire after 3 minutes or first use
- Up to 100,000 tokens per project
Encryption and Security
Encryption and Security
- Encrypt sensitive URL parameters
- Protect user data in transit
- Encrypt API request/response bodies
- Encrypt webhook payloads
- Generate dedicated encryption keys
- Separate from API keys
Part 2: Integration
Now let’s integrate ID check into your application. Choose your integration method:- Liveform Integration
- API Integration
Liveform Integration (Recommended for Beginners)
The fastest way to get identity verification working in your app.Step 1: Basic Liveform Setup
Get Your Liveform URL
- Log in to Dashboard
- Go to Settings → Access Management
- Copy your Liveform URL:
Test the Basic Flow
- Desktop: Shows QR code for mobile scanning
- Mobile: Direct verification interface

Integrate into Your App
Step 2: Customize with Query Parameters
Enhance the user experience by pre-filling data and customizing behavior.Pre-fill User Information
Pre-fill User Information
Parameter | Type | Description | Example |
---|---|---|---|
email | string | User’s email | user@example.com |
userid | string | Your internal user ID | user_12345 |
cf1 , cf2 , cf3 | string | Custom fields for metadata | campaign_id |
sid | string | Submission ID (for updates) | sub_abc123 |
cf1
, cf2
, cf3
) to track campaign IDs, user segments, or any metadata you need for analytics.Bypass Verification Policies
Bypass Verification Policies
Parameter | Type | Description |
---|---|---|
blacklistCountries | boolean | Set false to allow blacklisted countries |
ageLimit | boolean | Set false to disable age restrictions |
approvePeriod | boolean | Set false to disable duplicate check for approved |
rejectPeriod | boolean | Set false to disable duplicate check for rejected |
rejectDuplicateUser | boolean | Set true to enable duplicate prevention |
Restrict Countries and Document Types
Restrict Countries and Document Types
passport
drivers_license
government_id
residence_permit
pancard
aadhaar
identification_card
allowedCountries
, allowedIdTypes
, and other sensitive parameters. See the Encryption Guide.Pre-select Country and Document Type
Pre-select Country and Document Type
selectedIdType
must be used withselectedIssuingCountry
- Cannot be used simultaneously with
allowedCountries
orallowedIdTypes
Enable Phone Number Verification
Enable Phone Number Verification
- Phone verification uses SMS OTP
- 91 countries currently don’t support SMS verification (see list)
- Cannot be used with
selectedIssuingCountry
andselectedIdType
(will be fixed in future update)
Step 3: Implement Private Mode (Optional)
Private mode uses tokens to create one-time-use verification URLs.Use Cases:- Prevent URL sharing between users
- Ensure each verification is unique
- Add expiration to verification links
- Track specific user sessions
Register Tokens via API
Generate Tokenized URL
Handle Token Expiration
- More than 3 minutes have passed since first use
- A submission with the token reaches determined status (approved/rejected/pending)
- Maximum 100,000 tokens per project
- Maximum 500 tokens per API request
- Token ID format: 8-64 characters, alphanumeric +
-_.
Step 4: Configure Return URL
Redirect users back to your app after verification with results.Set Return URL in Dashboard
- Go to Settings → General
- Enter your return URL:
- Click Save
Receive Verification Results
userid
- User ID from original URLemail
- User’s emailkycStatus
-approved
,rejected
, orpending
cf1
,cf2
,cf3
- Custom fields
encrypted
parameter. See Return URL Guide.Handle the Redirect
Liveform Integration Complete!
You now have a working Liveform integration. Test it end-to-end:Test Desktop Flow
Test Mobile Flow
Test with Parameters
Test Return URL
Next: Set Up Webhooks
Step 5: Set Up Webhooks
Webhooks provide real-time notifications when verification events occur. This is critical for production deployments.Create a Webhook Endpoint
- Always respond with 200 OK quickly (within 5 seconds)
- Process webhooks asynchronously if they take time
- Handle duplicate webhooks (use submission ID to deduplicate)
- Implement retry logic on your end for failed processing
- Log all webhooks for debugging
Register Webhook URL in Dashboard
- Log in to Dashboard
- Navigate to Settings → Access Management
- Enter your webhook URL in the Webhook URL field:
- Click Save

Test Webhook Delivery
Handle Webhook Events
Event | Trigger | Use Case |
---|---|---|
approved | Verification approved | Update user status, grant access |
rejected | Verification rejected | Notify user, request resubmission |
pending | Manual review needed | Alert admins, inform user |
updated | Data modified | Sync changes to your database |
deleted | Submission deleted | Clean up related data |
created | Submission created | Track new verifications |
retry | User retried verification | Monitor retry patterns |
injection | Data injected via API | Log API operations |
aml | AML check completed | Process compliance results |
Part 3: Production Deployment
Security Configuration
Before going live, implement these essential security features:1. Enable Data Encryption
1. Enable Data Encryption
Enable in Dashboard
- Navigate to Settings → Access Management
- Toggle ON the “Secure Data Transfer” option
- Click Save

Implement Encryption in Code
- API requests/responses: Use AES-256-ECB
- Webhooks: Use AES-256-CBC
- Always hash API key with SHA-256 first
Test Encryption
- Download and run the tool
- Enter your API key
- Test encryption/decryption with sample data
- Compare results with your code
2. Configure IP Whitelisting
2. Configure IP Whitelisting
Find Your Server IPs
Add IPs to Whitelist
- Navigate to Settings → Access Management → IP Whitelist
- Enter your server IP addresses (one per line):
- Click Save
Test Access
- Production servers
- Staging servers
- CI/CD pipeline IPs (if applicable)
- Admin/developer IPs for testing
3. Implement Private Mode
3. Implement Private Mode
- High-security applications (financial, healthcare)
- Preventing URL sharing/forwarding
- Time-sensitive verifications
- Tracking specific user sessions
4. Secure API Key Management
4. Secure API Key Management
.gitignore
:5. Implement Rate Limiting
5. Implement Rate Limiting
- API calls: 100 requests/minute per IP
- Webhook retries: 5 attempts with exponential backoff
- Token registration: 500 tokens per request, 100k total
Testing Checklist
Before going live, test all integration points thoroughly:Functional Testing
Liveform Flow Testing
Liveform Flow Testing
- QR code displays correctly
- QR code scans and opens mobile flow
- All query parameters work as expected
- Return URL redirects with correct data
- Error messages display properly
- Form loads on mobile browsers
- Camera permissions request works
- Document capture is smooth
- Selfie capture works
- Upload completes successfully
- Success/error screens display
API Testing
API Testing
- POST /submission creates submissions
- PUT /image uploads images successfully
- GET /submission retrieves correct data
- PATCH /submission updates data
- DELETE /submission removes data
- All error codes handled properly
- Encrypted requests/responses work
- Rate limits are respected
Webhook Testing
Webhook Testing
- Webhook endpoint receives events
- All event types handled correctly
- Webhook signature verification works (if implemented)
- Duplicate webhooks are deduplicated
- Failed processing doesn’t block webhook delivery
- Encrypted webhooks decrypt properly
- Retry logic works for failed deliveries
Security Testing
API Security
API Security
- Invalid API keys are rejected
- Non-whitelisted IPs are blocked (403)
- Encrypted data can’t be read in transit
- API keys are not exposed in client code
- HTTPS is enforced for all requests
Token Security
Token Security
- Tokens expire after 3 minutes
- Used tokens cannot be reused
- Invalid tokens show proper error
- Token pool limit is enforced (100k)
Data Security
Data Security
- Personal data is encrypted in transit
- Webhook payloads are encrypted (if enabled)
- Images are served over HTTPS
- Sensitive data is not logged
Error Handling Testing
- Network errors: Timeout, connection failed
- Invalid data: Malformed JSON, wrong types
- Missing fields: Required parameters missing
- Rate limiting: Too many requests
- Server errors: 500 responses
- Webhook failures: Endpoint down, timeout
- Image issues: File too large, invalid format
- Expired tokens: Token already used/expired
User Experience Testing
- Verification flow is intuitive
- Error messages are helpful
- Loading states are shown
- Success confirmations display
- Mobile experience is smooth
- Multiple document types work
- Different countries work
- Return URL experience is good
Performance Testing
- API responses are fast (<2s)
- Image uploads complete quickly
- Webhooks are received promptly
- Large payloads don’t timeout
- Concurrent requests handled
- Database writes are efficient
Go-Live Checklist
Final checks before production launch:Configuration Review
- Webhook URL is correct and HTTPS
- IP whitelist includes all production IPs
- Secure Data Transfer is enabled
- Return URL is configured correctly
- Project settings match requirements:
- Accepted document types
- Country blacklist/whitelist
- Age restrictions
- Duplicate prevention rules
- AML settings (if applicable)
Code Review
- API keys loaded from environment variables
- No hardcoded credentials in code
- Error handling is comprehensive
- Logging is implemented (but not sensitive data!)
- Rate limiting is in place
- Webhook retry logic implemented
- Database queries are optimized
- Frontend doesn’t expose API keys
Infrastructure
- Production servers are provisioned
- Load balancer configured (if needed)
- SSL certificates installed
- Database is backed up
- Monitoring/alerting set up
- CDN configured for static assets
- Firewall rules configured
Monitoring Setup
- Verification success rate
- Average completion time
- API error rate
- Webhook delivery rate
- System uptime
- Database performance
Documentation
- Internal documentation written
- Runbook created for ops team
- Incident response plan documented
- API integration guide for team
- User flow diagrams created
Rollout Plan
- Phase 1: 5% of traffic for 48 hours
- Monitor metrics, fix issues
- Phase 2: 25% of traffic for 24 hours
- Monitor metrics, fix issues
- Phase 3: 100% of traffic
Launch!
- Enable production integration
- Monitor dashboards actively
- Be ready for support requests
- Have rollback plan ready
- Celebrate! 🎉
Advanced Features
AML (Anti-Money Laundering) Screening
Perform compliance checks against global watchlists and sanctions lists.Enable AML in Dashboard
- Navigate to Settings → General → AML Settings
- Enable AML screening
- Configure screening options:
- Watchlist sources (UN, OFAC, EU, etc.)
- Match threshold (fuzzy matching sensitivity)
- Auto-reject on match
Request AML Check via API
Retrieve AML Report
Handle AML Results
Ongoing AML Monitoring
Continuously monitor approved users against updated watchlists.Data Projection (Field Filtering)
Control which data fields are collected and displayed. Use Cases:- Minimize data collection for GDPR compliance
- Create different verification levels (basic vs full)
- Customize for specific document types or countries
Create Projection via API
Use Projection in Liveform
projectionName
instead of projectionId
, but they cannot be used together.Result
- Only collect name, birth date, and nationality
- Skip other fields (address, document number, etc.)
- Return only projected fields in API responses and webhooks
Multi-Language Support
ID check Liveform supports multiple languages for global users. Available Languages:- English (
en
) - Korean (
ko
) - Japanese (
ja
) - Spanish (
es
) - French (
fr
) - German (
de
) - And more…
Troubleshooting Guide
Common issues and how to resolve them:Webhooks not being received
Webhooks not being received
- No webhook events arriving
- Webhook endpoint not being called
-
Webhook URL not HTTPS
-
Endpoint returning non-200 status
- Check your server logs
- Ensure endpoint returns
200 OK
within 5 seconds - Process webhooks asynchronously if needed
-
Firewall blocking ARGOS IPs
- Whitelist ARGOS webhook IPs in your firewall
- Check with ARGOS support for IP ranges
-
Endpoint URL typo in dashboard
- Double-check the URL in Settings → Access Management
- Test endpoint with curl:
curl -X POST https://yourapp.com/webhook
API returning 403 Forbidden
API returning 403 Forbidden
-
Invalid or missing API key
-
IP not whitelisted
- Check your server’s public IP:
curl ifconfig.me
- Add to IP whitelist in dashboard
- If using proxy/load balancer, whitelist proxy IP
- Check your server’s public IP:
-
Using wrong API key
- Verify you’re using the correct project’s API key
- Check for copy-paste errors
- Regenerate API key if needed
Encryption/Decryption errors
Encryption/Decryption errors
- “Invalid encrypted data” errors
- Decrypted data is gibberish
JSON parse error
when decrypting
-
Using wrong encryption mode
- API requests/responses: Use AES-256-ECB
- Webhooks: Use AES-256-CBC
- Query strings: Use AES-256-ECB
-
Not hashing API key first
-
Encoding issues
-
Wrong key extraction (ECB)
Images failing to upload
Images failing to upload
- Image upload returns 400 or 413 error
- “Image too large” errors
- “Invalid image format” errors
-
Image too large (>10MB)
-
Unsupported file format
- ✅ Supported: JPEG, PNG
- ❌ Not supported: GIF, BMP, WebP, HEIC
-
Poor image quality
- Ensure minimum resolution: 1280x720
- Check image isn’t blurry
- Ensure all document edges visible
- Verify no glare on document
-
Wrong Content-Type header
Liveform not loading or showing errors
Liveform not loading or showing errors
- Blank screen when opening Liveform URL
- “Invalid project ID” error
- QR code not displaying
-
Invalid project ID (PID)
- Verify PID from dashboard Settings → Access Management
- Check for typos in URL
-
Malformed query parameters
- URL encode all parameter values
- Check for proper formatting
-
Encrypted parameter issues
- Verify encryption is correct
- Ensure URL encoding of encrypted value
- Check encryption tool output matches
-
Browser compatibility
- Check supported browsers
- Test in different browsers
- Check for JavaScript errors in console (F12)
Duplicate submission errors
Duplicate submission errors
- “Duplicate user detected” error
- User can’t submit even though they haven’t before
-
Duplicate prevention enabled
- Check dashboard Settings → Project Settings → Duplicate Prevention
rejectDuplicateUser
is enabled- User with same name+DOB+nationality already verified
-
Approved/Reject period restrictions
- Dashboard settings prevent re-submission within X days
- Override with query parameters:
-
Same email/userid reused
- Use unique identifiers for each user
- Don’t reuse test email addresses
Rate limit errors (429)
Rate limit errors (429)
-
Implement retry with exponential backoff
-
Implement request queuing
-
Cache API responses
Tokens expired or invalid
Tokens expired or invalid
- “Token expired” error
- “Token not found” error
- “Token already used” error
-
Token expired (>3 minutes since first use)
-
Token already used
- Each token can only create one submission
- Generate new token for each verification attempt
-
Token pool exceeded (100k limit)
- Delete old tokens:
- Enable auto-deletion in dashboard
- Delete old tokens:
-
Token format invalid
- Must be 8-64 characters
- Only alphanumeric +
-_.
- Must start/end with letter or number
Best Practices Summary
For All Integrations
Security
- Enable Secure Data Transfer encryption
- Use IP whitelisting in production
- Never expose API keys in client code
- Implement Private Mode for sensitive apps
- Regularly rotate API keys (quarterly)
Error Handling
- Handle all HTTP error codes (400, 403, 500, etc.)
- Implement retry logic with exponential backoff
- Log errors for debugging (without sensitive data)
- Show user-friendly error messages
- Have fallback flows for critical errors
Webhooks
- Always respond with 200 OK quickly (<5s)
- Process webhooks asynchronously
- Implement idempotency (deduplicate)
- Log all webhook events
- Monitor webhook delivery rate
- Implement retry logic for processing failures
Testing
- Test all integration points before launch
- Use test accounts/data during development
- Test error scenarios thoroughly
- Perform load testing for high-traffic apps
- Monitor in staging before production
Performance
- Cache API responses when appropriate
- Implement rate limiting on your end
- Optimize database queries
- Use CDN for static assets
- Monitor API response times
Compliance
- Minimize data collection (use projections)
- Implement data retention policies
- Enable AML screening for regulated industries
- Keep audit logs of verifications
- Follow GDPR/CCPA requirements
Additional Resources
API Reference
Webhook Reference
Encryption Guide
Query String Guide
Supported Documents
Browser Support
Changelog
Dashboard Guide
Support
Need help? We’re here for you:Email Support
Documentation
Community
Enterprise Support
What’s Next?
Start Building
Join the Community
Stay Updated
Provide Feedback