python php java go

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 and YOUR_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.

1 Integrate the SDK

For Android

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, MOBILEFIXED_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