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
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 |
| 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 of200means 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 |