# POST Submission(s)

Argos KYC (a.k.a. Know Your Customer) verifies your customer's information with their provided documents. You have options to choose from two different tiers of KYC depending on whether you need to verify the customer's address information.

# KYC Level 1

KYC Level 1 is to verify the customer's ID document and identity using ID verification and face verification. For KYC level 1 verification, you must first upload ID image and Selfie image then include their filehash in submission form data.

# Step 1. Upload ID image

  1. Upload an image with type value of "passport" "drivers_license" or "government_id".

  2. Copy "filehash" value from response object and store it for later use. **This value is required when submitting the form data in Step 3.

Request Type Request URL
POST https://api2.argos-solutions.io/f1/submissions/upload

Request Headers

headers = {
	'x-api-key' : 'your_api_key'
	'Content-Type' : 'multipart/form-data; boundary=<your_file_boundary>'
}

Sample Code

Caution : If you would like to send a cURL POST request to API directly, image files need to be base64-encoded and boundary should be included in the headers. cURL

curl --location --request POST 'https://api2.argos-solutions.io/f1/submissions/upload' \
--header 'x-api-key: <your_api_key_here>' \
--header ‘Content-Type’: 'multipart/form-data; boundary= <file_boundary>’ \
--form 'file=@/<your_file_path_here>' \
--form 'type=passport'

Node.js - Request

var request = require('request');
var fs = require('fs');
var options = {
	'method': 'POST',
	'url': 'api2.argos-solutions.io/f1/submissions/upload',
	'headers': {
		'x-api-key': '<your_api_key_here>'
		'Content-Type': 'multipart/form-data;boundary=<file_boundary>'
	},
	formData: {
		'file': {
			'value': fs.createReadStream('<your_file_path_here>'),
			'options': {
				'filename': '<file_name_here>',
				'contentType': null
			}
		},
		'type': 'passport'
	}
};

request(options, function (error, response) {
	if (error) throw  new  Error(error);
	console.log(response.body);
});

Arguments

Argument Description Required
file The file which needs to be uploaded ( multipart form ) Yes
type Possible document types: passport, drivers_license, government_id, selfie, address, other Yes

"other" value in "type" refers to any additional image to store in Submission object (jpeg, png, pdf).

Response Object

Parameter Description Format
id Document ID text
created_at Created date time ISO8601
filehash The file hash id that has been uploaded to Argos systemWhen you submit the form data, this value used for photoid_res, selfie_res, address_res fields text
filetype Possible document types: &lt;passport, drivers_license, government_id, selfie, address&gt; text

Example

curl -H "x-api-key:hTRgZTc6UR2FLgIh5tKLsyjO89xBsiWG3pz3eYvc" -F "type=passport" -F "file=@localfile.png;type=image/png" https://api2.argos-solutions.io/f1/submissions/upload
SAMPLE RESPONSE
{
	"id": "3um227kbkkdqmu",
	"created_at": "2020-06-18T09:10:44.502Z",
	"filehash": "685vw362ba/passport_3um227kb511qmu",
	"filetype": "passport",
	"fileFormat": "image/jpeg"
}

# Step 2. Upload Selfie image

  1. Repeat Step 1 with type value of "selfie"

  2. Copy "filehash" value from response object and store it for later use.

"filehash" value is required when submitting the form data in Step 3.


# Step 3. Submit KYC formdata

  1. Set "kyc_level" as "L1"

  2. Set "photoid_res" as the filehash value received in Step 1.

  3. Set "selfie_res" as the filehash value received in Step 2.

  4. Fill in other required arguments as described below:

Request Type Request URL
POST https://api2.argos-solutions.io/f1/submissions

Request Headers

headers = {
	'x-api-key' : "your_api_key",
	'Content-Type' : "application/x-www-form-urlencoded"
}

Request Body

{
	'email': 'test@test.me',
	'first_name': 'John',
	'middle_name': 'Avg',
	'last_name': 'Doe',
	'nationality': 'United States, USA',
	'date_of_birth': '1980-10-10',
	'gender': 'male',
	'id_type': 'passport',
	'kyc_level': 'L1',
	'photoid_res': '686v3v91ba/passport_cemt81k51r2k6o',
	'selfie_res': '686v3v91ba/selfie_ceoihsdwe1r234i',
	'userid': '112'
}

Response

