Infila API
KYC & Fraud Detection API
Verify a customer's identity and check their fraud/blacklist status with a few REST calls. Built for car-rental fleets, lenders, and marketplaces that need fast identity checks in India.
Overview
The API is REST over HTTPS. Requests and responses are JSON. Every request is authenticated with your client_id and client_secret and billed per successful call from your prepaid wallet.
https://api.infila.in/apiAuthentication
Send your credentials as request headers on every call. Get them from your developer dashboard (Credentials tab). The secret is shown once — store it securely on your server; never ship it in client-side code.
client_id: infila_live_xxxxxxxxxxxxxxxxxxxxxxxx
client_secret: <your client_secret>
Content-Type: application/jsonIf your proxy strips underscore headers, the API also accepts x-client-id / x-client-secret.
Wallet & pricing
Each account has a prepaid wallet seeded with ₹500 of free test credit. A successful call debits its price; failed calls (invalid input, auth failure) are not charged. When the balance can't cover a call you get a 402.
| Endpoint | Price (INR) | Billed |
|---|---|---|
| POST /fraud-detection | ₹20 | on 2xx |
| POST /kyc/aadhaar | ₹10 | on 2xx (initiation) |
| POST /kyc/driving-license | ₹10 | on 2xx |
| GET /wallet | Free | — |
Full KYC (Aadhaar + Driving Licence) = ₹20.
Errors
Errors return the matching HTTP status and a JSON body of the shape:
{ "statusCode": 402, "message": "Human-readable explanation" }| Status | Meaning |
|---|---|
| 400 | Bad request — required parameters missing or invalid. |
| 401 | Missing or invalid client_id / client_secret. |
| 402 | Insufficient wallet balance — top up to continue. |
| 403 | Credentials revoked. |
| 406 | Verification failed (e.g. invalid DL / DOB). Not billed. |
/api/fraud-detection₹20Fraud detection — customer profile
Look up a customer by any identifier and get their complete profile — identity, photo, contacts, ratings, KYC status and the blocked / blacklist signal. Read-only. Provide at least one of the fields below.
Request body
| Field | Type | Description |
|---|---|---|
| phone_number | string | Primary or secondary contact number. |
| aadhaar_id | string | Aadhaar number. |
| driving_license_id | string | Driving licence number. |
| email_id | string | Email address. |
Sample request
curl -X POST https://api.infila.in/api/fraud-detection \
-H "client_id: infila_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
-H "client_secret: <your client_secret>" \
-H "Content-Type: application/json" \
-d '{ "phone_number": "9666232244" }'Sample response — 200
{
"found": true,
"count": 1,
"results": [
{
"customer_id": "3f9a1c2e-7b44-4e10-9c1a-2d5e8f0b6a71",
"full_name": "Ravi Kumar",
"display_name": "Ravi",
"profile_pic": "https://cdn.infila.in/customers/3f9a1c2e.jpg",
"email_id": "[email protected]",
"primary_contact_number": "9666232244",
"secondary_contact_number": "9876543210",
"date_of_birth": "1995-08-15",
"gender": "male",
"present_address": "Flat 402, Madhapur, Hyderabad, 500081",
"permanent_address": "12-3-45, Guntur, Andhra Pradesh, 522001",
"status": "active",
"is_blocked": false,
"member_since": "2024-11-02T09:14:22.001Z",
"ratings": {
"average_rating": 4.6,
"rating_count": 12,
"average_kms_per_day": 118.5
},
"kyc": {
"aadhaar_id": "123456781234",
"aadhaar_status": "verified",
"driving_license_id": "TS01201900012345",
"driving_license_status": "verified",
"driving_license_expiry_date": "2032-05-14",
"is_blacklisted": false
}
}
]
}Response fields
| Field | Description |
|---|---|
| customer_id | Infila's stable identifier for the customer. |
| full_name · display_name | Legal name and preferred display name. |
| profile_pic | Profile photo (URL or base64), if the customer has one. |
| email_id · primary / secondary_contact_number | Contact details on file. |
| date_of_birth · gender | Demographics, when captured. |
| present_address · permanent_address | Addresses on file. |
| status | active, blocked, etc. |
| is_blocked | The fraud signal. True when status is blocked or KYC is blacklisted — do not onboard. |
| member_since | When the customer first joined Infila. |
| ratings.average_rating · rating_count | Past-trip rating and how many trips it's based on. |
| ratings.average_kms_per_day | Typical daily usage across past trips. |
| kyc.aadhaar_id · aadhaar_status | Aadhaar number and verification state (verified, under_verification, not_verified). |
| kyc.driving_license_id · _status · _expiry_date | Driving licence number, verification state and expiry. |
| kyc.is_blacklisted | Whether this identity is on Infila's blacklist. |
When no customer matches: { "found": false, "count": 0, "results": [] } (still billed — a completed lookup). If a number matches more than one profile, every match is returned in results. is_blocked is true when the customer's status is blocked or their KYC is blacklisted.
/api/kyc/driving-license₹10Driving Licence KYC
Synchronous verification against the public registry — one call, one result.
Request body
| Field | Type | Required |
|---|---|---|
| driving_license_id | string | Yes |
| date_of_birth | string (YYYY-MM-DD) | Yes |
Sample request
curl -X POST https://api.infila.in/api/kyc/driving-license \
-H "client_id: infila_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
-H "client_secret: <your client_secret>" \
-H "Content-Type: application/json" \
-d '{ "driving_license_id": "TS0120200000000", "date_of_birth": "1995-08-15" }'Sample response — 200
{
"verified": true,
"driving_license_id": "TS0120200000000",
"name": "RAVI KUMAR",
"class_of_vehicles": [
{ "cov": "LMV", "expiry_date": "2032-05-14" },
{ "cov": "MCWG", "expiry_date": "2032-05-14" }
]
}Failure — 406 (not billed)
{ "statusCode": 406, "message": "Unable to verify driving licence. Please check the licence number and date of birth." }/api/kyc/aadhaar₹10Aadhaar KYC (DigiLocker)
Aadhaar verification is a hosted DigiLocker flow. This call initiates it and returns a URL to redirect your user to. The verified result is delivered asynchronously to your registered websocket / callback — it is not in the response to this call. Billed ₹10 on initiation.
Sample request
curl -X POST https://api.infila.in/api/kyc/aadhaar \
-H "client_id: infila_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
-H "client_secret: <your client_secret>" \
-H "Content-Type: application/json" \
-d '{}'Sample response — 200
{
"status": "initiated",
"aadhaar_url": "https://in.decentro.tech/kyc/digilocker/...",
"reference_id": "0b0e5b2c-8f6a-4b1e-9f3a-9d0c2a11c7e2",
"transaction_id": "DECENTRO12345",
"message": "Redirect the user to aadhaar_url to complete Aadhaar KYC. The verified result is delivered via the websocket / callback channel."
}Redirect the user to aadhaar_url. On completion, the verified data arrives on your websocket / callback keyed by reference_id. Talk to us to register your callback endpoint.
/api/walletFreeWallet endpoint
Your current balance and recent transactions (credits and per-call debits).
Sample request
curl https://api.infila.in/api/wallet \
-H "client_id: infila_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
-H "client_secret: <your client_secret>"Sample response — 200
{
"currency": "INR",
"balance": 460,
"transactions": [
{
"id": "86ab9a22-28dc-45fd-835e-6e796f75717d",
"type": "DEBIT",
"amount": "20.00",
"balance_after": "480.00",
"endpoint": "POST /api/fraud-detection",
"reference": null,
"status": "SUCCESS",
"created_at": "2026-08-16T03:41:07.409Z"
},
{
"id": "9ecbd41a-d498-4511-94d3-9f3c8d8f5475",
"type": "SEED_CREDIT",
"amount": "500.00",
"balance_after": "500.00",
"endpoint": null,
"reference": "Initial free test credit",
"status": "SUCCESS",
"created_at": "2026-08-16T03:38:00.000Z"
}
]
}Ready to integrate?
Sign in to your developer dashboard to grab your keys, watch your wallet, and test every endpoint live.