NAV

Introduction

Welcome to the Jeff Data API! This site contains technical information about integration of multiple API services that Jeff offers to it's partners.

Authorization

Partner is given a username and password which must be used for an authentication.

Pass credentials on each request using HTTP Basic Auth

Using query parameters

If it is not possible to use HTTP Basic Auth, then add credentials as query parameters on each request.

API versioning and change management

The service URLs (except Partner Events) contain a version number. A new version number is issued only if there are incompatible API changes that can break existing integrations.

Version name Description
1.3 Added possibility to get only fraud data in case of non-lead data match responses in Lead Data API
1.2 Added possibility of non-lead data match responses in Lead Data API
1.1 Initial stable base version.

Partner Events

application completed

https://api.jeff-app.com/partners-api/events/application-completed?lead-id={jeff-lead-id}&external-id={partner-internal-id}&username={partner-username}&password={partner-password}

lead rejected

https://api.jeff-app.com/partners-api/events/lead-rejected?lead-id={jeff-lead-id}&external-id={partner-internal-id}&username={partner-username}&password={partner-password}

lead rejected with detailed reason

https://api.jeff-app.com/partners-api/events/lead-rejected?lead-id={jeff-lead-id}&external-id={partner-internal-id}&username={partner-username}&password={partner-password}&rejection-reason={any string explaining why lead was rejected}

lead qualified

https://api.jeff-app.com/partners-api/events/lead-qualified?lead-id={jeff-lead-id}&external-id={partner-internal-id}&username={partner-username}&password={partner-password}`

loan rejected

https://api.jeff-app.com/partners-api/events/loan-rejected?lead-id={jeff-lead-id}&external-id={partner-internal-id}&username={partner-username}&password={partner-password}`

loan rejected with detailed reason

https://api.jeff-app.com/partners-api/events/loan-rejected?lead-id={jeff-lead-id}&external-id={partner-internal-id}&username={partner-username}&password={partner-password}&rejection-reason={any string explaining why loan was rejected}`

loan issued

https://api.jeff-app.com/partners-api/events/loan-issued?lead-id={jeff-lead-id}&external-id={partner-internal-id}&username={partner-username}&password={partner-password}`

s2s loan issued

https://api.jeff-app.com/partners-api/events/loan-issued?lead-s2s-id={jeff-lead-s2s-id}&external-id={partner-internal-id}&username={partner-username}&password={partner-password}`

marketing api loan issued

https://api.jeff-app.com/partners-api/events/loan-issued?lead-marketing-api-id={jeff-lead-marketing-api-id}&external-id={partner-internal-id}&username={partner-username}&password={partner-password}`

There are five types of events:

Requests can be made using GET or POST methods, to the following url: https://api.jeff-app.com/partners-api

Each request must contain:

So the final structure is like this:

Event Sequence

It is important to understand the logic of the sequence of the events described in the previous section. If any of the events is sent without previously sending events before it in the sequence, the unsent events are autogenerated.

List of possible sequences:

Rejection Reasons

The following event types

may contain additional query parameter rejection-reason with an arbitrary string values describing the reason of a rejection in partner's system

Repeated leads

In case agreement with Jeff states that you are also reporting data for leads that were already present in your system, you should append &repeated=true to these postbacks. Example for a loan issued event: https://api.jeff-app.com/partners-api/events/loan-issued?lead-id={jeff-lead-id}&external-id={partner-internal-id}&username={partner-username}&password={partner-password}&repeated=true

Error Responses

Any illogical event requests will be declined with HTTP Status 400, examples:

Lead Data

In case of a match an HTTP 200 response is returned with a JSON body in the following form:

