Overview

				API Endpoint: https://app.codegokyc.com/api
            

Codego web services are accessed using a RESTful methodology (see http://en.wikipedia.org/wiki/Representational_state_transfer).

Resources are exposed via a URL that identifies the resource, and actions are performed on the resource depending on the HTTP verb used.

Authentication

All Codego KYC API services are accessible via the following base URL:


https://app.codegokyc.com/api/*

The following security requirements:
To ensure secure access, the following measures must be followed:

  • HTTPS Only: All API requests must be made over https. Connections over plain http are not supported.
  • HTTP Basic Authentication: All requests must use HTTP Basic Authentication. Username and Password will be provided by Codego.

Authorization Example

Use the following credentials in your HTTP headers:

Authorization: Basic

Where is the Base64 encoding of:

your_username:your_password

Example
curl --location 'https://app.codegokyc.com/api/*'
--header 'AUTH: xxxxxNDIydzIydTc5aHl4M3gzMml4MGc6MmxubjR1dWFtcXR5cTJwMXZjZTU4aG4xxxxxxx'
--header 'Content-Type: application/json'
--header 'Authorization: Basic xxxxxNDIydzIydTc5aHl4M3gzMml4MGc6MmxubjR1dWFtcXR5cTJwMXZjZTU4aG4xxxxxxx'

Create New Applicant


# Here is a curl example
curl --location 'https://app.codegokyc.com/api/createApplicantapp' \
--header 'AUTH: xxxxxNDIydzIydTc5aHl4M3gzMml4MGc6MmxubjR1dWFtcXR5cTJwMXZjZTU4aG4xxxxxxx' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic xxxxxNDIydzIydTc5aHl4M3gzMml4MGc6MmxubjR1dWFtcXR5cTJwMXZjZTU4aG4xxxxxxx' \
--data-raw '{"fname":"Ranjit","mname":"","lname":"singh","email":"[email protected]","dob":"2025-05-12","applicant_country":"India","country_birth":"India","state_birth":"","place_birth":"","gender":"M","nationality":"indian","address":"214 danube tower, dubai UAE","city":"dubai","postcode":"","state":"","street":"Al ASYAEL","buildingName":"duba tower","flatNumber":"214","buildingNumber":"","country":"India"}'
                

This will create a new applicant and returns a unique id or a link depending upon the settings. Response will be used in further API's:
https://app.codegokyc.com/api/createApplicant



Response :
{
 "status":"200",
 "unique_id":"74318j24-8bcfl5mb-29uuxcps",
 "message":"A new user has been created. A confirmation email has been sent to the user."

}

            

QUERY PARAMETERS

Field Type Description Required
fname String Applicant first Name Yes
mname String Applicant middle Name optioanl
lname String Applicant last Name Yes
email String Applicant email address Yes
dob String Applicant date of birth Yes
applicant_country String Applicant Country. Yes
country_birth String Birth Country of the applicant Optional
state_birth String Birth State of the applicant Optional
place_birth String Place of Birth of the applicant Optional
gender ENUM ('M','F') M or F (M- Male,F- Female) Yes
nationality String Applicant Nationality of the applicant Optional
address String Complete residence address Yes
city String Residence City of the applicant Yes
postcode String Residence Postal Code of the applicant. If country not postal code then pass n/a Yes
state String Residence State Name of the applicant Optional
street String Residence street of the applicant Optional
buildingName String Residence Building name of the applicant Optional
flatNumber String Residence Flat Number of the applicant Optional
buildingNumber String Residence Building Number of the applicant Optional
country String Residence Country name of the applicant Yes

Check Applicatant Status


# Here is a curl example
curl --location 'https://app.codegokyc.com/api/getApplicant' \
--header 'AUTH: NDIydzIydTc5a' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic NDIydzIydTc5a' \
--data '{"unique_id":"g99dc6jo-5r2zubjb"}'
                

With this API, you can check the current KYC status of the applicant.
https://app.codegokyc.com/api/checkApplication



Response :{
    "status": 200,
    "data": {
        "fname": "Ranjit",
        "mname": "",
        "lname": "singh",
        "dob": "1989-02-01",
        "country_birth": "India",
        "state_birth": "punjab",
        "place_birth": "Sirhind",
        "gender": "",
        "nationality": "Indian",
        "address": {
            "country": "United Arab Emirates",
            "city": "Dubai",
            "postcode": "n/a",
            "street": "Al Asayel St",
            "state": null,
            "buildingName": "Glamz By Danube Tower 2",
            "flatNumber": "214",
            "buildingNumber": null
        },
        "status": {
            "id_proof_status": "Verifed",
            "address_proof_status": "Verifed",
            "liveness_status": "Match",
            "pep_status": "Not Found",
            "sanction_status": "Not Found",
            "crimelist_status": "Not Found",
            "adverse_media_status": "Not Found"
        },
        "kyc_status": "Verifed",
        "device_detail": {
            "deviceInfo": {
                "isPhysicalDevice": true,
                "isiOSAppOnMac": false,
                "utsname": {
                    "release": "24.5.0",
                    "sysname": "Darwin",
                    "nodename": "localhost",
                    "machine": "iPhone13,1",
                    "version": "Darwin Kernel Version 24.5.0: Tue Apr 22 20:38:34 PDT 2025; root:xnu-11417.122.4~1/RELEASE_ARM64_T8101"
                },
                "modelName": "iPhone 12 Mini",
                "localizedModel": "iPhone",
                "totalDiskSize": 255870980096,
                "systemName": "iOS",
                "systemVersion": "18.5",
                "identifierForVendor": "2D57B0F2-9238-4201-9BD0-5909992D4432",
                "physicalRamSize": 3700,
                "freeDiskSize": 175579783168,
                "availableRamSize": 210,
                "model": "iPhone",
                "name": "iPhone"
            },
            "battery": {
                "level": 70,
                "status": "BatteryState.discharging"
            },
            "biometrics": {
                "supported": true,
                "hasFace": true,
                "hasFingerprint": false
            },
            "location": {
                "latitude": 25.188007028419094,
                "longitude": 55.266563262728695,
                "accuracy": 31.580780929730615,
                "altitude": 5.588271227006956,
                "speed": 0,
                "speedAccuracy": 0,
                "heading": -1,
                "timestamp": "2025-07-03T11:46:23.938Z"
            },
            "network": {
                "connectionType": "ConnectivityResult.wifi",
                "wifiName": null
            },
            "publicIP": {
                "ipv4": "127.0.0.1",
                "ipv6": "127.0.0.1"
            },
            "vpnStatus": {
                "isVPNActive": false,
                "localIP": "10.10.29.15",
                "hasInternet": true,
                "connectionType": "ConnectivityResult.wifi"
            },
            "carrierInfo": {
                "carrierName": "--",
                "countryCode": "65535",
                "mobileCountryCode": "65535",
                "mobileNetworkCode": "65535"
            }
        },
        "adverse_media_match_data": {
            "match": {
                "adverse_media_match": {
                    "count": 10,
                    "query": {
                        "first_name": "Ranjit",
                        "last_name": "singh",
                        "limit": 25,
                        "filter": false
                    },
                    "results": [
                        {
                            "url": "https://indianexpress.com/article/cities/chandigarh/nia-chargesheet-punjab-police-grenade-attack-khalistan-zindabad-force-10068253/",
                            "title": "NIA chargesheets 3 in Punjab police post grenade attack, links it to Khalistan Zindabad Force",
                            "snippet": "The NIA has initiated proceedings against KZF chief Ranjit Singh alias Neeta and a few others.",
                            "source": "gnews"
                        },
                        {
                            "url": "https://theprint.in/opinion/security-code/darul-uloom-bombing-shows-the-jihadist-war-is-eating-its-own/2523139/",
                            "title": "Darul Uloom bombing shows the jihadist war is eating its own",
                            "snippet": "A suicide bombing ripped through Pakistan’s Darul Uloom Haqqania seminary last week. It would soon celebrate 200 years of Sayyid Ahmad’s triumph over Maharaja Ranjit Singh’s army.",
                            "source": "gnews"
                        },
                        {
                            "url": "https://www.news18.com/india/sc-seeks-gurmeet-ram-rahims-response-on-cbi-plea-challenging-his-acquittal-in-2002-murder-case-9176164.html",
                            "title": "SC Seeks Gurmeet Ram Rahim's Response On CBI Plea Challenging His Acquittal In 2002 Murder Case",
                            "snippet": "Ram Rahim was found guilty by a special CBI court in 2021 for the murder of former Dera Sacha Sauda manager Ranjit Singh, before being acquitted by the Punjab and Haryana High Court.",
                            "source": "gnews"
                        },
                        {
                            "url": "https://indianexpress.com/article/cities/chandigarh/eight-boys-mohali-govt-academy-commissioned-army-iaf-9725501/",
                            "title": "Eight boys from Mohali govt academy commissioned into Army, IAF",
                            "snippet": "All of them are alumni of the Maharaja Ranjit Singh Armed Forces Preparatory Institute (MRSAFPI)",
                            "source": "gnews"
                        },
                        {
                            "url": "https://indianexpress.com/article/opinion/columns/a-19th-century-inquisition-by-the-akal-takht-featuring-a-king-and-a-courtesan-9712337/",
                            "title": "A 19th century inquisition by the Akal Takht, featuring a king and a courtesan",
                            "snippet": "Enraged over Ranjit Singh's marriage to a Muslim courtesan, the Akal Takht is said to have summoned him and sentenced him to 50 public whiplashes",
                            "source": "gnews"
                        }
                    ]
                }
            }
        },
        "pep_sanction_crime_data": {
            "summary": {
                "pep_sanction_crime_summary": {
                    "status": 2,
                    "name": "Kangujam Ranjit Singh",
                    "topics": [
                        "role.pep"
                    ],
                    "matched_field": "name",
                    "matched_value": "Kangujam Ranjit Singh",
                    "score": 0.75,
                    "name_literal_match": 0,
                    "is_pep": 2,
                    "is_sanction": 0,
                    "is_crime": 0
                }
            },
            "match": {
                "pep_sanction_crime_match": {
                    "responses": {
                        "q0": {
                            "status": 200,
                            "results": [
                                {
                                    "id": "in-nse-deb-634fe5f9984b99c7d922d730994cb27fb9c0bc8c",
                                    "caption": "Ranjit Singh Rana",
                                    "schema": "LegalEntity",
                                    "properties": {
                                        "taxNumber": [
                                            "ADXPS5464N"
                                        ],
                                        "topics": [
                                            "debarment"
                                        ],
                                        "name": [
                                            "Ranjit Singh Rana"
                                        ],
                                        "jurisdiction": [
                                            "in"
                                        ]
                                    },
                                    "datasets": [
                                        "in_nse_debarred"
                                    ],
                                    "referents": [],
                                    "target": true,
                                    "first_seen": "2024-08-28T11:11:01",
                                    "last_seen": "2025-07-02T11:11:32",
                                    "last_change": "2024-09-03T11:11:05",
                                    "score": 0.9,
                                    "features": {
                                        "person_name_jaro_winkler": 1,
                                        "person_name_phonetic_match": 1
                                    },
                                    "match": true,
                                    "token": null
                                },{
                                    "id": "Q126896793",
                                    "caption": "Kangujam Ranjit Singh",
                                    "schema": "Person",
                                    "properties": {
                                        "topics": [
                                            "role.pep"
                                        ],
                                        "notes": [
                                            "Indian politician"
                                        ],
                                        "wikidataId": [
                                            "Q126896793"
                                        ],
                                        "name": [
                                            "Kangujam Ranjit Singh"
                                        ],
                                        "birthDate": [
                                            "1962"
                                        ],
                                        "gender": [
                                            "male"
                                        ],
                                        "citizenship": [
                                            "in"
                                        ]
                                    },
                                    "datasets": [
                                        "wd_categories",
                                        "wikidata"
                                    ],
                                    "referents": [],
                                    "target": true,
                                    "first_seen": "2024-09-04T09:26:39",
                                    "last_seen": "2025-07-02T00:55:38",
                                    "last_change": "2025-03-22T22:12:02",
                                    "score": 0.75,
                                    "features": {
                                        "person_name_jaro_winkler": 1,
                                        "person_name_phonetic_match": 1,
                                        "dob_year_disjoint": 1
                                    },
                                    "match": true,
                                    "token": null
                                }
                            ],
                            "total": {
                                "value": 16,
                                "relation": "eq"
                            },
                            "query": {
                                "id": null,
                                "schema": "Person",
                                "properties": {
                                    "name": [
                                        "Ranjit singh"
                                    ],
                                    "birthDate": [
                                        "1989-02-01"
                                    ],
                                    "nationality": [
                                        "in"
                                    ]
                                }
                            }
                        }
                    },
                    "matcher": {
                        "name_literal_match": {
                            "description": "Two entities have the same name, without normalization applied to the name.",
                            "coefficient": 1,
                            "url": "https://github.com/opensanctions/nomenklatura/blob/3.17.3/nomenklatura/matching/compare/names.py#L116"
                        },
                        "person_name_jaro_winkler": {
                            "description": "Compare two persons' names using the Jaro-Winkler string similarity algorithm.",
                            "coefficient": 0.8,
                            "url": "https://github.com/opensanctions/nomenklatura/blob/3.17.3/nomenklatura/matching/compare/names.py#L54"
                        },
                        "person_name_phonetic_match": {
                            "description": "Two persons have similar names, using a phonetic algorithm.",
                            "coefficient": 0.9,
                            "url": "https://github.com/opensanctions/nomenklatura/blob/3.17.3/nomenklatura/matching/compare/phonetic.py#L88"
                        },
                        "name_fingerprint_levenshtein": {
                            "description": "Two non-person entities have similar fingerprinted names. This includes\n    simplifying entity type names (e.g. \"Limited\" -> \"Ltd\") and uses the\n    Damerau-Levensthein string distance algorithm.",
                            "coefficient": 0.9,
                            "url": "https://github.com/opensanctions/nomenklatura/blob/3.17.3/nomenklatura/matching/compare/names.py#L71"
                        },
                        "name_metaphone_match": {
                            "description": "Two entities (person and non-person) have similar names, using the metaphone\n    algorithm.",
                            "coefficient": 0,
                            "url": "https://github.com/opensanctions/nomenklatura/blob/3.17.3/nomenklatura/matching/compare/phonetic.py#L118"
                        },
                        "name_soundex_match": {
                            "description": "Two entities (person and non-person) have similar names, using the soundex\n    algorithm.",
                            "coefficient": 0,
                            "url": "https://github.com/opensanctions/nomenklatura/blob/3.17.3/nomenklatura/matching/compare/phonetic.py#L134"
                        },
                        "address_entity_match": {
                            "description": "Two address entities relate to similar addresses.",
                            "coefficient": 0.98,
                            "url": "https://github.com/opensanctions/nomenklatura/blob/3.17.3/nomenklatura/matching/compare/addresses.py#L18"
                        },
                        "crypto_wallet_address": {
                            "description": "Two cryptocurrency wallets have the same public key.",
                            "coefficient": 0.98,
                            "url": "https://github.com/opensanctions/nomenklatura/blob/3.17.3/nomenklatura/matching/compare/identifiers.py#L78"
                        },
                        "isin_security_match": {
                            "description": "Two securities have the same ISIN.",
                            "coefficient": 0.98,
                            "url": "https://github.com/opensanctions/nomenklatura/blob/3.17.3/nomenklatura/matching/compare/identifiers.py#L63"
                        },
                        "lei_code_match": {
                            "description": "Two entities have the same Legal Entity Identifier.",
                            "coefficient": 0.95,
                            "url": "https://github.com/opensanctions/nomenklatura/blob/3.17.3/nomenklatura/matching/compare/identifiers.py#L43"
                        },
                        "ogrn_code_match": {
                            "description": "Two entities have the same Russian company registration (OGRN) code.",
                            "coefficient": 0.95,
                            "url": "https://github.com/opensanctions/nomenklatura/blob/3.17.3/nomenklatura/matching/compare/identifiers.py#L53"
                        },
                        "vessel_imo_mmsi_match": {
                            "description": "Two vessels have the same IMO or MMSI identifier.",
                            "coefficient": 0.95,
                            "url": "https://github.com/opensanctions/nomenklatura/blob/3.17.3/nomenklatura/matching/compare/identifiers.py#L70"
                        },
                        "inn_code_match": {
                            "description": "Two entities have the same Russian tax identifier (INN).",
                            "coefficient": 0.95,
                            "url": "https://github.com/opensanctions/nomenklatura/blob/3.17.3/nomenklatura/matching/compare/identifiers.py#L58"
                        },
                        "bic_code_match": {
                            "description": "Two entities have the same SWIFT BIC.",
                            "coefficient": 0.95,
                            "url": "https://github.com/opensanctions/nomenklatura/blob/3.17.3/nomenklatura/matching/compare/identifiers.py#L48"
                        },
                        "identifier_match": {
                            "description": "Two entities have the same tax or registration identifier.",
                            "coefficient": 0.85,
                            "url": "https://github.com/opensanctions/nomenklatura/blob/3.17.3/nomenklatura/matching/compare/identifiers.py#L105"
                        },
                        "weak_alias_match": {
                            "description": "The query name is exactly the same as a result's weak alias.",
                            "coefficient": 0.8,
                            "url": "https://github.com/opensanctions/nomenklatura/blob/3.17.3/nomenklatura/matching/compare/names.py#L135"
                        },
                        "country_mismatch": {
                            "description": "Both entities are linked to different countries.",
                            "coefficient": -0.2,
                            "url": "https://github.com/opensanctions/nomenklatura/blob/3.17.3/nomenklatura/matching/compare/countries.py#L8"
                        },
                        "last_name_mismatch": {
                            "description": "The two persons have different last names.",
                            "coefficient": -0.2,
                            "url": "https://github.com/opensanctions/nomenklatura/blob/3.17.3/nomenklatura/matching/compare/names.py#L124"
                        },
                        "dob_year_disjoint": {
                            "description": "The birth date of the two entities is not the same.",
                            "coefficient": -0.15,
                            "url": "https://github.com/opensanctions/nomenklatura/blob/3.17.3/nomenklatura/matching/compare/dates.py#L65"
                        },
                        "dob_day_disjoint": {
                            "description": "The birth date of the two entities is not the same.",
                            "coefficient": -0.2,
                            "url": "https://github.com/opensanctions/nomenklatura/blob/3.17.3/nomenklatura/matching/compare/dates.py#L48"
                        },
                        "gender_mismatch": {
                            "description": "Both entities have a different gender associated with them.",
                            "coefficient": -0.2,
                            "url": "https://github.com/opensanctions/nomenklatura/blob/3.17.3/nomenklatura/matching/compare/gender.py#L7"
                        },
                        "orgid_disjoint": {
                            "description": "Two companies or organizations have different tax identifiers or registration\n    numbers.",
                            "coefficient": -0.2,
                            "url": "https://github.com/opensanctions/nomenklatura/blob/3.17.3/nomenklatura/matching/compare/identifiers.py#L89"
                        },
                        "numbers_mismatch": {
                            "description": "Find numbers in names and addresses and penalise different numbers.",
                            "coefficient": -0.1,
                            "url": "https://github.com/opensanctions/nomenklatura/blob/3.17.3/nomenklatura/matching/compare/multi.py#L8"
                        }
                    },
                    "limit": 10
                }
            }
        }
    }
}

            

QUERY PARAMETERS

Field Type Description
unique_id String With unique_id key, you can retrieve the applicant's status and other related data.

API: getApplicant

The getApplicant API retrieves detailed information about an applicant, including their personal data and the current status of their application.

Included in the Response:

  • Device Details: Information about the applicant's mobile device. The structure may vary depending on the device type (e.g., OS, model, version).
  • Current Location: Real-time geographic coordinates (latitude and longitude) of the device.

Additional Data (Based on Plan):

  • Adverse Media Matches: Flags if the applicant appears in negative news or media.
  • PEP Status: Indicates if the applicant is a Politically Exposed Person.
  • Sanction List Matches: Checks against international and local sanction lists.
  • Criminal Record: Includes data related to known crimes or offenses.

Applicant Status (kyc_status)

The kyc_status field indicates the current KYC (Know Your Customer) status of an applicant. The possible status values and their meanings are:

  • Pending: The applicant has been created, but no documents have been submitted yet.
  • Submitted: The applicant has submitted the required documents. The compliance team will review and respond accordingly.
  • Verified: The applicant's KYC has been successfully verified and approved by the compliance team.
  • Rejected: The KYC application has been rejected by the compliance team, and a notification is sent to the applicant with the reason for rejection.
  • Under-Review: The application is under manual review by compliance, often triggered if the applicant is flagged in PEP or sanction lists.
  • Partially-Verified: Some documents have been verified while others were rejected. The applicant must re-upload rejected documents for further review.

Additional Status Fields

The following status fields provide detailed insight into the verification process of individual checks performed during the KYC process:

  • ID Proof Status: Indicates the status of the applicant's identity proof document.
    • Pending: Document has not been reviewed yet.
    • Rejected: Document was reviewed and found invalid or unacceptable.
    • Verified: Document has been successfully validated.
  • Address Proof Status: Indicates the status of the address proof document.
    • Pending: Document has not been reviewed yet.
    • Rejected: Document was reviewed and found invalid or unacceptable.
    • Verified: Document has been successfully validated.
  • Liveness Status: Shows the result of the liveness check (to confirm the applicant is a real, live person).
    • Match: Liveness check passed successfully.
    • Not Match: Liveness check failed — possibly due to a mismatch or spoof attempt.
  • Found In PEP List: Indicates whether the applicant appears in any PEP (Politically Exposed Person) databases.
    • Found: Applicant is listed as a PEP.
    • Not Found: No PEP listing found for the applicant.
  • Found In Sanction List: Reflects whether the applicant is found on any international or national sanction lists.
    • Found: Applicant appears on a sanction list.
    • Not Found: No matches found in sanction databases.
  • Found In Crime List: Indicates whether the applicant has been matched with any criminal records.
    • Found: Applicant is linked to known criminal records.
    • Not Found: No criminal records associated with the applicant.
  • Found In Adverse Media List: Shows if the applicant has been flagged in any adverse media or news sources.
    • Found: Negative media coverage or mentions have been identified.
    • Not Found: No negative media records found.

Resend KYC Request for Renewal


# Here is a curl example
curl --location 'https://app.codegokyc.com/api/requestDoc' \
--header 'AUTH: NDIydzIydTc5a' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic NDIydzIydTc5a' \
--data '{"unique_id":"g99dc6jo-5r2zubjb","document_type":"ID","desc":"Please upload new address proof again."}'
                


https://app.codegokyc.com/api/resendApplication



Response :
{"status":200,"link":"","message":"Document requested has been sent to user.","ios":"https:\/\/www.apple.com\/app-store","android":"https:\/\/play.google.com\/store\/apps","request_id":"sacfsdacds"}

                

QUERY PARAMETERS

Field Type Description
unique_id String With unique_id key, you can retrieve the applicant's status and other related data.
document_type ENUM ID, ADDRESS , LIVENESS
desc String It is optional — if you wish to send a note to the customer, you may include a custom message.

Send Request For Additional Document


# Here is a curl example
curl --location 'https://app.codegokyc.com/api/requestAdditiondoc' \
--header 'AUTH: NDIydzIydTc5a' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic NDIydzIydTc5a' \
--data '{"unique_id":"g99dc6jo-5r2zubjb","document_type":"Source of Income","desc":"Please upload source of income document."}'
                

https://app.codegokyc.com/api/requestAdditiondoc



{"status":200,"link":"","message":"Additional document requested has been sent to
user.","ios":"https:\/\/www.apple.com\/app-store","android":"https:\/\/play.google.com\/store\/apps","request_id":"sacfsdacds"}

                

QUERY PARAMETERS

Field Type Description
unique_id String With unique_id key, you can retrieve the applicant's status and other related data.
document_type String You can request any type of document from the customer based on your requirements.
desc String It is optional — if you wish to send a note to the customer, you may include a custom message.

Additional Document Request API

This API allows you to request additional documents from the customer, based on your specific compliance or operational requirements.

Examples of Documents You Can Request:

  • Source of Income
  • Bank Account Certificate
  • Utility Bill
  • Proof of Employment
  • Business License (for business users)

You can define the type of document required and optionally include a note or instruction to guide the customer during the submission process.

Get Applicantion History


# Here is a curl example
curl --location 'https://app.codegokyc.com/api/sendpushnotification' \
--header 'AUTH: NDIydzIydTc5a' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic NDIydzIydTc5a' \
--data '{"request_id":"requestid-g99dc6jo-5r2zubjb","type":"trx","category":"trx_bio_confirmation","title":"Transaction Confirmation","message":"Please confirm transaction sending 60.00 EUR To Ranjit","unique_id":"g99dc6jo-5r2zubjb"}
'
                

https://app.codegokyc.com/api/sendpushnotification



Response :
{"status":200,"message":"Notification sent to user."}

                

QUERY PARAMETERS

Field Type Manadatory Description
unique_id String Yes With unique_id key, you can retrieve the applicant's status and other related data.
type EUM Yes trx or login
category EUM Yes trx_bio_confirmation or trx_confirmation or login_bio_confirmation or login_confirmation
request_id String Yes The "request_id" is generated on your side. When we send the user's response to your webhook URL, we also include the "request_id", which you can use to update the status on your end

Confirmation Types

type: trx – Used for transaction confirmation.

type: login – Used for login confirmation.

  • trx_bio_confirmation

    Confirms a transaction using push notification with biometric verification (face match required).

  • trx_confirmation

    Confirms a transaction using push notification only, without biometric verification.

  • login_bio_confirmation

    Confirms a login using push notification with biometric verification (face match required).

  • login_confirmation

    Confirms a login using push notification only, without biometric verification.

Get Applicantion History


# Here is a curl example
curl --location 'https://app.codegokyc.com/api/requestForLocationandDevice' \
--header 'AUTH: NDIydzIydTc5aHl4M3gzMml4MGc6MmxubjR1dWFtcXR5cTJwMXZjZTU4aG40eDkxeDFpODZ1ODI5dmE1ejIwZXBr' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic NDIydzIydTc5aHl4M3gzMml4MGc6MmxubjR1dWFtcXR5cTJwMXZjZTU4aG40eDkxeDFpODZ1ODI5dmE1ejIwZXBr' \
--data '{"request_id":"request-20250701","applicant_id":"g99dc6jo-5r2zubjb-b759et36","type":"device"}
'
                

https://app.codegokyc.com/api/requestForLocationandDevice



Response :
{"status":200,"message":"Request sent you will get in webhook"}

                

QUERY PARAMETERS

Field Type Manadatory Description
unique_id String Yes With unique_id key, you can retrieve the applicant's status and other related data.
request_id String Yes Send the request_id that you used when calling the create notification API.

Transaction Confirmation Response

status: 200 — Indicates the request was successful.

data

  • type: trx_confirmation — Type of confirmation (transaction confirmation without biometric).
  • title: Transaction Confirmation — Title of the notification.
  • body: Please confirm transaction sending 50.00 EUR To salvo — Message content shown to the user.
  • image: base64 image if transaction type bio otherwise empty.
  • status: Approved — Current status of the transaction confirmation.
  • ipaddress: 127.0.0.1 — IP address associated with the request.
  • datetime: 2025-07-03 12:02:11 — Timestamp when the confirmation was processed.
  • created: 2025-07-03 12:01:46 — Timestamp when the notification was created.

Get Applicantion History


# Here is a curl example
curl --location 'https://app.codegokyc.com/api/getApplicantNotification' \
--header 'AUTH: NDIydzIydTc5aHl4M3gzMml4MGc6MmxubjR1dWFtcXR5cTJwMXZjZTU4aG40eDkxeDFpODZ1ODI5dmE1ejIwZXBr' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic NDIydzIydTc5aHl4M3gzMml4MGc6MmxubjR1dWFtcXR5cTJwMXZjZTU4aG40eDkxeDFpODZ1ODI5dmE1ejIwZXBr' \
--header 'Cookie: ci_session=0n021k8kth6gqec2app535d9o3h60apb' \
--data '{"unique_id":"x22s4wt5-kpsta1kz","request_id":"23e23vdfe4gf3sdxssadcss"}'
                

https://app.codegokyc.com/api/getApplicantNotification



Response :
{"status":200,"data":{"type":"trx_confirmation","title":"Transaction Confirmation","body":"Please confirm transaction
sending 50.00 EUR To salvo","status":"Approved","image":"data:image\/png;base64,","ipaddress":"127.0.0.1","datetime":"2025-07-03
12:02:11","created":"2025-07-03 12:01:46"}}

                

QUERY PARAMETERS

Field Type Manadatory Description
unique_id String Yes With unique_id key, you can retrieve the applicant's status and other related data.
type EUM Yes device or location
request_id String Yes The "request_id" is generated on your side. When we send the user's response to your webhook URL, we also include the "request_id", which you can use to update the status on your end

You can request the current location or device details using the getApplicantNotification API.

There are two types of requests:

  • type: location – We will send the current location to your webhook.
  • type: device – We will send both the device details and the current location to your webhook.

Get Applicantion History


# Here is a curl example
curl --location 'https://login.codegotech.com/api/getDocuments' \
--header 'AUTH: NDIydzIydTc5a' \
--header 'Content-Type: application/json' \
--header 'Authorization: ••••••' \
--data '{"unique_id":"qu3ogj27-x22s4wt5"}'
                

https://app.codegokyc.com/api/getDocuments



Response :
{
    "status": 200,
    "data": {
        "file": {
            "idProof": {
                "idtype": "Driver License",
                "id_number": "784192713",
                "expire": "2026-09-30",
                "issuance_date": "2024-10-01",
                "id_front_doc": "data:image/png;base64,",
                "id_back_doc": "data:image/png;base64,"
            },
            "addressProof": {
                "address_proof": "data:application/pdf;base64,"
            },
            "profile_image": "data:image/png;base64,"
        }
    }
}

                

QUERY PARAMETERS

Field Type Description
unique_id String With unique_id key, you can retrieve the applicant's status and other related data.

Get Applicantion History


# Here is a curl example
curl --location 'https://app.codegokyc.com/api/getApplicantHistory' \
--header 'AUTH: NDIydzIydTc5a' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic NDIydzIydTc5a' \
--data '{"unique_id":"g99dc6jo-5r2zubjb","request_id":"app-5041-a9x1bs9nx2"}'
                

This will return the status of the KYC submitted:
https://app.codegokyc.com/api/getApplicantHistory



Response :
{
    "status": 200,
    "data": {
        "kyc_type": "ADDITIONAL",
        "ip_address": "127.0.0.1",
        "status": "Verified",
        "modified": "2025-07-03 13:00:32",
        "created": "2025-07-03 13:00:32",
        "doc_title": "Source of Income",
        "doc_desc": "Please upload source of income document.",
        "document": {
            "addtional_doc": ""
        }
    }
}
or
{
    "status": 200,
    "data": {
        "kyc_type": "ID",
        "ip_address": "",
        "status": "Verified",
        "modified": "2025-07-03 13:25:09",
        "created": "2025-07-03 13:25:09",
        "id_type": "ID Proof",
        "document": {
            "id_front_doc": 
		}
    }
}
or
{
    "status": 200,
    "data": {
        "kyc_type": "ADDRESS",
        "ip_address": "127.0.0.1",
        "status": "Verified",
        "modified": "2025-07-03 13:32:45",
        "created": "2025-07-03 13:32:45",
        "document": {
            "address_proof":
		}
    }
}	

                

QUERY PARAMETERS

Field Type Description
unique_id String With unique_id key, you can retrieve the applicant's status and other related data.
request_id String You will receive a request_id when you submit an document request.

Document Request – JSON Response Details

This section describes the fields returned when you make an document request.

  • status: 200
    Indicates the HTTP status code. A value of 200 means the request was successful.
  • kyc_type: ADDITIONAL or ID or ADDRESS OR Liveness
    Specifies that this is an additional KYC request, separate from the main KYC process.
  • ip_address:
    The IP address from which the request was submitted.
  • status: Verified
    The current verification status of the additional document. Possible values include:
    • Pending – The document has not been reviewed yet.
    • Verified – The document has been reviewed and accepted.
    • Rejected – The document was reviewed but not accepted.
  • modified: 2025-07-03 13:00:32
    Timestamp of the most recent update to this document request.
  • created: 2025-07-03 13:00:32
    Timestamp of when the document request was initially created.
  • doc_title: Source of Income
    The title or name of the requested document.
  • doc_desc: Please upload source of income document.
    Description or instruction provided to the applicant regarding the requested document.
  • document.addtional_doc: ""
    This field will contain the uploaded document's file URL or storage reference. If empty, the applicant has not uploaded the document yet.

Webhook for Applicant KYC

For webhook responses you need to provide a link where we can send you data.

Errors

The Westeros API uses the following error codes:

Error Code Meaning Description
200 ok The service is responding correctly. The response body will contain the appropriate response json for the service, as detailed below.
400 400 Bad Request 400 Bad request The supplied data is invalid. The response body will contain a message block with a description of the error
401 Not authorized 401 Not authorized The supplied credentials are not accepted (see authentication below)
404 Could Not found 404 Not found The requested resource does not exist – eg a request to retrieve a non-existent card
500 System error The service is unavailable