Introducing VIDA Identity Stack: All of VIDA, in one place 🎉
For the complete documentation index, see llms.txt. This page is also available as Markdown.

Malaysian Cards

Currently Supported Malaysian Cards include:

📝 Note: Currently, forgery detection models are only available for MyKad cards. As a result: Only MyKad will include forgery check results. Other card types — such as MyTentera, MyKas, and MyPR — will not have forgery checks performed on them.

MyKad

Request
{
  "operations": ["idVerification"],
  "payload": {
    "partnerTrxId": "random-uuid",
    "groupId": "random-uuid",
    "idType": "ID_CARD",
    "country": "MYS",
    "idSubtype": "MyKad",
    "idFrontSideImage": "Base64 encoded image of ID front side"
  },
  "userConsent": {
    "userIP": "0.0.0.0",
    "country": "MYS",
    "obtained": true,
    "obtainedAt": "1680700959"
  }
}

Success Response

HTTP Status Code: 200

Success JSON Response
{
  "transactionId": "unique transaction id generated to identify this transaction",
  "partnerTrxId": "partner transaction id submitted by customer in request",
  "groupId": "partner group id submitted by customer in request",
  "imageQualityResult": {
    "glare": {
        "score": 0,
        "threshold": 0.95
    },
    "blurriness": {
        "score": 0.000001,
        "threshold": 0.95
    },
    "lowLight": {
        "score": 0.045506,
        "threshold": 0.95
    }
  },
  "card":{
       "country": "MALAYSIA",
       "type": "MyKad",
       "isoAlpha3CountryCode": "MYS",
       "isoAlpha2CountryCode": "MY"
  },
  "idVerificationResult": {
    "spoofingResult": {
        "message": "Success",
        "code": 5000,
        "recapScore": {
            "score": 0.17639,
            "threshold": 0.95
        },
        "blackWhite": {
            "score": 0.003555,
            "threshold": 0.95
        }
    },
    "landmarkResult": {
        "code": 5000,
        "message": "Success",
        "threshold": 0.95,
        "containerResult": [
            {
                "position": {
                    "x": 508,
                    "y": 875,
                    "width": 336,
                    "height": 280
                },
                "name": "ghost",
                "score": 0.9931
            },
            {
                "position": {
                    "x": 885,
                    "y": 1069,
                    "width": 234,
                    "height": 249
                },
                "name": "card_logo",
                "score": 0.9851
            },
            {
                "position": {
                    "x": 195,
                    "y": 1172,
                    "width": 677,
                    "height": 522
                },
                "name": "portrait",
                "score": 0.9779
            },
            {
                "position": {
                    "x": 513,
                    "y": 196,
                    "width": 251,
                    "height": 273
                },
                "name": "chip",
                "score": 0.9774
            },
            {
                "position": {
                    "x": 17,
                    "y": 814,
                    "width": 315,
                    "height": 552
                },
                "name": "hibiscus_logo",
                "score": 0.9828
            },
            {
                "position": {
                    "x": 890,
                    "y": 1356,
                    "width": 197,
                    "height": 353
                },
                "name": "malaysia_flag",
                "score": 0.9818
            },
            {
                "position": {
                    "x": 621,
                    "y": 591,
                    "width": 222,
                    "height": 423
                },
                "name": "msc_logo",
                "score": 0.9791
            },
            {
                "position": {
                    "x": 903,
                    "y": 104,
                    "width": 196,
                    "height": 936
                },
                "name": "kad_pengenalan_header",
                "score": 0.9828
            },
            {
                "position": {
                    "x": 304,
                    "y": 99,
                    "width": 45,
                    "height": 408
                },
                "name": "name",
                "score": 0.9907
            },
            {
                "position": {
                    "x": 809,
                    "y": 83,
                    "width": 62,
                    "height": 570
                },
                "name": "id_number",
                "score": 0.9923
            }
        ]
    },
    "forgeryResult": {
        "code": 5000,
        "message": "Success",
        "summary": {
            "score": 0.257148,
            "threshold": 0.95
        }
    }
  }
}

Forged Card Response

HTTP Status Code: 400

Forged card JSON Response

Landmark Warning Response

HTTP Status Code: 200

Landmark Warning JSON Response

Spoof Warning Response

Note: This happens when exactly 1 spoof check fails.

HTTP Status Code: 200

Spoof Warning JSON Response

Spoof Error Response

Note: This happens when more than 1 spoof check fails.

HTTP Status Code: 400

Spoof Error JSON Response

MyTentera

📝 Note: There are two versions of MyTentera cards: - An old version (without a ghost image) - A new version (with a ghost image)

The ghost image is treated as an optional landmark:

  • If detected, it will be included in the response.

  • If not detected, it will be silently omitted — no warning will be triggered.

Request

Success Response

HTTP Status Code: 200

Success JSON Response

Landmark Warning Response

HTTP Status Code: 200

Landmark Warning JSON Response

Spoof Warning Response

Note: This happens when 1 spoof check fails.

HTTP Status Code: 200

Spoof Warning JSON Response

Spoof Error Response

Note: This happens when more than 1 spoof check fails.

HTTP Status Code: 400

Spoof Error JSON Response

MyKas

Request

Success Response

HTTP Status Code: 200

Success JSON Response

Landmark Warning Response

HTTP Status Code: 200

Landmark Warning JSON Response

Spoof Warning Response

Note: This happens when 1 spoof check fails.

HTTP Status Code: 200

Spoof Warning JSON Response

Spoof Error Response

Note: This happens when more than 1 spoof check fails.

HTTP Status Code: 400

Spoof Error JSON Response

MyPR

Request

Success Response

HTTP Status Code: 200

Success JSON Response

Landmark Warning Response

HTTP Status Code: 200

Landmark Warning JSON Response

Spoof Warning Response

Note: This happens when 1 spoof check fails.

HTTP Status Code: 200

Spoof Warning JSON Response

Spoof Error Response

Note: This happens when more than 1 spoof check fails.

HTTP Status Code: 400

Spoof Error JSON Response

Last updated