{
  "id": "0facfde9-98c7-4915-8b04-9a0a31a8c582",
  "created": "2020-12-09T17:40:37",
  "email": "dave.black@mail.com",
  "phoneNumber": "+8499999999",
  "emailVerified": true,
  "emailVerificationDateTime": "2020-12-09T20:40:37",
  "phoneVerified": true,
  "phoneVerificationDateTime": "2020-12-09T19:39:02",
  "mobileServiceProvider": "Viettel",
  "lastActivity": "2021-01-14T17:03:35",
  "hasBeenRejected": true,
  "leadScore": 0.131409152018384168,
  "leadScoreTimestamp": "2022-10-18T13:35:45",
  "emailScore": 963,
  "userProfileCreated": true,
  "fullName": "John Doe",
  "dateOfBirth": "1989-09-30",
  "countryCode": "VN",
  "address": {
    "city": "Hanoi"
  },
  "employment": {
    "status": "EMPLOYED"
  },
  "income": {
    "monthlyIncome": 4200000,
    "currency": "VND"
  },
  "collaterals": {
    "types": ["CAR", "CAR_REGISTRATION", "CELL_PHONE"]
  },
  "emailUsageData": {
    "last1Day": {
      "received": 1,
      "read": 1,
      "clicked": 0
    },
    "last7Days": {
      "received": 3,
      "read": 2,
      "clicked": 1
    },
    "last30Days": {
      "received": 10,
      "read": 8,
      "clicked": 3
    },
    "allTime": {
      "received": 21,
      "read": 16,
      "clicked": 7
    }
  },
  "webUsageData": {
    "last1Day": {
      "sessionCount": 1,
      "avgSessionDuration": 10.55547249,
      "maxSessionDuration": 10.55547249,
      "avgPagesVisited": 1.0,
      "maxPagesVisited": 1
    },
    "last7Days": {
      "sessionCount": 3,
      "avgSessionDuration": 60.896565697,
      "maxSessionDuration": 125.89567684,
      "avgPagesVisited": 2.245435647,
      "maxPagesVisited": 5
    },
    "last30Days": {
      "sessionCount": 4,
      "avgSessionDuration": 68.96866689,
      "maxSessionDuration": 150.95859566,
      "avgPagesVisited": 6.24217365,
      "maxPagesVisited": 11
    },
    "allTime": {
      "sessionCount": 8,
      "avgSessionDuration": 55.11457453,
      "maxSessionDuration": 150.95859566,
      "avgPagesVisited": 5.124775743,
      "maxPagesVisited": 11
    }
  },
  "jeffUsageData": {
    "last1Day": {
      "redirects": 3,
      "rejects": 0,
      "applicationsCompleted": 0,
      "leadsQualified": 0,
      "loansIssued": 0
    },
    "last7Days": {
      "redirects": 5,
      "rejects": 1,
      "applicationsCompleted": 1,
      "leadsQualified": 0,
      "loansIssued": 0
    },
    "last30Days": {
      "redirects": 8,
      "rejects": 1,
      "applicationsCompleted": 2,
      "leadsQualified": 1,
      "loansIssued": 0
    },
    "allTime": {
      "redirects": 10,
      "rejects": 1,
      "applicationsCompleted": 4,
      "leadsQualified": 3,
      "loansIssued": 1
    }
  },
  "partnerInteractions": {
    "productsVisited": [
      {
        "partnerId": "partner-1",
        "timestamp": "2021-11-27T16:04:47.123548"
      },
      {
        "partnerId": "partner-2",
        "timestamp": "2022-03-25T09:15:17.01209"
      },
      {
        "partnerId": "partner-3",
        "timestamp": "2022-03-28T01:01:58.147107"
      },
      {
        "partnerId": "partner-1",
        "timestamp": "2022-04-06T10:33:58.362258"
      }
    ],
    "applicationsCompleted": [
      {
        "partnerId": "partner-1",
        "timestamp": "2022-04-06T08:27:10.825953"
      },
      {
        "partnerId": "partner-2",
        "timestamp": "2022-04-06T10:40:02.972373"
      }
    ],
    "applicationsRejected": [],
    "applicationsQualified": [
      {
        "partnerId": "partner-1",
        "timestamp": "2022-04-06T08:49:04.895792"
      },
      {
        "partnerId": "partner-2",
        "timestamp": "2022-04-06T10:44:14.067854"
      }
    ],
    "loansIssued": [
      {
        "partnerId": "partner-2",
        "timestamp": "2022-04-06T10:45:14.067854"
      }
    ],
    "loansRejected": [
      {
        "partnerId": "partner-1",
        "timestamp": "2022-04-06T08:50:04.895792"
      }
    ]
  },
  "zaloData": {
    "hasAccount": true,
    "hasLoggedInJeff": true,
    "reachable": true,
    "messagingData": {
      "last1Day": {
        "sent": 1,
        "delivered": 1
      },
      "last7Days": {
        "sent": 3,
        "delivered": 2
      },
      "last30Days": {
        "sent": 3,
        "delivered": 2
      },
      "allTime": {
        "sent": 5,
        "delivered": 4
      }
    }
  },
  "trafficSources": {
    "last1Day": {
      "list": []
    },
    "last7Days": {
      "list": ["source_4"]
    },
    "last30Days": {
      "list": ["source_1", "source_4"]
    },
    "allTime": {
      "list": ["source_6", "source_1", "source_4"]
    }
  },
  "leadDataRequestStatistics": {
    "last1Day": {
      "count": 5
    },
    "last7Days": {
      "count": 7
    },
    "last30Days": {
      "count": 7
    },
    "allTime": {
      "count": 7
    }
  },
  "parameterRequestStatistics": {
    "last1Day": {
      "emailCount": 5,
      "phoneCount": 6
    },
    "last7Days": {
      "emailCount": 8,
      "phoneCount": 9
    },
    "last30Days": {
      "emailCount": 8,
      "phoneCount": 9
    },
    "allTime": {
      "emailCount": 10,
      "phoneCount": 10
    }
  },
  "userAgents": [
    {
      "userAgentString": "Mozilla/5.0 (Linux; Android 10; vivo 1920) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.99 Mobile Safari/537.36",
      "timestamp": "2020-12-23T13:29:13",
      "device": {
        "deviceClass": "Phone",
        "name": "Vivo 1920",
        "brand": "Vivo"
      },
      "operatingSystem": {
        "systemClass": "Mobile",
        "name": "Android",
        "version": "10",
        "versionName": "Android 10"
      },
      "agent": {
        "agentClass": "Browser",
        "name": "Chrome",
        "version": "86.0.4240.99"
      }
    }
  ],
  "ipAddresses": [
    {
      "timestamp": "2020-11-26T15:13:01",
      "ipAddress": "192.85.98.1",
      "timezone": "Asia/Ho_Chi_Minh",
      "address": {
        "country": "Vietnam",
        "countryCode": "VN",
        "region": "SG",
        "regionName": "Ho Chi Minh",
        "city": "Ho Chi Minh City",
        "district": "District 4",
        "zip": "728000"
      },
      "coordinates": {
        "lat": 10.81,
        "lon": 106.64
      },
      "connection": {
        "isp": "Viettel Group",
        "org": "VIETTEL",
        "as": "AS7552 Viettel Group",
        "asName": "VIETEL-AS-AP",
        "mobile": true,
        "proxy": true,
        "hosting": false,
        "scraper": false
      }
    }
  ],
  "platformPresenceFacts": [
    {
      "id": 553,
      "created": "2020-12-09T07:54:59",
      "platform": "facebook",
      "present": true,
      "credentialType": "EMAIL"
    },
    {
      "id": 554,
      "created": "2020-12-09T07:54:59",
      "platform": "facebook",
      "present": true,
      "credentialType": "PHONE"
    },
    {
      "id": 567,
      "created": "2020-12-09T07:56:19",
      "platform": "google",
      "present": true,
      "credentialType": "EMAIL"
    },
    {
      "id": 568,
      "created": "2020-12-09T07:56:19",
      "platform": "google",
      "present": false,
      "credentialType": "PHONE"
    },
    {
      "id": 557,
      "created": "2020-12-09T07:55:15",
      "platform": "instagram",
      "present": false,
      "credentialType": "EMAIL"
    },
    {
      "id": 558,
      "created": "2020-12-09T07:55:15",
      "platform": "instagram",
      "present": true,
      "credentialType": "PHONE"
    },
    {
      "id": 557,
      "created": "2020-12-09T07:52:15",
      "platform": "linkedin",
      "present": false,
      "credentialType": "EMAIL"
    },
    {
      "id": 557,
      "created": "2020-12-09T07:47:12",
      "platform": "microsoft",
      "present": false,
      "credentialType": "EMAIL"
    },
    {
      "id": 558,
      "created": "2020-12-09T07:47:12",
      "platform": "microsoft",
      "present": true,
      "credentialType": "PHONE"
    }
  ],
  "offerListings": [
    {
      "timestamp": "2023-05-23T13:02:50.258586",
      "partnerPosition": 2
    },
    {
      "timestamp": "2023-05-23T13:05:38.799589",
      "partnerPosition": null
    },
    {
      "timestamp": "2023-05-24T07:16:24.412846",
      "partnerPosition": 1
    }
  ],
  "dpdData": [
    {
      "loanDueDate": "2020-06-01",
      "maxDpd": 10,
      "currentDpd": 5,
      "loanStatus": "OPEN",
      "reportDate": "2020-06-05"
    },
    {
      "loanDueDate": "2020-04-10",
      "maxDpd": 11,
      "currentDpd": 0,
      "loanStatus": "CLOSED",
      "reportDate": "2020-06-08"
    }
  ],
  "matchedProperties": ["EMAIL", "PHONE"],
  "fraudData": {
    "emailMarkedFraudBy": [],
    "phoneMarkedFraudBy": ["ae8d566b56f65581", "87ba261bf6a84629"],
    "emailNonFraudByJeffData": false,
    "phoneNonFraudByJeffData": false
  }
}