SAMPLE RESPONSE
{
	"date_of_birth": "1980-10-10",
	"email": "test@test.me",
	"first_name": "John",
	"gender": "male",
	"id_type": "passport",
	"kyc_level": "L1",
	"last_name": "Joe",
	"middle_name": "Avg",
	"nationality": "United States, USA",
	"photoid_res": "686v3v91ba/passport_cemt81k51r2k6o",
	"selfie_res": "686v3v91ba/passport_ceoihsdwe1r234i",
	"userid": "112",
	"id": "1ettd8kbkkm4om",
	"created_at": "2020-06-18T09:17:16.024Z"
}

Sample Code

cURL

curl --location --request POST 'https://api2.argos-solutions.io/f1/submissions' \
--header 'x-api-key: your_api_key' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'email=test@test.me' \
--data-urlencode 'first_name=John' \
--data-urlencode 'last_name=Joe' \
--data-urlencode 'nationality=United States, USA' \
--data-urlencode 'date_of_birth=1980-10-10' \
--data-urlencode 'gender=male' \
--data-urlencode 'id_type=governmentid' \
--data-urlencode 'kyc_level=L1' \
--data-urlencode 'photoid_res=686v3v91ba/passport_cemt81k51r2k6o' \
--data-urlencode 'selfie_res=686v3v91ba/passport_ceoihsdwe1r234i'

Node.js - Request

var request = require('request');
var options = {
	'method': 'POST',
	'url': 'https://api2.argos-solutions.io/f1/submissions',
	'headers': {
		'x-api-key': 'your_api_key',
		'Content-Type': 'application/x-www-form-urlencoded'
	},
	form: {
		'email': 'test@test.me',
		'first_name': 'John',
		'last_name': 'Joe',
		'nationality': 'United States, USA',
		'date_of_birth': '1980-10-10',
		'gender': 'male',
		'id_type': 'governmentid',
		'kyc_level': 'L1',
		'photoid_res': '686v3v91ba/passport_cemt81k51r2k6o',
		'selfie_res': '686v3v91ba/passport_ceoihsdwe1r234i'
	}
};

request(options, function (error, response) {
	if (error) throw  new  Error(error);
	console.log(response.body);
});

Arguments

Argument Description Required
email Must be a valid email address format YES
first_name First Name YES
middle_name Middle Name NO
last_name Last Name YES
nationality Nationality code in ISO3 or Argos format. YES
date_of_birth (YYYY-MM-DD) format YES
gender Gender &lt;male / female&gt; YES
id_type ID Type &lt;passport, drivers_license, government_id&gt; YES
id_number ID number or passport number NO
kyc_level KYC Level &lt;L1 / L2&gt; YES
photoid_res The hash id from the uploaded id image APIEg. 885vw362ba/passport_3um227kb511qmu YES
selfie_res The hash id from the uploaded selfie image APIEg. 885vw362ba/selfie_3um227skdlfilqmu YES
userid Unique custom ID (String) for each KYC applicant. NO

# KYC Level 2

KYC Level 2 verifies the customer’s address information in addition to KYC Level 1 ID and selfie identity verification. For KYC level 2 verification, you must first upload ID image and Selfie image, and address document image then include their filehash in submission form data along with address information.

# Step 1. Upload ID image

  1. Upload an image with type value of "passport" "drivers_license" or "government_id".

  2. Copy "filehash" value from response object and store it for later use. **This value is required when submitting the form data in Step 4.

Request Type Request URL
POST https://api2.argos-solutions.io/f1/submissions/upload

Request Headers

headers = {
	'x-api-key' : "your_api_key",
	'Content-Type' : 'multipart/form-data; boundary=<file_boundary>'
}

Sample Code

Caution : If you would like to send a cURL POST request to API directly, image files need to be base64-encoded and boundary should be included in the headers.

cURL

curl --location --request POST 'https://api2.argos-solutions.io/f1/submissions/upload' \
--header 'x-api-key: <your_api_key_here>' \
--header ‘Content-Type’: “multipart/form-data; boundary= <file_boundary>’ \
--form 'file=@/<your_file_path_here>' \
--form 'type=passport'

Node.js - Request

var request = require('request');
var fs = require('fs');
var options = {
	'method': 'POST',
	'url': 'api2.argos-solutions.io/f1/submissions/upload',
	'headers': {
		'x-api-key': '<your_api_key_here>',
		'Content-Type': 'multipart/form-data; boundary=<file_boundary>'
	},
	formData: {
		'file': {
			'value': fs.createReadStream('<your_file_path_here>'),
			'options': {
				'filename': '<file_name_here>',
				'contentType': null
			}
		},
		'type': 'passport'
	}
};

