Hyperian API Reference
API Endpoint
http://api.hyperian.com/The Hyperian API is organized around REST. Our API has predictable, resource-oriented URLs, and uses HTTP response codes to indicate API errors. We use built-in HTTP features, like HTTP authentication and HTTP verbs, which are understood by off-the-shelf HTTP clients. We support cross-origin resource sharing, allowing you to interact securely with our API from a client-side web application . JSON is returned by all API responses, including errors, although our API libraries convert responses to appropriate language-specific objects.
Products
Product objects allow you to access a list of available products & their variables. The API allows you to access summary product variables, detail product “pre-offers” and associate product selection to onboarding customers.
Retrieve available products
Headers
Content-Type: application/json
Body
{
"productName": "new_product",
"productVersion": "1.0.0"
}
Schema
{
"type": "object",
"properties": {
"productName": {
"type": "string"
},
"productVersion": {
"type": "string"
}
}
}
Available ProductsGET/configuration/product
Retrieves list of available products, based on the product category selected (if none, then all products returned).
Get a product configuration
Headers
Content-Type: application/json
Body
{
"amount": {
"start": 10,
"end": 1000,
"increments": 10,
"selected": 500
},
"term": {
"start": 1,
"end": 12,
"increments": 1,
"type": "months",
"selected": 12
}
}
Schema
{
"type": "object",
"properties": {
"amount": {
"start": {
"type": "integer",
},
"end": {
"type": "integer",
},
"selectedValue": {
"type": "integer",
},
"increments": {
"type": "integer",
}
},
"term": {
"start": {
"type": "integer",
},
"end": {
"type": "integer",
},
"selectedValue": {
"type": "integer",
},
"type": {
"type": "string",
},
"increments": {
"type": "integer",
}
}
}
}
Product ConfigurationGET/configuration/productconfig
Returns configuration for displaying product options to the customer, also used in the Hyperian calculator object.
Get customer pre-offer
Headers
Content-Type: application/json
Body
{
"agreementEndDate": "2017-11-11T08:40:51.620Z",
"annualPercentageRate": 12,
"firstPaymentDate": "2017-11-11T08:40:51.620Z",
"interestRate": 12,
"fee": 5,
"totalRepayableAmount": 10
}
Schema
{
"type": "object",
"properties": {
"agreementEndDate": {
"type": "string"
},
"annualPercentageRate": {
"type": "number"
},
"firstPaymentDate": {
"type": "string"
},
"interestRate": {
"type": "number"
},
"fee": {
"type": "number"
},
"totalRepayableAmount": {
"type": "number"
}
}
}
Customer Pre-OfferGET/offer{?amount,term}
Returns specific product offer based on selected product variables, pre-scoring of the customer. Used to show the customer potential product details, repayments, interest, etc.
- amount
number
(required) Example: 1000Loan amount
- term
number
(required) Example: 30Loan term
Get multiple pre-offers
Headers
Content-Type: application/json
Body
{
"100": {
"14": {
"agreementEndDate": "2017-11-11T08:40:51.620Z",
"annualPercentageRate": 0,
"firstPaymentDate": "2017-11-11T08:40:51.620Z",
"interestRate": 0,
"fee": 5,
"totalRepayableAmount": 10
},
"21": {
"agreementEndDate": "2017-11-11T08:40:51.620Z",
"annualPercentageRate": 0,
"firstPaymentDate": "2017-11-11T08:40:51.620Z",
"interestRate": 0,
"fee": 5,
"totalRepayableAmount": 10
},
"28": {
"agreementEndDate": "2017-11-11T08:40:51.620Z",
"annualPercentageRate": 0,
"firstPaymentDate": "2017-11-11T08:40:51.620Z",
"interestRate": 0,
"fee": 5,
"totalRepayableAmount": 10
}
},
"200": {
"14": {
"agreementEndDate": "2017-11-11T08:40:51.620Z",
"annualPercentageRate": 0,
"firstPaymentDate": "2017-11-11T08:40:51.620Z",
"interestRate": 0,
"fee": 5,
"totalRepayableAmount": 10
},
"21": {
"agreementEndDate": "2017-11-11T08:40:51.620Z",
"annualPercentageRate": 0,
"firstPaymentDate": "2017-11-11T08:40:51.620Z",
"interestRate": 0,
"fee": 5,
"totalRepayableAmount": 10
},
"28": {
"agreementEndDate": "2017-11-11T08:40:51.620Z",
"annualPercentageRate": 0,
"firstPaymentDate": "2017-11-11T08:40:51.620Z",
"interestRate": 0,
"fee": 5,
"totalRepayableAmount": 10
}
}
}
Schema
{
"type": "object",
"properties": {
"100": {
"14": {
"agreementEndDate": {
"type": "string"
},
"annualPercentageRate": {
"type": "number"
},
"firstPaymentDate": {
"type": "string"
},
"interestRate": {
"type": "number"
},
"fee": {
"type": "number"
},
"totalRepayableAmount": {
"type": "number"
}
},
"21": {
"agreementEndDate": {
"type": "string"
},
"annualPercentageRate": {
"type": "number"
},
"firstPaymentDate": {
"type": "string"
},
"interestRate": {
"type": "number"
},
"fee": {
"type": "number"
},
"totalRepayableAmount": {
"type": "number"
}
},
"28": {
"agreementEndDate": {
"type": "string"
},
"annualPercentageRate": {
"type": "number"
},
"firstPaymentDate": {
"type": "string"
},
"interestRate": {
"type": "number"
},
"fee": {
"type": "number"
},
"totalRepayableAmount": {
"type": "number"
}
}
},
"200": {
"14": {
"agreementEndDate": {
"type": "string"
},
"annualPercentageRate": {
"type": "number"
},
"firstPaymentDate": {
"type": "string"
},
"interestRate": {
"type": "number"
},
"fee": {
"type": "number"
},
"totalRepayableAmount": {
"type": "number"
}
},
"21": {
"agreementEndDate": {
"type": "string"
},
"annualPercentageRate": {
"type": "number"
},
"firstPaymentDate": {
"type": "string"
},
"interestRate": {
"type": "number"
},
"fee": {
"type": "number"
},
"totalRepayableAmount": {
"type": "number"
}
},
"28": {
"agreementEndDate": {
"type": "string"
},
"annualPercentageRate": {
"type": "number"
},
"firstPaymentDate": {
"type": "string"
},
"interestRate": {
"type": "number"
},
"fee": {
"type": "number"
},
"totalRepayableAmount": {
"type": "number"
}
}
}
}
}
Bulk Pre-OffersGET/offers
Returns pre-offers from all active products.
On-Boarding
On-boarding objects allow you to register and on-boarding customers to the Hyperian platform. The API allows you to create, validate, and associate your customers to your products. You can retrieve individual customer & applications states.
Customer Check
Headers
Content-Type: application/json
Body
{
"device": {
"fingerprint": {
"type": "string"
},
"source": {
"type": "string"
"required": true,
"enum": [ "Desktop", "Mobile", "iOS App", "Android App", "Partner", "Affiliate", "Other" ]
}
},
"email": {
"type": "string",
"required": true
},
"mobilePhone": {
"type": "string",
"required": true
},
"developer": {
"name": {
"type": "string"
},
"channel": {
"type": "string"
}
}
}
Headers
Content-Type: application/json
Body
{
"leadCreated": "2017-11-11T08:40:51.620Z",
"existingCustomer": false
}
Schema
{
"type": "object",
"properties": {
"leadCreated": {
type: "boolean"
},
"existingCustomer": {
type: "boolean"
}
}
}
Check CustomerPOST/onboard/register/check
Checks if a customer is currently registered with Hyperian. If they are not, customer is registered as a lead object. Leads are then pushed through the appication process, or made available for call centre agents to follow-up.
Verify Mobile
Headers
Content-Type: application/json
Body
{
"smsCode": {
"type": "integer",
"required": true
},
"captcha": {
"type": "string"
}
}
Headers
Content-Type: application/json
Body
{
"canBeResendAfter": 120,
"captchaRequired": false
}
Schema
{
"type": "object",
"properties": {
"canBeResendAfter": {
"type": "integer"
},
"captchaRequired": {
"type": "boolean"
}
}
}
Headers
Content-Type: text/plain
Body
SMS can't be send
Mobile SMS VerifyPUT/onboard/verify/mobile
Verify the mobile number provided by the customer. Optional stage used during the on-boarding process, however recommended as best practise to ensure customer is contactable in the future.
Register Customer
Headers
Content-Type: application/json
Body
{
"acceptAgreement": {
"type": "boolean",
"required": true
},
"address": {
"city": {
"type": "string",
"required": true
},
"postalCode" : {
"type" : "string",
"required" : true
},
"street": {
"type": "string",
"required": true
},
"state": {
"type": "string",
"required": true
},
},
"bankAccountNumber": {
"type": "string"
},
"dateOfBirth": {
"type": "string",
"required": true
},
"device": {
"fingerprint": {
"type": "string"
},
"source": {
"type": "string"
"required": true,
"enum": [ "Desktop", "Mobile", "iOS App", "Android App", "Partner", "Affiliate", "Other" ]
}
},
"email": {
"type": "string",
"required": true
},
"firstName": {
"type": "string",
"required": true
},
"gender": {
"type": "string",
"enum": [ "MALE", "FEMALE" ],
"required": true
},
"lastName": {
"type": "string",
"required": true
},
"phoneNumber": {
"type": "string",
"required": true
},
"password": {
"type": "string",
"required": true
},
"personalId": {
"type": "string",
"required": true
},
"affiliate": {
"partner": {
"type": "string"
},
"channel": {
"type": "string"
}
}
}
Headers
Content-Type: application/json
Body
{
"leadCreated": "2017-11-11T08:40:51.620Z",
"existingUser": false
}
Schema
{
"type": "object",
"properties": {
"customerCreated": {
type: "boolean"
},
"existingUser": {
type: "boolean"
}
}
}
Create customerPOST/onboard/register
Create a new customer object in Hyperian.
KYC Customer
Headers
Content-Type: application/json
Body
{
"apiKEY": {
"type": "string",
"required": true
},
"authType": {
"type": "string",
"enum": [ "ONE SIDE", "BOTH SIDES"],
"required": true
},
"selfieAnalysis": {
"type": "boolean",
"required": true
},
{
"country": {
"country_code": "string",
"required": true
},
"ID_Front": {
"file": "string",
"required": false
},
"ID_Back": {
"file": "string",
"required": false
},
"Selfie": {
"file": "string",
"required": false
},
},
Headers
Content-Type: application/json
Body
{
"submission_guid": string,
}
Schema
{
"guid": "string",
"reference_id": "string",
"status": "complete",
"submitted_on": 0,
"processing_completed_on": 0,
"issuing_country": "UK",
"results": {
"extraction": {
"ocr_front": {
"successful": true,
"results": {
"full_name": "string",
"first_name": "string",
"middle_name": "string",
"last_name": "string",
"address1": "string",
"address2": "string",
"city": "string",
"state": "string",
"zip": "string",
"dob": 0,
"gender": "string",
"weight": "string",
"height": "string",
"document_number": "string",
"issued_on": "string",
"expires_on": "string"
}
},
},
"inspection": {
"document": "pass",
"face_match": 100%
},
"summary": {
"extraction": {
"full_name": "string",
"first_name": "string",
"middle_name": "string",
"last_name": "string",
"address1": "string",
"address2": "string",
"city": "string",
"state": "string",
"zip": "string",
"dob": 0,
"gender": "string",
"weight": "string",
"height": "string",
"document_number": "string",
"issued_on": "string",
"expires_on": "string"
},
"alerts": [
"string"
],
"recommendation": "accept"
}
}
}
}
Headers
Content-Type: text/plain
Body
SMS can't be send
Create a new submissionPOST/onboard/verify/identity
Create a new KYC submission using Hyperian ID scanning platform. Using our SDK, or directly, you may upload good quality pictures of the customers front/back of iD card and selfie for Hyperian real-time analysis.
Solvency Check Customer
-----BOUNDARY Content-Disposition: form-data; name=“file”; filename=“image.jpg” Content-Type: image/jpeg Content-Transfer-Encoding: base64
/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a
HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAABAAEDASIA
AhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAf/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFAEB
AAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/AL+AD//Z
-----BOUNDARY
Headers
Content-Type: multipart/form-data; boundary=---BOUNDARY
Body
{
"filename": {
"type": "string",
"required": true
}
}
Headers
Content-Type: application/json
Body
{
"createdAt": "2017-11-11T08:40:51.620Z",
"filename": "image.jpg",
}
Schema
{
"type": "object",
"properties": {
"createdAt": {
"type": "string"
},
"filename": {
"type": "string"
}
}
}
Headers
Content-Type: text/plain
Body
File can't be uploaded
Solvency CheckPOST/onboard/verify/solvency
Upload a new selfie.
New Product Application
Create a new loan application.
Headers
Content-Type: application/json
Body
{
"loan": {
"amount": {
"type": "integer",
"required": true
},
"term": {
"type": "integer",
"required": true
}
},
"device": {
"fingerprint": {
"type": "string"
},
"source": {
"type": "string"
"required": true,
"enum": [ "WEB_DESKTOP", "WEB_MOBILE", "MOBILE_IOS", "MOBILE_ANDROID", "AGENT", "OTHER" ]
}
},
"affiliate": {
"partner": {
"type": "string"
},
"channel": {
"type": "string"
}
}
}
Headers
Content-Type: application/json
Body
{
"loan": {
"amount": 1000,
"term": 30,
},
"published_at": "2017-11-11T08:40:51.620Z",
"applicationCreated": true
}
Schema
{
"type": "object",
"properties": {
"loan": {
"amount": {
"type": "integer",
},
"term": {
"type": "integer",
}
},
"published_at": "string",
"applicationCreated": {
"type": "boolean"
}
}
}
Create ApplicationPOST/new-application
Create a new customer application.
Application Status
Headers
Content-Type: application/json
Body
{
"id": 123,
"checkFinished": false,
"resolution": "",
"resolutionDetail": ""
}
Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"checkFinished": {
"type": "boolean"
},
"resolution": {
"type": "string",
"enum": [
"APPROVED",
"REJECTED",
"MANUAL",
"ADDITIONAL_DATA_NEEDED"
]
},
"resolutionDetail": {
"type": "string"
}
}
}
Check Application StatusGET/client/loan-application/status
You need to repeat the check until checkFinished is True.
Self-Service
Obtain Access Token
Headers
Content-Type: application/json
Body
{
"clientSecret": "client_secret_goes_here",
"grantType": "authorization_code",
"code": "code_from_redirect_to_your_provided_redirect_uri"
}
Headers
Content-Type: application/json
Body
{
"data": {
"accessToken": "example_access_token",
"refreshToken": "example_refresh_token",
"tokenType": "bearer"
}
}
Schema
{
"type": "object",
"properties": {
"data": {
"accessToken": {
"type": "string"
},
"refreshToken": {
"type": "string"
},
"tokenType": {
"type": "string"
}
}
}
}
Obtain TokenPOST/oauth2/token
Obtain access token from authorization code grant.
Headers
Content-Type: application/json
Body
{
"clientId": "example_client_id",
"clientSecret": "example_client_secret",
"grantType": "refresh_token",
"refreshToken": "example_refresh_token"
}
Headers
Content-Type: application/json
Body
{
"data": {
"accessToken": "example_access_token",
"refreshToken": "example_refresh_token",
"tokenType": "bearer"
}
}
Schema
{
"type": "object",
"properties": {
"data": {
"accessToken": {
"type": "string"
},
"refreshToken": {
"type": "string"
},
"tokenType": {
"type": "string"
}
}
}
}
Refresh TokenPUT/oauth2/token
Refresh an expired access token.
Retrieve Customer
Headers
Content-Type: application/json
Body
{
"acceptAgreement": true,
"address": {
"city": "New York",
"postalCode" : "99 999",
"street": "5th Avenue",
"state": "NYC",
},
"bankAccountNumber": "0123456789",
"dateOfBirth": "1987-11-11T08:40:51.620Z",
"email": "john@doe.com",
"firstName": "John",
"gender": "MALE",
"lastName": "Doe",
"phoneNumber": "+999123456789",
"personalId": "0123456789"
}
Schema
{
"type": "object",
"properties": {
"acceptAgreement": {
"type": "boolean"
},
"address": {
"city": {
"type": "string"
},
"postalCode" : {
"type" : "string"
},
"street": {
"type": "string"
},
"state": {
"type": "string"
}
},
"bankAccountNumber": {
"type": "string"
},
"dateOfBirth": {
"type": "string"
},
"email": {
"type": "string"
},
"firstName": {
"type": "string"
},
"gender": {
"type": "string",
"enum": [ "MALE", "FEMALE" ]
},
"lastName": {
"type": "string"
},
"phoneNumber": {
"type": "string"
},
"personalId": {
"type": "string"
}
}
}
Retrieve CustomerGET/self-service/client
Retrieves the details of an existing customer. You need only supply the unique customer identifier that was returned upon customer creation.
Subscribed products
Headers
Content-Type: application/json
Body
{
"id": 123,
"loan": {
"amount": 1000,
"term": 30
},
"status": "OPEN"
}
Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"loan": {
"amount": {
"type": "integer",
},
"term": {
"type": "integer",
}
},
"status": {
"type": "string",
"enum": [ "NEW", "OPEN", "CLOSED" ]
}
}
}
Get Product by IDGET/self-service/subscribed-products
Returns loan application.
Customer Products
Headers
Content-Type: application/json
Get All LoansGET/client/loans
Returns all loans for the current client.
Last Product
Headers
Content-Type: application/json
Headers
Content-Type: text/plain
Body
No latest loan
Get Latest LoanGET/client/latest-loan
Returns client’s latest loan.
Phone Number
Headers
Content-Type: application/json
Body
{
"phoneNumber": "+999123456789",
"phoneNumberVerified": true
}
Schema
{
"type": "object",
"properties": {
"phoneNumber": {
"type": "string"
},
"phoneNumberVerified": {
"type": "boolean"
}
}
}
Headers
Content-Type: text/plain
Body
No phone number
Get Client's Phone NumberGET/client/profile/phone-number
Returns client’s phone number.
Headers
Content-Type: application/json
Body
{
"phoneNumber": {
"type": "string",
"required": true
}
}
Headers
Content-Type: text/plain
Body
Phone number can't be updated
Update Client's Phone NumberPUT/client/profile/phone-number
Updates client’s phone number.
Headers
Content-Type: application/json
Body
{
"email": "john@doe.com"
}
Schema
{
"type": "object",
"properties": {
"email": {
"type": "string"
}
}
}
Headers
Content-Type: text/plain
Body
No phone number
Get Client's EmailGET/client/profile/email
Returns client’s email.
Headers
Content-Type: application/json
Body
{
"email": {
"type": "string",
"required": true
}
}
Headers
Content-Type: text/plain
Body
Email can't be updated
Update Client's EmailPUT/client/profile/email
Updates client’s email.
Password
Headers
Content-Type: application/json
Body
{
"newPassword": {
"type": "string",
"required": true
},
"currentPassword": {
"type": "string",
"required": true
}
}
Headers
Content-Type: text/plain
Body
Password can't be updated
Headers
Content-Type: text/plain
Body
Current password does not match
Update Client's PasswordPUT/client/profile/password
Updates client’s password.
Documents
-----BOUNDARY Content-Disposition: form-data; name=“file”; filename=“image.jpg” Content-Type: image/jpeg Content-Transfer-Encoding: base64
/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a
HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAABAAEDASIA
AhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAf/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFAEB
AAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/AL+AD//Z
-----BOUNDARY
Headers
Content-Type: multipart/form-data; boundary=---BOUNDARY
Body
{
"filename": {
"type": "string",
"required": true
},
"kind":
"type": "string",
"enum": [ "ID_CARD", "PASSPORT", "DRIVERS_LICENSE", "OTHER" ],
"required": true
}
Headers
Content-Type: application/json
Body
{
"createdAt": "2017-11-11T08:40:51.620Z",
"filename": "image.jpg"
}
Schema
{
"type": "object",
"properties": {
"createdAt": {
"type": "string"
},
"filename": {
"type": "string"
}
}
}
Headers
Content-Type: text/plain
Body
File can't be uploaded
Upload DocumentPOST/client/profile/documents
Upload a new document.
Other
Affiliate
Headers
Content-Type: application/json
Body
{
"affiliate": {
"partner": "provider",
"channel": "web"
}
}
Schema
{
"type": "object",
"properties": {
"affiliate": {
"partner": {
"type": "string"
},
"channel": {
"type": "string"
}
}
}
}
Get Affiliate DataGET/affiliate/{?provider}
Returns data about specific affiliate provider for tagging purposes.
- provider
string
(required) Example: exampleProviderAffiliate provider name