In case there is no match for a lead in Jeff's database, a response code HTTP 204 is returned and no message body is present.

(empty response)

There is a possibility that there will be no matching lead in Jeff's database, but there is still data available for the given contact information. In these cases only "dpdData" (if partner participates in Jeff's DPD data exchange program) and "parameterRequestStatistics" properties are returned in an HTTP 200 response. Supported since version 1.2

{
  "id": null,
  "created": null,
  "email": null,
  "phoneNumber": null,
  "emailVerified": null,
  "emailVerificationDateTime": null,
  "phoneVerified": null,
  "phoneVerificationDateTime": null,
  "lastActivity": null,
  "hasBeenRejected": null,
  "leadScore": null,
  "leadScoreTimestamp": null,
  "emailScore": null,
  "emailUsageData": null,
  "jeffUsageData": null,
  "partnerInteractions": null,
  "userAgents": null,
  "ipAddresses": null,
  "platformPresenceFacts": null,
  "matchedProperties": null,
  "dpdData": [
    {
      "loanDueDate": "2020-06-01",
      "maxDpd": 10,
      "currentDpd": 5,
      "loanStatus": "OPEN",
      "reportDate": "2020-06-05"
    },
    {
      "loanDueDate": "2020-04-10",
      "maxDpd": 11,
      "currentDpd": 0,
      "loanStatus": "CLOSED",
      "reportDate": "2020-06-08"
    }
  ],
  "parameterRequestStatistics": {
    "last1Day": {
      "emailCount": 5,
      "phoneCount": 6
    },
    "last7Days": {
      "emailCount": 8,
      "phoneCount": 9
    },
    "last30Days": {
      "emailCount": 8,
      "phoneCount": 9
    },
    "allTime": {
      "emailCount": 10,
      "phoneCount": 10
    }
  },
  "fraudData": {
    "emailMarkedFraudBy": [],
    "phoneMarkedFraudBy": ["ae8d566b56f65581", "87ba261bf6a84629"],
    "emailNonFraudByJeffData": false,
    "phoneNonFraudByJeffData": false
  }
}