request(options, function (error, response) {
	if (error) throw  new  Error(error);
	console.log(response.body);
});

Arguments

Argument Description Required
file The file which needs to be uploaded ( multipart form ) Yes
type Possible document types: passport, drivers_license, government_id, selfie, address, other Yes

"other" value in "type" refers to any additional image to store in Submission object (jpeg, png, pdf).

Response Object

Parameter Description Format
id Document ID text
created_at Created date time ISO8601
filehash The file hash id that has been uploaded to Argos systemWhen you submit the form data, this value used for photoid_res, selfie_res, address_res fields text
filetype Possible document types: &lt;passport, drivers_license, government_id, selfie, address&gt; text

Example curl -H "x-api-key:hTRgZTc6UR2FLgIh5tKLsyjO89xBsiWG3pz3eYvc" -F "type=passport" -F "file=@localfile.png;type=image/png" https://api2.argos-solutions.io/f1/submissions/upload

SAMPLE RESPONSE
{
	"id": "3um227kbkkdqmu",
	"created_at": "2020-06-18T09:10:44.502Z",
	"filehash": "685vw362ba/passport_3um227kb511qmu",
	"filetype": "passport",
	"fileFormat": "image/jpeg"
}

# Step 2. Upload Selfie image

  1. Repeat Step 1 with type value of “selfie”

  2. Copy “filehash” value from response object and store it for later use.

”filehash” value is required when submitting the form data in Step 4.

# Step 3. Upload address document image

  1. Repeat Step 1 with type value of “address”

  2. Copy “filehash” value from response object and store it for later use. **This value is required when submitting the form data in Step 4.

# Step 4. Submit KYC formdata

  1. Set “kyc_level” as “L2”

  2. Set “photoid_res” as the filehash value received in Step 1.

  3. Set “selfie_res” as the filehash value received in Step 2.

  4. Set “address_res” as the file has value received in Step 3.

  5. Fill in other required arguments as described below:

Request Type Request URL
POST https://api2.argos-solutions.io/f1/submissions

Request Headers

headers = {
	'x-api-key' : "your_api_key",
	'Content-Type' : "application/x-www-form-urlencoded"
}

Request Body

Sample Request Body

{
	'email': 'test@test.me',
	'first_name': 'John',
	'middle_name': 'Avg',
	'last_name': 'Doe',
	'nationality': 'United States, USA',
	'date_of_birth': '1980-10-10',
	'gender': 'male',
	'id_type': 'passport',
	'kyc_level': 'L1',
	'photoid_res': '686v3v91ba/passport_cemt81k51r2k6o',
	'selfie_res': '686v3v91ba/selfie_ceoihsdwe1r234i',
	'address_res': '686v3v91ba/address_hrtytyhsdw19c234i',
	'userid': '112',
	'address_street': '5000 Forbes Ave',
	'address_city': 'Pittsburgh',
	'address_state': 'PA',
	'address_zipcode': '15213',
	'address_country': 'United States, USA'
}

Response

SAMPLE RESPONSE
{
	"address_city": "Pittsburgh",
	"address_country": "United States, USA",
	"address_res": "686v3v91ba/address_hrtytyhsdw19c234i",
	"address_state": "PA",
	"address_street": "5000 Forbes Ave",
	"address_zipcode": "15213",
	"date_of_birth": "1980-10-10",
	"email": "test@test.me",
	"first_name": "John",
	"gender": "male",
	"id_type": "passport",
	"kyc_level": "L1",
	"last_name": "Joe",
	"middle_name": "Avg",
	"nationality": "United States, USA",
	"photoid_res": "686v3v91ba/passport_cemt81k51r2k6o",
	"selfie_res": "686v3v91ba/passport_ceoihsdwe1r234i",
	"userid": "112",
	"id": "1ettd8kbkkm4om",
	"created_at": "2020-06-18T09:17:16.024Z"
}

Sample Code cURL

