Overview
iziData provides API interfaces such as identity verification, face recognition, handheld ID identification, ID card OCR, and personal/enterprise credit.
iziData backend needs to verify sender’s identity of each request by using the Access Key / Secret Key encryption method. Access Key (AK) is used for identifying the user, Secret Key (SK) is the key used for user to encrypt the authentication string and for iziData backend to verify the authentication string, SK must be kept secret, only the user and iziData know.
Before use SDK,
YOUR_ACCESS_KEY
andYOUR_SECRET_KEY
should be apply from iziData.
Requests will return directly if the authentication fails.
Response example for authentication fails.
{
"status": "[status code, refer to the following description]",
"message": "error message"
}
Response format
fields | description |
---|---|
status |
status code |
message |
cause of error |
Status code
status | description |
---|---|
INSUFFICIENT_BALANCE |
insufficient balance |
INVALID_PARAMETER_ERROR |
request parameters invalid |
EXPIRED_REQUEST |
expired request, please try again |
NO_AUTHORIZATION |
authentication failed, user doesn't exist or invalid ak/sk |
RETRY_LATER |
system error |
KTP OCR
KTP + name recognition
Code example:
import izi
api = izi.client('YOUR_ACCESS_KEY', 'YOUR_SECRET_KEY')
data = {"img": "BASE64_ENCODE_VALUE"}
url = "https://api.izidata.co.id/v1/id_ocr/general"
response = api.request(url, data)
print(response)
<?php
require_once "izi/IziClient.php";
$client = new IziClient("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY");
$url = "https://api.izidata.co.id/v1/id_ocr/general";
$data = array("img"=>"BASE64_ENCODE_VALUE");
$response = $client->request($url, $data);
print($response);
import java.util.HashMap;
import java.util.Map;
import credit.izi.Client;
public class MainClass {
public static void main(String[] args) {
Client api = new Client("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY");
Map<String, String> data = new HashMap<>();
data.put("img", "BASE64_ENCODE_VALUE");
String url = "https://api.izidata.co.id/v1/id_ocr/general";
String response = api.Request(url, data);
System.out.println(response);
}
}
package main
import (
"fmt"
"github.com/izisdk/gosdk"
)
func main() {
api := gosdk.NewClient("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY")
data := map[string]string{
"img": "BASE64_ENCODE_VALUE",
}
url := "https://api.izidata.co.id/v1/id_ocr/general"
response, _ := api.Request(url, data)
fmt.Println(response)
}
Response for recognition success
{
"status": "OK",
"message": {
"name": "HELLO NAME",
"id": "f207821365c0485257481e9eb0020ae7",
"pob": "GARESSI SUPPA",
"dob": "01-01-1961",
"gender": "LAKI-LAKI",
"address": "BTN UNHALU BLOK C NO. 28",
"rt": "006",
"rw": "003",
"village": "KAMBU",
"district": "KAMBU",
"religion": "ISLAM",
"marital_status": "KAWIN",
"work": "PEGAWAI NEGERI SIPIL (PNS)",
"nationnality": "WNI",
"city": "KOTA KENDARI",
"province": "SULAWESI TENGGARA"
}
}
Response for recognition fail
{
"status": "FAIL",
"message": "check input image and retry"
}
Response for invalid request parameters
{
"status": "INVALID_REQUEST",
"message": "check request params"
}
Response for invalid image format
{
"status": "IMAGE_INVALID_FORMAT",
"message": "image format not support"
}
Response for image size larger than 4M
{
"status": "IMAGE_INVALID_SIZE",
"message": "image larger than 4M"
}
Response for server error
{
"status": "INNER_ERROR",
"message": "Inner error, please retry later"
}
HTTP request
POST https://api.izidata.co.id/v1/id_ocr/general
Request parameters
parameter | description |
---|---|
img |
string , base64 encoded image. It is recommended that the image be less than 200KB, so it will be returned within 2 seconds, otherwise the return time will be longer. |
Response format
fields | description |
---|---|
status |
status code |
message |
id : ID card number, NIK |
name : name |
|
pob : place of birth, maybe empty |
|
dob : date of birth, maybe empty |
|
gender : gender, maybe empty |
|
address : address, maybe empty |
|
province : province, maybe empty |
|
city : city, maybe empty |
|
district : district, maybe empty |
|
village : village, maybe empty |
|
rt : RT, maybe empty |
|
rw : RW, maybe empty |
|
religion : religion, maybe empty |
|
marital_status : marital status, maybe empty |
|
work : work, maybe empty |
|
nationnality : nationnality, maybe empty |
Status code
status | description |
---|---|
OK |
charge , success |
FAIL |
charge , image recognition error, please check input image |
INVALID_REQUEST |
free , invalid request parameters |
IMAGE_INVALID_FORMAT |
free , invalid image format, image format should be one of jpeg/jpg/png/bmp |
IMAGE_INVALID_SIZE |
free , invalid image size, should be less than 4M |
INNER_ERROR |
free , server error |
NPWP OCR
Indonesia NPWP recognition
Code example:
import izi
api = izi.client('YOUR_ACCESS_KEY', 'YOUR_SECRET_KEY')
data = {"img": "BASE64_ENCODE_VALUE"}
url = "https://api.izidata.co.id/v1/npwp_ocr/general"
response = api.request(url, data)
print(response)
<?php
require_once "izi/IziClient.php";
$client = new IziClient("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY");
$url = "https://api.izidata.co.id/v1/npwp_ocr/general";
$data = array("img"=>"BASE64_ENCODE_VALUE");
$response = $client->request($url, $data);
print($response);
import java.util.HashMap;
import java.util.Map;
import credit.izi.Client;
public class MainClass {
public static void main(String[] args) {
Client api = new Client("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY");
Map<String, String> data = new HashMap<>();
data.put("img", "BASE64_ENCODE_VALUE");
String url = "https://api.izidata.co.id/v1/npwp_ocr/general";
String response = api.Request(url, data);
System.out.println(response);
}
}
package main
import (
"fmt"
"github.com/izisdk/gosdk"
)
func main() {
api := gosdk.NewClient("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY")
data := map[string]string{
"img": "BASE64_ENCODE_VALUE",
}
url := "https://api.izidata.co.id/v1/npwp_ocr/general"
response, _ := api.Request(url, data)
fmt.Println(response)
}
Response for recognition success
{
"status": "OK",
"message": {
"mof": "KEMENTERIAN KEUANGAN REPUBLIK INDONESIA",
"dgt": "DIREKTORAT JENDERAL PAJAK",
"regDate": "21-02-2012",
"name": "ROZANA AMELIA PUTRI",
"npwp": "76.520.248.6-066.000",
"nik": "3174104107900002",
"kpp": "KPP PRATAMA JAKARTA PESANGGRAHAN",
"address": "JL. M. SAIDI RAYA NO. 1 RT. 005 RW. 001 PETUKANGAN SELATAN, PESANGGRAHAN JAKARTA SELATAN DKI JAKARTA"
}
}
Response for recognition fail
{
"status": "FAIL",
"message": "check input image and retry"
}
Response for invalid request parameters
{
"status": "INVALID_REQUEST",
"message": "check request params"
}
Response for invalid image format
{
"status": "IMAGE_INVALID_FORMAT",
"message": "image format not support"
}
Response for image size larger than 2M
{
"status": "IMAGE_INVALID_SIZE",
"message": "image larger than 2M"
}
Response for server error
{
"status": "INNER_ERROR",
"message": "Inner error, please retry later"
}
HTTP request
POST https://api.izidata.co.id/v1/npwp_ocr/general
Request parameters
parameter | description |
---|---|
img |
string , base64 encoded image. It is recommended that the image be less than 200KB, so it will be returned within 2 seconds, otherwise the return time will be longer. |
Response format
fields | description |
---|---|
status |
status code |
message |
mof : Ministry of Finance of Republic of Indonesia, maybe empty |
dgt :Tax Directorate General,maybe empty |
|
regDate :registration date,maybe empty |
|
name :name,maybe empty |
|
npwp :NPWP,maybe empty |
|
nik :NIK,maybe empty |
|
kpp :tax bureau,maybe empty |
|
address :address,maybe empty |
Status code
status | description |
---|---|
OK |
charge , success |
FAIL |
charge , image recognition error, please check input image |
INVALID_REQUEST |
free , invalid request parameters |
IMAGE_INVALID_FORMAT |
free , invalid image format, image format should be one of jpeg/jpg/png/bmp |
IMAGE_INVALID_SIZE |
free , invalid image size, should be less than 2M |
INNER_ERROR |
free , server error |
ID Card anti-fake
Use the deep learning algorithm to detect whether the face in the certificate is PS, whether the certificate is a printed certificate, replayAttackd certificate, and the blur of the certificate,the illumination of the certificate
Code example:
import izi
api = izi.client('YOUR_ACCESS_KEY', 'YOUR_SECRET_KEY')
data = {"img": "BASE64_ENCODE_VALUE"}
url = "https://api.izidata.co.id/v1/id_card/antifake"
response = api.request(url, data)
print(response)
<?php
require_once "izi/IziClient.php";
$client = new IziClient("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY");
$url = "https://api.izidata.co.id/v1/id_card/antifake";
$data = array("img"=>"BASE64_ENCODE_VALUE");
$response = $client->request($url, $data);
print($response);
import java.util.HashMap;
import java.util.Map;
import credit.izi.Client;
public class MainClass {
public static void main(String[] args) {
Client api = new Client("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY");
Map<String, String> data = new HashMap<>();
data.put("img", "BASE64_ENCODE_VALUE");
String url = "https://api.izidata.co.id/v1/id_card/antifake";
String response = api.Request(url, data);
System.out.println(response);
}
}
package main
import (
"fmt"
"github.com/izisdk/gosdk"
)
func main() {
api := gosdk.NewClient("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY")
data := map[string]string{
"img": "BASE64_ENCODE_VALUE",
}
url := "https://api.izidata.co.id/v1/id_card/antifake"
response, _ := api.Request(url, data)
fmt.Println(response)
}
Response for the input face is ps
{
"status": "OK",
"message": {
"blur": {
"isBlur": "no",
"score": 0
},
"ps": {
"isPs": "yes",
"score": 95
},
"print": {
"isPrint": "no",
"score": 1
},
"replayAttack": {
"isReplayAttack": "no",
"score": 10
}
}
}
Response for the input card face is not ps
{
"status": "OK",
"message": {
"blur": {
"isBlur": "no",
"score": 0
},
"ps": {
"isPs": "no",
"score": 8
},
"print": {
"isPrint": "no",
"score": 1
},
"replayAttack": {
"isReplayAttack": "no",
"score": 10
}
}
}
Response for the input card is blur image
{
"status": "OK",
"message": {
"blur": {
"isBlur": "yes",
"score": 61
},
"ps": {
"isPs": "no",
"score": 8
},
"print": {
"isPrint": "no",
"score": 1
},
"replayAttack": {
"isReplayAttack": "no",
"score": 10
}
}
}
Response for the input card is print image in black and white
{
"status": "OK",
"message": {
"blur": {
"isBlur": "no",
"score": 1
},
"ps": {
"isPs": "no",
"score": 8
},
"print": {
"isPrint": "yes",
"score": 100
},
"replayAttack": {
"isReplayAttack": "no",
"score": 10
}
}
}
Response for the input card is replayAttackd image
{
"status": "OK",
"message": {
"blur": {
"isBlur": "no",
"score": 1
},
"ps": {
"isPs": "no",
"score": 8
},
"print": {
"isPrint": "no",
"score": 0
},
"replayAttack": {
"isReplayAttack": "no",
"score": 10
}
}
}
Response for the input card is too dark or too bright
{
"status": "OK",
"message": {
"blur": {
"isBlur": "no",
"score": 1
},
"ps": {
"isPs": "no",
"score": 8
},
"print": {
"isPrint": "no",
"score": 0
},
"replayAttack": {
"isReplayAttack": "no",
"score": 10
}
}
}
Response for recognition fail
{
"status": "FAIL",
"message": "check input image and retry"
}
Response for invalid request parameters
{
"status": "INVALID_REQUEST",
"message": "check request params"
}
Response for invalid image format
{
"status": "IMAGE_INVALID_FORMAT",
"message": "image format not support"
}
Response for image size larger than 2M
{
"status": "IMAGE_INVALID_SIZE",
"message": "image larger than 2M"
}
Response for server error
{
"status": "INNER_ERROR",
"message": "Inner error, please retry later"
}
HTTP request
POST https://api.izidata.co.id/v1/id_card/antifake
Request parameters
parameter | description |
---|---|
img |
string , base64 encoded image. It is recommended that the image be less than 200KB, so it will be returned within 2 seconds, otherwise the return time will be longer. |
Response format
The scores below are reference values. It is recommended to adjust the scores in actual use.
fields | description |
---|---|
isPs |
yes face is ps, no face is not ps |
ps score |
this is the confidence level of the ps face, the range is [0, 100]. The default is greater than 80 points is ps face |
isBlur |
yes is blur, no is not blur |
blur score |
this is the confidence level of the blur card, the range is [0, 100]. The default is greater than 30 points is blur card |
isPrint |
yes is print image in black and white, no is not print image |
print score |
this is the confidence level of the print image, the range is [0, 100]. The default is greater than 70 points is print image |
isReplayAttack |
yes is a replayAttackd image, no is not replayAttackd image |
replayAttack score |
this is the confidence level of the replayAttack image,the range is [0, 100]. The default is greater than 60 points is replayAttackd image |
Status code
status | description |
---|---|
OK |
charge , success |
FAIL |
charge , image recognition error, please check input image |
INVALID_REQUEST |
free , invalid request parameters |
IMAGE_INVALID_FORMAT |
free , invalid image format, image format should be one of jpeg/jpg/png/bmp |
IMAGE_INVALID_SIZE |
free , invalid image size, should be less than 2M |
INNER_ERROR |
free , server error |
Liveness Detection
There are 2 steps for Liveness Detection Service.
Step 1: Integrate the SDK for Android
Step 2: Request Liveness Detection to get the liveness score
1 Integrate the SDK
For Android
- Standard Integration Document
2 Liveness Detection V1
Code example:
import izi
api = izi.client('YOUR_ACCESS_KEY', 'YOUR_SECRET_KEY')
data = {"img": "BASE64_ENCODE_VALUE"}
url = "https://api.izidata.co.id/v1/picturelive"
response = api.request(url, data)
print(response)
<?php
require_once "izi/IziClient.php";
$client = new IziClient("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY");
$url = "https://api.izidata.co.id/v1/picturelive";
$data = array("img"=>"BASE64_ENCODE_VALUE");
$response = $client->request($url, $data);
print($response);
import java.util.HashMap;
import java.util.Map;
import credit.izi.Client;
public class MainClass {
public static void main(String[] args) {
Client api = new Client("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY");
Map<String, String> data = new HashMap<>();
data.put("img", "BASE64_ENCODE_VALUE");
String url = "https://api.izidata.co.id/v1/picturelive";
String response = api.Request(url, data);
System.out.println(response);
}
}
package main
import (
"fmt"
"github.com/izisdk/gosdk"
)
func main() {
api := gosdk.NewClient("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY")
data := map[string]string{
"img": "BASE64_ENCODE_VALUE",
}
url := "https://api.izidata.co.id/v1/picturelive"
response, _ := api.Request(url, data)
fmt.Println(response)
}
Example of Success Response:
{
"status": "OK",
"message": {
"live_score": 100
}
}
Example of success response (detail = 1):
{
"status": "OK",
"message": {
"is_liveness":true,
"live_score": 100,
"reason": "success"
}
}
Example of multiple faces (detail = 1):
{
"status": "OK",
"message": {
"is_liveness":false,
"live_score": 0,
"reason": "multiple faces"
}
}
Example of no liveness face (detail = 1):
{
"status": "OK",
"message": {
"is_liveness":false,
"live_score": 0,
"reason": "no liveness face"
}
}
Example of eyes closed (detail = 1):
{
"status": "OK",
"message": {
"is_liveness":false,
"live_score": 0,
"reason": "eyes closed"
}
}
Example of age dissatisfaction (detail = 1):
{
"status": "OK",
"message": {
"is_liveness": false,
"live_score": 0,
"reason": "age dissatisfaction"
}
}
Response for recognition fail
{
"status": "FAIL",
"message": "check input image and retry"
}
Response for invalid request parameters
{
"status": "INVALID_REQUEST",
"message": "check request params"
}
Response for invalid image format
{
"status": "IMAGE_INVALID_FORMAT",
"message": "image format not support"
}
Response for image size larger than 2M
{
"status": "IMAGE_INVALID_SIZE",
"message": "image larger than 2M"
}
Response for server error
{
"status": "INNER_ERROR",
"message": "Inner error, please retry later"
}
HTTP request
POST https://api.izidata.co.id/v1/picturelive
Request parameters
parameter | description |
---|---|
img |
string , base64 encoded image |
country |
string ,country code:ID |
detail |
optional ,string ,detail=1,returns the detail result of Example 2. |
Default Response format
fields | description |
---|---|
status |
status code |
message |
live_score :liveness score [0-100] |
Detail Response format
parameter | description |
---|---|
status |
status code |
message |
is_liveness :whether the liveness detection passed |
live_score :liveness score [0-100] |
|
reason :success、eyes closed、no liveness face、face incomplete、face dark、face blur、no face detected、multiple faces |
Status code
status | description |
---|---|
OK |
charge , success |
FAIL |
charge , image recognition error, please check input image |
INVALID_REQUEST |
free , invalid request parameters |
IMAGE_INVALID_FORMAT |
free , invalid image format, image format should be one of jpeg/jpg/png/bmp |
IMAGE_INVALID_SIZE |
free , invalid image size, should be less than 2M |
INNER_ERROR |
free , server error |
Face Comparison
Analyze the possibility of two faces belong to the same person. Using our face matching technology, you will get our judgment about whether it is the same person as well as a similarity score.
Code example:
import izi
api = izi.client('YOUR_ACCESS_KEY', 'YOUR_SECRET_KEY')
data = {"img1": "BASE64_ENCODE_VALUE", "img2": "BASE64_ENCODE_VALUE"}
url = "https://api.izidata.co.id/v1/facecompare"
response = api.request(url, data)
print(response)
<?php
require_once "izi/IziClient.php";
$client = new IziClient("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY");
$url = "https://api.izidata.co.id/v1/facecompare";
$data = array("img1"=>"BASE64_ENCODE_VALUE", "img2"=>"BASE64_ENCODE_VALUE");
$response = $client->request($url, $data);
print($response);
import java.util.HashMap;
import java.util.Map;
import credit.izi.Client;
public class MainClass {
public static void main(String[] args) {
Client api = new Client("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY");
Map<String, String> data = new HashMap<>();
data.put("img1", "BASE64_ENCODE_VALUE");
data.put("img2", "BASE64_ENCODE_VALUE");
String url = "https://api.izidata.co.id/v1/facecompare";
String response = api.Request(url, data);
System.out.println(response);
}
}
package main
import (
"fmt"
"github.com/izisdk/gosdk"
)
func main() {
api := gosdk.NewClient("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY")
data := map[string]string{
"img1": "BASE64_ENCODE_VALUE",
"img2": "BASE64_ENCODE_VALUE",
}
url := "https://api.izidata.co.id/v1/facecompare"
response, _ := api.Request(url, data)
fmt.Println(response)
}
Response example for same person
{
"status": "OK",
"message": {
"similarity": 97.501,
"result": "SAME PERSON"
}
}
Response example for not the same person
{
"status": "OK",
"message": {
"similarity": 27.501,
"result": "NOT SAME PERSON"
}
}
Response example for not sure
{
"status": "OK",
"message": {
"similarity": 50.501,
"result": "NOT SURE"
}
}
Response example for error request
{
"status": "INVALID_REQUEST",
"message": "error message"
}
Response example for uploaded image larger than 2M
{
"status": "IMAGE_INVALID_SIZE",
"message": "image larger than 2M"
}
Response example failed to detected face
{
"status":"RETRY_LATER",
"message":"IMAGE_FACE_DETECT_FAILED"
}
Response for server error
{
"status": "INNER_ERROR",
"message": "Inner error, please retry later"
}
HTTP request
POST https://api.izidata.co.id/v1/facecompare
Request parameters
parameter | description |
---|---|
img1 |
string , first image in base64 encoded format |
img2 |
string , second image in base64 encoded format |
Response format
fields | description |
---|---|
status |
status code |
message |
similarity : similarity score, 0~100 |
result : judgment |
Status code
status | description |
---|---|
OK |
charge , success, message.similarity contains the similarity score |
RETRY_LATER |
charge , image face detect failed |
INVALID_REQUEST |
free , invalid request parameters |
IMAGE_INVALID_SIZE |
free , image size larger than 2M |
INNER_ERROR |
free , server error |
Judgment description
result | description |
---|---|
SAME PERSON |
the two images are belong to the same person |
NOT SAME PERSON |
the two images are not belong to the same person |
NOT SURE |
not sure |
Hand-held ID Card Comparison
Analyze the possibility of the person holding the ID card and the photo of ID card belonging to the same person. Using our face matching technology, you will get our judgment about whether it is the same person as well as a similarity score.
Code example:
import izi
api = izi.client('YOUR_ACCESS_KEY', 'YOUR_SECRET_KEY')
data = {"img": "BASE64_ENCODE_VALUE"}
url = "https://api.izidata.co.id/v1/idholding"
response = api.request(url, data)
print(response)
<?php
require_once "izi/IziClient.php";
$client = new IziClient("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY");
$url = "https://api.izidata.co.id/v1/idholding";
$data = array("img"=>"BASE64_ENCODE_VALUE");
$response = $client->request($url, $data);
print($response);
import java.util.HashMap;
import java.util.Map;
import credit.izi.Client;
public class MainClass {
public static void main(String[] args) {
Client api = new Client("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY");
Map<String, String> data = new HashMap<>();
data.put("img", "BASE64_ENCODE_VALUE");
String url = "https://api.izidata.co.id/v1/idholding";
String response = api.Request(url, data);
System.out.println(response);
}
}
package main
import (
"fmt"
"github.com/izisdk/gosdk"
)
func main() {
api := gosdk.NewClient("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY")
data := map[string]string{
"img": "BASE64_ENCODE_VALUE",
}
url := "https://api.izidata.co.id/v1/idholding"
response, _ := api.Request(url, data)
fmt.Println(response)
}
Response example for same person
{
"status": "OK",
"message": {
"similarity": 97.501,
"result": "SAME PERSON"
}
}
Response example for not the same person
{
"status": "OK",
"message": {
"similarity": 27.501,
"result": "NOT SAME PERSON"
}
}
Response example for error request
{
"status": "INVALID_REQUEST",
"message": "error message"
}
Response example for uploaded image larger than 2M
{
"status": "IMAGE_INVALID_SIZE",
"message": "image larger than 2M"
}
Response example for wrong image, not ID holding image
{
"status": "RETRY_LATER",
"message": "error not idholding image"
}
Response for server error
{
"status": "INNER_ERROR",
"message": "Inner error, please retry later"
}
HTTP request
POST https://api.izidata.co.id/v1/idholding
Request parameters
parameter | description |
---|---|
img |
string , base64 encoded image |
Response format
fields | description |
---|---|
status |
status code |
message |
similarity : similarity score, 0~100 |
result : judgment |
Status code
status | description |
---|---|
OK |
charge , success, message.similarity contains the similarity score |
RETRY_LATER |
charge , invalid idholding image |
INVALID_REQUEST |
free , invalid request parameters |
IMAGE_INVALID_SIZE |
free , image size larger than 2M |
INNER_ERROR |
free , server error |
Global Phone Carrier Inquiry
Global phone carrier inquiry, billions of records, timely updates, high accuracy.
Code example:
import izi
api = izi.client('YOUR_ACCESS_KEY', 'YOUR_SECRET_KEY')
data = {"number": "83899575175", "country": "ID"}
url = "https://api.izidata.co.id/v1/phone"
response = api.request(url, data)
print(response)
<?php
require_once "izi/IziClient.php";
$client = new Client("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY");
$url = "https://api.izidata.co.id/v1/phone";
$data = array("number"=>"83899575175", "country"=>"ID");
$response = $client->request($url, $data);
print($response);
import java.util.HashMap;
import java.util.Map;
import credit.izi.Client;
public class MainClass {
public static void main(String[] args) {
Client api = new Client("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY");
Map<String, String> data = new HashMap<>();
data.put("number", "83899575175");
data.put("country", "ID");
String url = "https://api.izidata.co.id/v1/phone";
String response = api.request(url, data);
System.out.println(response);
}
}
package main
import (
"fmt"
"github.com/izisdk/gosdk"
)
func main() {
api := gosdk.NewClient("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY")
data := map[string]string{
"number": "83899575175",
"country": "ID",
}
url := "https://api.izidata.co.id/v1/phone"
response, _ := api.Request(url, data)
fmt.Println(response)
}
Response example for normal request
{
"status": "ok",
"message": {
"country_code": 62,
"national_number": 83899575175,
"is_valid_number": true,
"number_type": "MOBILE",
"e164": "+6283899575175",
"region_code": "ID",
"location": {
"en": ""
},
"time_zones": [
"Asia/Jakarta"
],
"carrier": {
"en": "AXIS"
}
}
}
Response example for error request
{
"status":"fail",
"message":"The phone number supplied is not a number."
}
HTTP request
POST https://api.izidata.co.id/v1/phone
Request parameters
parameter | description |
---|---|
number |
string , phone number |
country |
string , region code, such as ID for Indonesia |
Status code
status | description |
---|---|
ok |
charge , success |
fail |
free , fail, message field contains the error message |
Phone number fields description
fields | description |
---|---|
country_code | country code, such as 62 for Indonesia |
national_number | domestic calling number |
is_valid_number | is valid number |
number_type | number type, MOBILE 、FIXED_LINE |
e164 | e164 formated number |
region_code | region code, such asID for Indonesia |
location | location, multilingual |
time_zones | time zones |
carrier | service provider, multilingual |
Phone number type description
type | description |
---|---|
MOBILE |
mobile phone |
FIXED_LINE |
fixed telephone |
FIXED_LINE_OR_MOBILE |
Mobile phone or fixed telephone, in some countries, it is impossible to distinguish between fixed and mobile phones only by its number alone |
SHARED_COST |
http://en.wikipedia.org/wiki/Shared_Cost_Service |
VOIP |
VOIP |
PERSONAL_NUMBER |
http://en.wikipedia.org/wiki/Personal_Numbers |
UNKNOWN |
Unknown |
WhatsApp Detection
Check whether the input number have registered WhatsApp
Code example:
import izi
api = izi.client('YOUR_ACCESS_KEY', 'YOUR_SECRET_KEY')
data = {
"number": "0895806600002",
"callback": "https://YOUR_CALLBACK_URL"
}
url = "https://api.izidata.co.id/v1/iswhatsapp"
response = api.request(url, data)
print(response)
#md5 encryption
api = izi.client('YOUR_ACCESS_KEY', 'YOUR_SECRET_KEY')
data = {
"number": "06e520b08f649558ae43fe3ff025b7fa",
"callback": "https://YOUR_CALLBACK_URL",
"md5": 1
}
url = "https://api.izidata.co.id/v1/iswhatsapp"
response = api.request(url, data)
print(response)
<?php
require_once "izi/IziClient.php";
$client = new IziClient("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY");
$url = "https://api.izidata.co.id/v1/iswhatsapp";
$data = array(
"number"=>"0895806600002",
"callback"=>"https://YOUR_CALLBACK_URL"
);
$response = $client->request($url, $data);
print($response);
import java.util.HashMap;
import java.util.Map;
import credit.izi.Client;
public class MainClass {
public static void main(String[] args) {
Client api = new Client("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY");
Map<String, String> data = new HashMap<>();
data.put("number", "0895806600002");
data.put("callback", "https://YOUR_CALLBACK_URL");
String url = "https://api.izidata.co.id/v1/iswhatsapp";
String response = api.Request(url, data);
System.out.println(response);
}
}
package main
import (
"fmt"
"github.com/izisdk/gosdk"
)
func main() {
api := gosdk.NewClient("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY")
data := map[string]string{
"number": "0895806600002",
"callback": "https://YOUR_CALLBACK_URL",
}
url := "https://api.izidata.co.id/v1/iswhatsapp"
response, _ := api.Request(url, data)
fmt.Println(response)
}
Non-callback request (callback is empty), response for the input number have already registered whatsapp
{
"status": "OK",
"message": {
"whatsapp": "yes"
}
}
Non-callback request (callback is empty), response for the input number not register whatsapp
{
"status": "OK",
"message": {
"whatsapp": "no"
}
}
Response for the input number is checking
{
"status": "OK",
"message": {
"whatsapp": "checking"
}
}
The requested md5 does not exist in the system
{
"status":"NOT_FOUND_MD5",
"message":"This md5 can't be found in our system"
}
Return by callback address (callback address)
GET https://YOUR_CALLBACKURL/?number=%2B62813116594289&whatsapp=no
HTTP request
POST https://api.izidata.co.id/v1/iswhatsapp
Request parameters
parameter | description |
---|---|
number |
string , phone number |
md5 |
optional , string , md5=1 means the request parameter is md5, phone number must be encrypted in md5 in E164 format. For E164, please refer to [Global Phone Operator Query] |
Response format
fields | description |
---|---|
status |
status code |
message |
whatsapp : conclusion |
Status code
status | description |
---|---|
OK |
the whatsapp value is checking, unavailable for free else charge, message contains the result |
FAIL |
free , invalid query |
INVALID_INPUT |
free , invalid input |
RETRY_LATER |
free , server error, please try again later |
ID Multi-Inquiries v1
This API is for Multiplatform Detection, input an ID number (NIK) number and this service will return every circumstance where the ID number has been checked by a financial institution without revealing any sensitive information
Code example:
import izi
api = izi.client('YOUR_ACCESS_KEY', 'YOUR_SECRET_KEY')
data = {"id": "+6282299999999"}
#md5 encryption
#data = {"id": "f207821365c0485257481e9eb0020ae7", "md5": 1}
url = "https://api.izidata.co.id/v1/idinquiries"
response = api.request(url, data)
print(response)
<?php
require_once "izi/IziClient.php";
$client = new IziClient("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY");
$url = "https://api.izidata.co.id/v1/idinquiries";
$data = array("id"=>"f207821365c0485257481e9eb0020ae7", "md5"=>1);
$response = $client->request($url, $data);
print($response);
import java.util.HashMap;
import java.util.Map;
import credit.izi.Client;
public class MainClass {
public static void main(String[] args) {
Client api = new Client("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY");
Map<String, String> data = new HashMap<>();
data.put("id", "f207821365c0485257481e9eb0020ae7");
data.put("md5", 1);
String url = "https://api.izidata.co.id/v1/idinquiries";
String response = api.Request(url, data);
System.out.println(response);
}
}
package main
import (
"fmt"
"github.com/izisdk/gosdk"
)
func main() {
api := gosdk.NewClient("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY")
data := map[string]string{
"id": "f207821365c0485257481e9eb0020ae7",
"md5": "1",
}
url := "https://api.izidata.co.id/v1/idinquiries"
response, _ := api.Request(url, data)
fmt.Println(response)
}
Response for find result
{
"status": "OK",
"message": {
"07d": 0,
"14d": 1,
"21d": 1,
"30d": 2,
"60d": 4,
"90d": 11,
"total": 11
}
}
Response for invalid request parameters
{
"status": "INVALID_ID_NUMBER",
"message": "Invalid ID number, please check the NIK format"
}
Response for server error
{
"status": "RETRY_LATER",
"message": "Service is not available right now, please try again later"
}
The requested md5 does not exist in the system
{
"status":"NOT_FOUND_MD5",
"message":"This md5 can't be found in our system"
}
HTTP request
POST https://api.izidata.co.id/v1/idinquiries
Request parameters
parameter | description |
---|---|
id |
string , ID card number |
md5 |
optional , string , md5=1 means the request parameter is md5 |
Response format
parameter | description |
---|---|
status |
status code |
message |
07d :Within 7 days the number of institutions |
14d :Within 14 days the number of institutions |
|
21d :Within 21 days the number of institutions |
|
30d :Within 30 days the number of institutions |
|
60d :Within 60 days the number of institutions |
|
90d :Within 90 days the number of institutions |
|
total :The total number of institutions |
Status code
status | description |
---|---|
OK |
charge , success, message contains the conclusion |
INVALID_ID_NUMBER |
free , invalid ktp number |
RETRY_LATER |
free ,server error, please try again later |
Phone Multi-Inquiries v1
This API is for Multiplatform Detection, input an phone number and this service will return every circumstance where the phone number has been checked by a financial institution without revealing any sensitive information
Code example:
import izi
api = izi.client('YOUR_ACCESS_KEY', 'YOUR_SECRET_KEY')
data = {"phone": "+6282299999999"}
#md5 encryption
#data = {"phone": "926799cb75a5d93c1c0fca56ba2b265d", "md5": 1}
url = "https://api.izidata.co.id/v1/phoneinquiries"
response = api.request(url, data)
print(response)
<?php
require_once "izi/IziClient.php";
$client = new IziClient("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY");
$url = "https://api.izidata.co.id/v1/phoneinquiries";
$data = array("phone"=>"926799cb75a5d93c1c0fca56ba2b265d");
$response = $client->request($url, $data);
print($response);
import java.util.HashMap;
import java.util.Map;
import credit.izi.Client;
public class MainClass {
public static void main(String[] args) {
Client api = new Client("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY");
Map<String, String> data = new HashMap<>();
data.put("phone", "926799cb75a5d93c1c0fca56ba2b265d");
String url = "https://api.izidata.co.id/v1/phoneinquiries";
String response = api.Request(url, data);
System.out.println(response);
}
}
package main
import (
"fmt"
"github.com/izisdk/gosdk"
)
func main() {
api := gosdk.NewClient("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY")
data := map[string]string{
"phone": "926799cb75a5d93c1c0fca56ba2b265d",
}
url := "https://api.izidata.co.id/v1/phoneinquiries"
response, _ := api.Request(url, data)
fmt.Println(response)
}
Response for find result
{
"status": "OK",
"message": {
"07d": 0,
"14d": 1,
"21d": 1,
"30d": 2,
"60d": 4,
"90d": 11,
"total": 11
}
}
Response for invalid request parameters
{
"status": "FAIL",
"message": "Invalid phone number, please check your phone number format"
}
Response for server error
{
"status": "RETRY_LATER",
"message": "Service is not available right now, please try again later"
}
The requested md5 does not exist in the system
{
"status":"NOT_FOUND_MD5",
"message":"This md5 can't be found in our system"
}
HTTP request
POST https://api.izidata.co.id/v1/phoneinquiries
Request parameters
parameter | description |
---|---|
phone |
string , phone number |
md5 |
optional , string , md5=1 means the request parameter is md5, phone number must be encrypted in md5 in E164 format. For E164, please refer to [Global Phone Operator Query] |
Response format
parameter | description |
---|---|
status |
status code |
message |
07d :Within 7 days the number of institutions |
14d :Within 14 days the number of institutions |
|
21d :Within 21 days the number of institutions |
|
30d :Within 30 days the number of institutions |
|
60d :Within 60 days the number of institutions |
|
90d :Within 90 days the number of institutions |
|
total :The total number of institutions |
Status code
status | description |
---|---|
OK |
charge , success, message contains the conclusion |
FAIL |
free , invalid phone number |
RETRY_LATER |
free ,server error, please try again later |
Credit Score
According to the phone number、 ktp、 name and other infomation calculate user's credit score.
Code example:
import izi
api = izi.client('YOUR_ACCESS_KEY', 'YOUR_SECRET_KEY')
data = {
"phone": "926799cb75a5d93c1c0fca56ba2b265d",
"name": "Desi angin",
"id": "4C161E0381A0A735C36B45DA8F1C237E",
"md5": 1
}
url = "https://api.izidata.co.id/v1/creditscore"
response = api.request(url, data)
print(response)
<?php
require_once "izi/IziClient.php";
$client = new IziClient("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY");
$url = "https://api.izidata.co.id/v1/creditscore";
$data = array(
"phone"=>"926799cb75a5d93c1c0fca56ba2b265d",
"name"=>"Desi angin",
"id"=>"4c161e0381a0a735c36b45da8f1c237e",
"md5"=>1,
);
$response = $client->request($url, $data);
print($response);
import java.util.HashMap;
import java.util.Map;
import credit.izi.Client;
public class MainClass {
public static void main(String[] args) {
Client api = new Client("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY");
Map<String, String> data = new HashMap<>();
data.put("phone", "926799cb75a5d93c1c0fca56ba2b265d");
data.put("name", "Desi angin");
data.put("id", "4c161e0381a0a735c36b45da8f1c237e");
data.put("md5", 1);
String url = "https://api.izidata.co.id/v1/creditscore";
String response = api.Request(url, data);
System.out.println(response);
}
}
package main
import (
"fmt"
"github.com/izisdk/gosdk"
)
func main() {
api := gosdk.NewClient("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY")
data := map[string]string{
"phone": "926799cb75a5d93c1c0fca56ba2b265d",
"name": "Desi angin",
"id": "4c161e0381a0a735c36b45da8f1c237e",
"md5": 1,
}
url := "https://api.izidata.co.id/v1/creditscore"
response, _ := api.Request(url, data)
fmt.Println(response)
}
Response for phone number get result
{
"status": "OK",
"message": "669"
}
Response for invalid ktp
{
"status": "INVALID_INPUT",
"message": "Invalid ID number, please check the NIK format"
}
Response for invalid phone
{
"status": "INVALID_INPUT",
"message": "Invalid phone number, please check your phone number format"
}
The requested md5 does not exist in the system
{
"status":"NOT_FOUND_MD5",
"message":"This md5 can't be found in our system"
}
HTTP request
POST https://api.izidata.co.id/v1/creditscore
Request parameters
parameter | description |
---|---|
phone |
string , phone number |
id |
string ,ktp |
name |
string ,username |
md5 |
optional , string , md5=1 means the request parameter is md5, phone number must be encrypted in md5 in E164 format. For E164, please refer to [Global Phone Operator Query] |
Response format
fields | description |
---|---|
status |
status code |
message |
creditscore :FICO standard,the range of score is 300~850 |
Status code
status | description |
---|---|
OK |
charge , success, message contains the conclusion |
INVALID_INPUT |
free , invalid input |
NOT_FOUND_MD5 |
free , the input MD5 data cann't find out |
RETRY_LATER |
free , server error, please try again later |
Fraud Score
According to the phone number、 ktp, identify fraud risk
Code example:
import izi
api = izi.client('YOUR_ACCESS_KEY', 'YOUR_SECRET_KEY')
data = {
"phone": "+6281375632357",
"id": "4c161e0381a0a735c36b45da8f1c237e"
}
url = "https://api.izidata.co.id/v1/fraud"
response = api.request(url, data)
print(response)
#32-bit MD5 encryption
api = izi.client('YOUR_ACCESS_KEY', 'YOUR_SECRET_KEY')
data = {
"phone": "926799cb75a5d93c1c0fca56ba2b265d",
"id": "4c161e0381a0a735c36b45da8f1c237e",
"md5": 1
}
url = "https://api.izidata.co.id/v1/fraud"
response = api.request(url, data)
print(response)
<?php
require_once "izi/IziClient.php";
$client = new IziClient("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY");
$url = "https://api.izidata.co.id/v1/fraud";
$data = array(
"phone"=>"926799cb75a5d93c1c0fca56ba2b265d",
"id"=>"4c161e0381a0a735c36b45da8f1c237e",
"1"=>"md5"
);
$response = $client->request($url, $data);
print($response);
import java.util.HashMap;
import java.util.Map;
import credit.izi.Client;
public class MainClass {
public static void main(String[] args) {
Client api = new Client("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY");
Map<String, String> data = new HashMap<>();
data.put("phone", "926799cb75a5d93c1c0fca56ba2b265d");
data.put("id", "4c161e0381a0a735c36b45da8f1c237e");
data.put("md5", 1);
String url = "https://api.izidata.co.id/v1/fraud";
String response = api.Request(url, data);
System.out.println(response);
}
}
package main
import (
"fmt"
"github.com/izisdk/gosdk"
)
func main() {
api := gosdk.NewClient("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY")
data := map[string]string{
"phone": "926799cb75a5d93c1c0fca56ba2b265d",
"id": "4c161e0381a0a735c36b45da8f1c237e",
"md5": 1,
}
url := "https://api.izidata.co.id/v1/fraud"
response, _ := api.Request(url, data)
fmt.Println(response)
}
Response for no fraud risk
{
"status": "OK",
"message": {
"fraud_status": "PASS",
"fraud_score": 19
}
}
Response for possible fraud risk
{
"status": "OK",
"message": {
"fraud_status": "NEEDS_VERIFICATION",
"fraud_score": 56
}
}
Response for fraud risk
{
"status": "OK",
"message": {
"fraud_status": "REJECT",
"fraud_score": 76
}
}
Response for invalid ktp
{
"status": "INVALID_INPUT",
"message": "Invalid ID number, please check the NIK format"
}
Response for invalid phone
{
"status": "INVALID_INPUT",
"message": "Invalid phone number, please check your phone number format"
}
The requested md5 does not exist in the system
{
"status":"NOT_FOUND_MD5",
"message":"This md5 can't be found in our system"
}
HTTP request
POST https://api.izidata.co.id/v1/fraud
Request parameters
parameter | description |
---|---|
phone |
string , phone number |
id |
string ,ktp |
md5 |
string , md5 currently only supports Indonesia and name doesn't support md5, md5=1 means phone number must be encrypted in md5 in E164 format. For example: +62820188001 encryption 4b5c890525ed9f0faef12d193345bbfd |
Response format
fields | description |
---|---|
status |
status code |
message |
fraud_status : PASS(no fraud risk), NEEDS_VERIFICATION (fraudulent doubt), REJECT (fraud risk) |
fraud_score : fraud score, the higher the score, the greater the risk of fraud, the value range is 0~100 |
Status code
status | description |
---|---|
OK |
charge , success, message contains the conclusion |
INVALID_INPUT |
free , invalid input |
NOT_FOUND_MD5 |
free , the input MD5 data cann't find out |
RETRY_LATER |
free , server error, please try again later |