In case there is a problem with the query parameters passed, an HTTP 400 response is returned with a JSON body in the following form:

{
  "errorMessage": "Wrong phone number format. Please check the documentation"
}

The Lead Data API allows you to fetch various data points about a lead in Jeff database by using contact information.

Retrieving lead data

In order to retrieve details of a lead, execute an HTTP GET request to the URL below. It is mandatory to have at least email or phone parameter present, by which the lead will be searched upon.

In case both email and phone are supplied, lead search is done in the following priority:

URL: https://api.jeff-app.com/partners-api/1.3/leads

Query parameters:

Parameter Value Examples Mandatory Description
email jon.doe@gmail.com No Email of the lead to search for
phone VN: 84877797487
PH: 639365429568
No Phone number of the lead to search for with country code (international format, no plus sign or spaces)

Field descriptions

Lead Basic Info

Path Description
id ID of the lead that created the application
created Timestamp of the moment lead registered in Jeff the first time
email Lead e-mail
phoneNumber Lead phone number
emailVerified Has lead interacted with Jeff via his e-mail
emailVerificationDateTime Date Time of the lead's first interaction via e-mail
phoneVerified Has lead interacted with Jeff via his phone
phoneVerificationDateTime Date Time of the lead's first interaction via phone
mobileServiceProvider Lead's mobile service provider name. Null if not possible to determinate
lastActivity Date Time of the lead's last interaction with Jeff
hasBeenRejected Has the lead ever came from reject traffic or been rejected by a partner
leadScore A custom score that shows the quality of the lead, customised to the lender requesting the API. Higher score indicates a better lead for the lender.
leadScoreTimestamp Timestamp of the creation of given lead score
emailScore Score that represents how actively user interacts with Jeff's email content. Integer values 0 - 1000. Bigger value represents higher activity
userProfileCreated Has lead successfully created a profile in Jeff
fullName Full name of the lead
dateOfBirth Lead's date of birth
countryCode Country code of the Jeff system lead registered through

Address

Lead's residential address details

Path Description
address / city City or area

Employment

Lead's employment details

Path Description
employment / status Lead's employment status. Possible values: EMPLOYED, UNEMPLOYED

Income

Lead's income details

Path Description
income / monthlyIncome Lead's monthly income
income / currency Currency of the monthly income

Collaterals

Information about the potential collaterals available to the lead.

Path Description
collaterals / types List of all the potential collateral types available to the lead. Possible values: MOTORBIKE, CAR, MOTORBIKE_REGISTRATION, CAR_REGISTRATION, REAL_ESTATE, JEWELRY, CELL_PHONE, TABLET, LAPTOP, CAMERA, OTHER

Email Usage Data

Lead's interaction statistics with emails sent by Jeff. These statistics are currently available in 4 different time buckets:

Path Description
emailUsageData / {timeBucket} / received The number of emails lead has received from Jeff
emailUsageData / {timeBucket} / read The number of Jeff emails lead has opened
emailUsageData / {timeBucket} / clicked The number of Jeff emails where lead has clicked on a link

Web Usage Data

Statistics on lead's usage of Jeff's website. These statistics are currently available in 4 different time buckets:

Path Description
webUsageData / {timeBucket} / sessionCount Total session count
webUsageData / {timeBucket} / avgSessionDuration Average session duration in seconds
webUsageData / {timeBucket} / maxSessionDuration Max session duration in seconds
webUsageData / {timeBucket} / avgPagesVisited Average number of pages visited per session
webUsageData / {timeBucket} / maxPagesVisited Max number of pages visited per session

Jeff Usage Data