curl --location --request POST 'https://api2.argos-solutions.io/f1/submissions' \
--header 'x-api-key: your_api_key' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'address_street=5000 Forbes Ave' \
--data-urlencode 'address_city=Pittsburgh' \
--data-urlencode 'address_state=PA' \
--data-urlencode 'address_zipcode=15213' \
--data-urlencode 'address_country=United States, USA' \
--data-urlencode 'email=test@test.me' \
--data-urlencode 'first_name=John' \
--data-urlencode 'last_name=Joe' \
--data-urlencode 'nationality=United States, USA' \
--data-urlencode 'date_of_birth=1980-10-10' \
--data-urlencode 'gender=male' \
--data-urlencode 'id_type=governmentid' \
--data-urlencode 'kyc_level=L1' \
--data-urlencode 'photoid_res=686v3v91ba/passport_cemt81k51r2k6o' \
--data-urlencode 'selfie_res=686v3v91ba/passport_ceoihsdwe1r234i' \
--data-urlencode 'address_res=686v3v91ba/address_hrtytyhsdw19c234i'

Node.js - Request

var request = require('request');
var options = {
	'method': 'POST',
	'url': 'https://api2.argos-solutions.io/f1/submissions',
	'headers': {
		'x-api-key': 'your_api_key',
		'Content-Type': 'application/x-www-form-urlencoded'
	},
	form: {
		'email': 'test@test.me',
		'first_name': 'John',
		'last_name': 'Joe',
		'nationality': 'United States, USA',
		'date_of_birth': '1980-10-10',
		'gender': 'male',
		'id_type': 'governmentid',
		'kyc_level': 'L1',
		'photoid_res': '686v3v91ba/passport_cemt81k51r2k6o',
		'selfie_res': '686v3v91ba/passport_ceoihsdwe1r234i',
		'address_res': '686v3v91ba/address_hrtytyhsdw19c234i',
		'address_street': '5000 Forbes Ave',
		'address_city': 'Pittsburgh',
		'address_state': 'PA',
		'address_zipcode': '15213',
		'address_country': 'United States, USA'
	}
};

request(options, function (error, response) {
	if (error) throw  new  Error(error);
	console.log(response.body);
});

# Arguments

Argument Description Required
email Must be a valid email address format YES
first_name First Name YES
middle_name Middle Name NO
last_name Last Name YES
nationality Nationality code in ISO3 or Argos format. YES
date_of_birth (YYYY-MM-DD) format YES
gender Gender (male/female) YES
id_type ID Type (passport / government_id) YES
id_number ID number or passport number NO
kyc_level KYC Level (L1 / L2) YES
photoid_res The hash id from the uploaded id image API
ex) 885vw362ba/passport_3um227kb511qmu
YES
selfie_res The hash id from the uploaded selfie image API
ex) 885vw362ba/selfie_3um227skdlfilqmu
YES
userid Unique ID (String) for each KYC applicant. NO
address_street Address - Street YES
address_city Address - City YES
address_state Address - State YES
address_zipcode Address - Zip(postal) Code YES
address_country Address - Country YES
address_res The hash id from the uploaded proof of residence image API
ex) shz28vkee7/address_4e2koq1jn04vtms
YES

# Additional Arguments (Optional)

In case you want to pass in additional information when submitting the KYC, you can use below arguments. Any other unrecognized arguments will be ignored.

# Arguments

Argument Description
userid Unique ID for each KYC applicant.
id_number Unique ID number issued on Photo ID (ex. Passport number)
contribution_type Currency type (ex. USD, KRW, BTC, ETH…)
estimated_amount Estimated investment amount
wallet_address Cryptocurrency wallet address.If a wallet address is submitted, the wallet address is checked against the cryptocurrency blacklist for Crypto AML Screening.
wallet_address1 Additional wallet address for Crypto AML Screening.
wallet_address2 Additional wallet address for Crypto AML Screening.
wallet_address3 Additional wallet address for Crypto AML Screening.
image_res1 Any additional image to store in Submission object (jpeg, png, pdf). Enter "other" for type when uploading image.
image_res2 Any additional image to store in Submission object (jpeg, png, pdf) Enter "other" for type when uploading image.
image_res3 Any additional image to store in Submission object (jpeg, png, pdf) Enter "other" for type when uploading image.
image_res4 Any additional image to store in Submission object (jpeg, png, pdf) Enter "other" for type when uploading image.
cf1 Any additional information to store in Submission object (String)
cf2 Any additional information to store in Submission object (String)
cf3 Any additional information to store in Submission object (String)
ip_address IP Address V4 format (ex. 123.123.123.123).
This IP address is used to find the IP location of the user.