Information about the lead activity in Jeff. These statistics are available in 4 different time buckets:

Path Description
jeffUsageData / {timeBucket} / redirects The number of times lead has been redirected to a partner from Jeff
jeffUsageData / {timeBucket} / applicationsCompleted The number of times lead has completed an application in partner systems
jeffUsageData / {timeBucket} / rejects The number of times lead has been rejected by partner
jeffUsageData / {timeBucket} / leadsQualified The number of times lead has been recognized as qualified (passed basic fraud and quality checks) in partner systems
jeffUsageData / {timeBucket} / loansIssued The number of times loan has been issued for the given lead by a partner

Partner Interactions

Information about each lead interaction with Jeff's partners via Jeff platform. There are in total 6 sections, each containing a list of data point pairs (partnerId and timestamp).

Path Description
partnerInteractions / productsVisited List of interactions where lead has visited a product offered by a Jeff's partner
partnerInteractions / applicationsCompleted List of interactions where lead has successfully completed an application on Jeff's side
partnerInteractions / applicationsRejected List of interactions where lead has been rejected by a partner after successfully completing application
partnerInteractions / applicationsQualified List of interactions where lead has successfully passed partner's preliminary checks after completing application
partnerInteractions / loansIssued List of interactions where a partner has issued a loan to the lead
partnerInteractions / loansRejected List of interactions where a partner has rejected a loan to the lead

Zalo Data

Information Jeff has about lead's Zalo account. Jeff to lead's Zalo account messaging data are split into 4 time buckets:

Path Description
hasAccount Does the lead have a Zalo account
hasLoggedInJeff Has the lead logged in into Jeff via their Zalo account
reachable Was it possible to reach lead via Zalo last time Jeff tried
messagingData / {timeBucket} / sent Number of messages sent from Jeff to lead's Zalo account
messagingData / {timeBucket} / delivered Number of messages successfully delivered to lead's Zalo account

Traffic Sources

List of anonymized traffic sources that have brought the lead to Jeff during the given time period. Possible traffic source values currently are: source_1, source_2, source_3, source_4, source_5 and source_6. These statistics are available in 4 different time buckets:

Path Description
trafficSources / {timeBucket} / list List of anonymized traffic sources that have brought the lead to Jeff

Lead Data Request Statistics

Statistics on count of Lead Data API requests (from all API clients) that matched the particular lead. These statistics are available in 4 different time buckets:

Path Description
leadDataRequestStatistics / {timeBucket} / count The number of total Lead Data API requests that have matched the particular lead

Parameter Request Statistics

Statistics on count of Lead Data API requests (from all API clients) that had provided the same parameter (email or phone) as in the current call. These statistics are available in 4 different time buckets:

Path Description
parameterRequestStatistics / {timeBucket} / emailCount The number of total Lead Data API requests that have provided the same email as in the current call
parameterRequestStatistics / {timeBucket} / phoneCount The number of total Lead Data API requests that have provided the same phone as in the current call

User Agents

User agent details of the devices used to access Jeff.

Path Description
userAgents / userAgentString Raw user agent string sent by the browser
userAgents / timestamp Last time of action with the particular device
userAgents / device / deviceClass Class of the physical device (Phone, Desktop, Mobile, Tablet etc.)
userAgents / device / name Name of the physical device
userAgents / device / brand Brand of the physical device
userAgents / operatingSystem / systemClass Operating system details
userAgents / operatingSystem / name Operating system class (Mobile, Desktop, Game Console, etc.)
userAgents / operatingSystem / version Numeric operating system version
userAgents / operatingSystem / versionName Full named operating system version
userAgents / agent / agentClass User agent class (Browser Webview, Mobile App, Desktop App, Robot, Browser, etc.)
userAgents / agent / name Name of the user agent
userAgents / agent / version Version of the user agent

IP Addresses

Details of the IP addresses used to access Jeff.

Path Description
ipAddresses / timestamp Timestamp corresponding to the last time of action with the particular IP address
ipAddresses / ipAddress IP address string
ipAddresses / timezone Timezone of the IP address
ipAddresses / address / country Country name
ipAddresses / address / countryCode Country code (two letters, ISO 3166-1)
ipAddresses / address / region Short code of region/state
ipAddresses / address / regionName Region name
ipAddresses / address / city City
ipAddresses / address / district District
ipAddresses / address / zip Zip code
ipAddresses / address / coordinates / lat Coordinates: latitude
ipAddresses / address / coordinates / lon Coordinates: longitude
ipAddresses / address / connection / isp ISP name
ipAddresses / address / connection / org Organization name
ipAddresses / address / connection / as Autonomous System number and organization
ipAddresses / address / connection / asName Autonomous System name
ipAddresses / address / connection / mobile Mobile connection?
ipAddresses / address / connection / proxy Exit address of VPN, proxy or Tor?
ipAddresses / address / connection / hosting Data center, collocated or hosting?
ipAddresses / address / connection / scraper Is considered belonging to a web scraper? (Judged by Jeff internal rules)

Platform presence facts

Information about whether email and/or phone number of the lead are registered in external platforms.

Path Description
platformPresenceFacts / id ID of the presence fact
platformPresenceFacts / created Time when the information was obtained
platformPresenceFacts / platform Platform in question
platformPresenceFacts / present Is the given credentialType present in the platform
platformPresenceFacts / credentialType EMAIL or PHONE

Offer Listings & Partner Positions

List of offer listings made by lead in Jeff during the previous month. If your company was present in the offer listing, the position of your offer is returned.

Path Description
offerListings / timestamp Timestamp of the offer listing fact
offerListings / partnerPosition Listing position (1 means the highest position, 2 the second etc.) of your company or null if it wasn't present

DPD Data

Days Past Due loan repayment data for the particular lead. This feature is only available to partners that participate in Jeff's DPD data exchange program.

Path Description
dpdData / loanDueDate Due date of the loan
dpdData / maxDpd Maximum Days Past Due until full repayment that the loan has incurred
dpdData / currentDpd Current Days Past Due
dpdData / loanStatus Current status of the loan (OPEN / CLOSED)
dpdData / reportDate Date when this record was generated

Matching info

Path Description
matchedProperties A list of request properties that matched the lead (EMAIL, PHONE)

Fraud data

Path Description
fraudData / emailMarkedFraudBy An anonymized list of partners that have confirmed this email to be fraudulent
fraudData / phoneMarkedFraudBy An anonymized list of partners that have confirmed this phone to be fraudulent
fraudData / emailNonFraudByJeffData Is this email confirmed to be non fraudulent by Jeff internal rules
fraudData / phoneNonFraudByJeffData Is this phone confirmed to be non fraudulent by Jeff internal rules

Lead Statistics

In case of a match an HTTP 200 response is returned with a JSON body in the following form:

{
  "firstActivity": "2023-10-15T17:56:38.635793",
  "lastActivity": "2023-10-22T18:51:40.015574",
  "conversionScore": 0.0265,
  "applicationsCompleted": [
    "2023-10-16T11:55:40.157878",
    "2023-10-17T12:30:11.24417",
    "2023-10-17T10:11:12.487778",
    "2023-10-20T17:21:18.787554"
  ],
  "applicationsRejected": ["2023-10-17T13:18:11.412772"],
  "applicationsQualified": [
    "2023-10-18T15:01:17.487712",
    "2023-10-19T17:09:36.882821",
    "2023-10-20T11:54:44.15478"
  ],
  "loansRejected": ["2023-10-18T11:14:51.24875"],
  "loansIssued": ["2023-10-21T18:33:22.14257"]
}

In case there is no match for the contact information in Jeff's database, a response code HTTP 204 is returned and no message body is present.

(empty response)

In case there is a problem with the query parameters passed, an HTTP 400 response is returned with a JSON body in the following form:

{
  "errorMessage": "Wrong phone number format. Please check the documentation"
}

The Lead Statistics API allows you to fetch core high-value statistical data points for a user in Jeff database by using contact information.

Retrieving lead data

In order to retrieve details of a lead, execute an HTTP GET request to the URL below. It is mandatory to have at least email or phone parameter present, by which the statistics will be searched upon.

URL: https://api.jeff-app.com/partners-api/1.3/lead-statistics

Query parameters:

Parameter Value Examples Mandatory Description
email jon.doe@gmail.com No Email of the lead to search for
phone VN: 84877797487
PH: 639365429568
No Phone number of the lead to search for with country code (international format, no plus sign or spaces)

Field descriptions

Path Description
firstActivity Datetime of user's first interaction with Jeff
lastActivity Datetime of user's last interaction with Jeff
conversionScore Machine Learning-based score made by Jeff representing possibility that user will be eligible for a loan in one of our partner's systems
applicationsCompleted Timestamps of occasions where user has completed an application in of one of our partner's systems
applicationsRejected Timestamps of occasions where user's application has been rejected by of one of our partner's systems
applicationsQualified Timestamps of occasions where user's application has been qualified/approved by of one of our partner's systems
loansRejected Timestamps of occasions where of one of our partner's systems have eventually rejected issuing a loan
loansIssued Timestamps of occasions where a loan has been issued to the user

Fraud Data

In case of successful lookup HTTP 200 response is returned with a JSON body in the following form:

{
  "emailMarkedFraudBy": [],
  "phoneMarkedFraudBy": ["ae8d566b56f65581"],
  "emailNonFraudByJeffData": false,
  "phoneNonFraudByJeffData": false
}

In case there is a problem with the request, a HTTP 400 response is returned with a JSON body in the following form:

{
  "errorMessage": "Wrong phone number format. Please check the documentation"
}

The Fraud Data API allows you to fetch data points related to fraud information about the provided contact information fields

Retrieving fraud data

In order to retrieve fraud data for contact information, execute an HTTP GET request to the URL below. It is mandatory to have at least email or phone parameter present, by which fraud data will be matched upon.

URL: https://api.jeff-app.com/partners-api/1.3/fraud

Query parameters:

Parameter Value Examples Mandatory Description
email jon.doe@gmail.com No Email to search for fraud records
phone VN: 84877797487
PH: 639365429568
No Phone number to search for fraud records with country code (international format, no plus sign or spaces)

Field descriptions

Path Description
emailMarkedFraudBy An anonymized list of partners that have confirmed this email to be fraudulent
phoneMarkedFraudBy An anonymized list of partners that have confirmed this phone to be fraudulent
emailNonFraudByJeffData Is this email confirmed to be non fraudulent by Jeff internal rules
phoneNonFraudByJeffData Is this phone confirmed to be non fraudulent by Jeff internal rules

Social Presence

In case of a successful submission an HTTP 200 response is returned with a JSON body in the following form:

{
  "platformPresenceFacts": [
    {
      "id": 28291484,
      "created": "2023-10-11T14:15:48.531457",
      "platform": "apple",
      "present": true,
      "credentialType": "EMAIL"
    },
    {
      "id": 28291470,
      "created": "2023-10-11T14:15:45.689966",
      "platform": "booking",
      "present": true,
      "credentialType": "EMAIL"
    },
    {
      "id": 28291497,
      "created": "2023-10-11T14:15:50.573201",
      "platform": "facebook",
      "present": false,
      "credentialType": "EMAIL"
    },
    {
      "id": 28291514,
      "created": "2023-10-11T14:16:08.107327",
      "platform": "facebook",
      "present": true,
      "credentialType": "PHONE"
    },
    {
      "id": 28291469,
      "created": "2023-10-11T14:15:45.564377",
      "platform": "github",
      "present": false,
      "credentialType": "EMAIL"
    },
    {
      "id": 28291472,
      "created": "2023-10-11T14:16:42.564311",
      "platform": "netflix",
      "present": true,
      "credentialType": "EMAIL",
      "details": {
        "hasActiveSubscription": true
      }
    },
    {
      "id": 28291508,
      "created": "2023-10-11T14:15:53.621066",
      "platform": "google",
      "present": true,
      "credentialType": "EMAIL"
    },
    {
      "id": 28291512,
      "created": "2023-10-11T14:15:59.247238",
      "platform": "google",
      "present": true,
      "credentialType": "PHONE"
    },
    {
      "id": 28291484,
      "created": "2023-10-11T14:15:47.893164",
      "platform": "instagram",
      "present": true,
      "credentialType": "EMAIL"
    },
    {
      "id": 28291485,
      "created": "2023-10-11T14:15:48.883164",
      "platform": "instagram",
      "present": true,
      "credentialType": "PHONE"
    },
    {
      "id": 28291478,
      "created": "2023-10-11T14:15:47.614644",
      "platform": "lazada",
      "present": true,
      "credentialType": "EMAIL"
    },
    {
      "id": 28291486,
      "created": "2023-10-11T14:15:49.078331",
      "platform": "lazada",
      "present": true,
      "credentialType": "PHONE"
    },
    {
      "id": 28291499,
      "created": "2023-10-11T14:15:50.411477",
      "platform": "linkedin",
      "present": true,
      "credentialType": "EMAIL"
    },
    {
      "id": 28291477,
      "created": "2023-10-11T14:15:47.602809",
      "platform": "microsoft",
      "present": true,
      "credentialType": "EMAIL"
    },
    {
      "id": 28291471,
      "created": "2023-10-11T14:15:45.707403",
      "platform": "microsoft",
      "present": false,
      "credentialType": "PHONE"
    },
    {
      "id": 28291487,
      "created": "2023-10-11T14:15:49.129091",
      "platform": "pinterest",
      "present": true,
      "credentialType": "EMAIL"
    },
    {
      "id": 28291494,
      "created": "2023-10-11T14:15:50.202594",
      "platform": "skype",
      "present": true,
      "credentialType": "EMAIL",
      "details": {
        "id": "live:1de8f11d356bf276",
        "name": "Jeff Daniels",
        "photo": "https://avatar.skype.com/v1/avatars/live:1de8f11d356bf277/public?returnDefaultImage=true&size=m",
        "city": "Hồ Chí Minh",
        "country": "Vietnam",
        "isBusinessAccount": false
      }
    },
    {
      "id": 28291480,
      "created": "2023-10-11T14:15:47.894092",
      "platform": "skype",
      "present": true,
      "credentialType": "PHONE",
      "details": {
        "id": "live:1de8f11d356bf276",
        "name": "Jeff Daniels",
        "photo": "https://avatar.skype.com/v1/avatars/live:1de8f11d356bf277/public?returnDefaultImage=true&size=m",
        "city": "Hồ Chí Minh",
        "country": "Vietnam",
        "isBusinessAccount": false
      }
    },
    {
      "id": 28291473,
      "created": "2023-10-11T14:15:46.530926",
      "platform": "spotify",
      "present": true,
      "credentialType": "EMAIL"
    },
    {
      "id": 28291474,
      "created": "2023-10-11T14:15:46.959822",
      "platform": "twitter",
      "present": true,
      "credentialType": "EMAIL"
    },
    {
      "id": 28291476,
      "created": "2023-10-11T14:15:47.522598",
      "platform": "twitter",
      "present": true,
      "credentialType": "PHONE"
    },
    {
      "id": 28291489,
      "created": "2023-10-11T14:15:49.778366",
      "platform": "zalo",
      "present": true,
      "credentialType": "PHONE"
    },
    {
      "id": 28291490,
      "created": "2023-10-11T14:15:49.257414",
      "platform": "samsung",
      "present": true,
      "credentialType": "EMAIL"
    },
    {
      "id": 28291495,
      "created": "2023-10-11T14:15:50.112478",
      "platform": "gravatar",
      "present": true,
      "credentialType": "EMAIL",
      "details": {
        "name": "Jeff Daniels",
        "photo": "https://1.gravatar.com/avatar/aff87b5f8955021131625b8c9de5cb816c7ddb2c52eca27b1ae0160fa7522511",
        "location": "Vietnam, Hồ Chí Minh",
        "profileUrl": "https://gravatar.com/jeffd254fa74a1",
        "lastActivity": "2023-10-11T14:15:50"
      }
    }
  ],
  "errorMessage": null
}

In case there is a problem with the query parameters passed, an HTTP 400 response is returned with a JSON body in the following form:

{
  "errorMessage": "Wrong phone number format. Please check the documentation"
}

The Social Presence API allows you to pass an e-mail and/or a phone number of a client and retrieve information about platforms these credentials are registered in.

Retrieving social presence data

In order to retrieve social presence data, execute an HTTP GET request to the URL below. It is mandatory to have at least email or phone parameter present.

URL: https://data.jeff-app.com/partner-api/1.0/social-data

Query parameters:

Parameter Value Examples Mandatory Description
email jon.doe@gmail.com No Email to search social presence for
phone VN: 84877797487
PH: 639365429568
No Phone number to search search social presence for. Has to include country code (international format, no plus sign or spaces)
max-wait-time-seconds 20 No Max waiting time before returning a response. Allowed values are from 1 to 90 inclusive. Defaults to 25
platforms facebook,apple,instagram No A list of platforms to search for. By default all platforms are searched

Response waiting times

Longer waiting times (controlled by the max-wait-time-seconds parameter) increase the hit rate of the social presence data for the given email/phone. Some of the platforms reach 95% hit rate in 5 seconds, some take up to 30. If all the desired data points are gathered before timeout is reached, response returns immediately.

Field descriptions

Platform presence facts

Information of in which external platforms email and/or phone number are registered

Path Description
platformPresenceFacts / id ID of the presence fact
platformPresenceFacts / created Time when the information was obtained
platformPresenceFacts / platform Platform in question. See Supported platforms for a full list
platformPresenceFacts / present Is the given credentialType present in the platform
platformPresenceFacts / credentialType EMAIL or PHONE
platformPresenceFacts / details / id Unique user identifier in the given platform. Supported platforms: skype
platformPresenceFacts / details / name Full name of the user. Supported platforms: skype, gravatar
platformPresenceFacts / details / profileUrl URL to the profile of the user. Supported platforms: skype, gravatar
platformPresenceFacts / details / photo URL of the photo of the user. Supported platforms: skype, gravatar
platformPresenceFacts / details / lastActivity Timestamp of the last activity of the user. Supported platforms: gravatar
platformPresenceFacts / details / city City of residence as provided in profile. Supported platforms: skype
platformPresenceFacts / details / state State of residence as provided in profile. Supported platforms: skype
platformPresenceFacts / details / country Country of residence as provided in profile. Supported platforms: skype
platformPresenceFacts / details / location Location in free form as provided in profile. Supported platforms: gravatar
platformPresenceFacts / details / isBusinessAccount Is the account a business account. Supported platforms: skype
platformPresenceFacts / details / hasActiveSubscription Is the account on an active subscription plan. Supported platforms: netflix

Supported platforms

Name Email Phone Number Notes
facebook + +
google + +
instagram + +
apple + @icloud.com e-mails are not checked - in this case the response will not contain apple presence fact
lazada + +
linkedin +
microsoft + +
skype + +
zalo +
github +
netflix +
twitter + +
spotify +
booking + (Booking.com)
pinterest +
samsung +
gravatar +