Video KYC without OCR
In verification requests without OCR, Shufti Pro's clients define the parameters to be verified. Shufti Pro utilizes a unique template matching technique to match these values with the data on identity documents. Subsequently, Shufti Pro's advanced algorithms rigorously verify the provided documents for authenticity.
- Http
- Javascript
- PHP
- Python
- Ruby
- Java
- cURL
- C#
- Go
//POST /service/real_time/verification HTTP/1.1
//Host: api.shuftipro.com
//Content-Type: application/json
//Authorization: Basic NmI4NmIyNzNmZjM0ZmNlMTlkNmI4WJRTUxINTJHUw==
//replace "Basic" with "Bearer in case of Access Token"
{
"reference" : "5667456341",
"callback_url" : "http://www.example.com/",
"email" : "[email protected]",
"country" : "GB",
"language" : "EN",
"face": "",
"document" : {
"supported_types" : ["id_card","driving_license","passport"],
"name" : {
"first_name" : "John",
"middle_name" : "Middleman",
"last_name" : "Doe"
},
"dob" : "1980-11-12",
"age" : 18,
"issue_date" : "1990-09-07",
"expiry_date" : "2050-10-10",
"document_number" : "0989-7752-6291-2387",
"gender" : "M"
},
"address" : {
"supported_types" : ["id_card","bank_statement"],
"name" : {
"first_name" : "John",
"middle_name" : "Middleman",
"last_name" : "Doe"
},
"full_address" : "3339 Maryland Avenue, Largo, Florida",
"address_fuzzy_match":"1",
"issue_date" : "1990-09-07"
},
"consent":{
"supported_types" : ["handwritten","printed"],
"text" : "My name is John Doe and I authorise this transaction of $100/- Date: July 15, 2020"
},
"phone": {
"phone_number" : "+4400000000",
"random_code" : "23234",
"text" : "Your verification code is 23234"
},
"background_checks": {
"name" : {
"first_name" : "John",
"middle_name" : "Middleman",
"last_name" : "Doe"
},
"dob" : "1980-11-12"
}
}
let payload = {
reference : `SP_REQUEST_${Math.random()}`,
callback_url : "https://yourdomain.com/profile/sp-notify-callback",
redirect_url : "https://yourdomain.com/site/sp-redirect",
country : "GB",
language : "EN"
}
//Use this key if you want to perform face verification
payload['face'] = {};
//Use this key if you want to perform document verification
payload['document'] = {
name : {
first_name : 'Your first name',
middle_name : 'Your middle name',
last_name : 'You last name',
fuzzy_match : '1'
},
dob : '1992-10-10',
age : 18,
document_number : '2323-5629-5465-9990',
expiry_date : '2025-10-10',
issue_date : '2015-10-10',
supported_types : ['id_card','passport'],
gender : 'M'
}
//Use this key if you want to perform address verification
payload['address'] = {
name : {
first_name : 'Your first name',
middle_name : 'Your middle name',
last_name : 'You last name',
fuzzy_match : '1'
},
full_address : 'your address',
address_fuzzy_match : '1',
issue_date : '2015-10-10',
supported_types : ['utility_bill','passport','bank_statement']
}
//Use this key if you want to perform background checks verification
payload['background_checks'] = {
name : {
first_name : 'Your first name',
middle_name : 'Your middle name',
last_name : 'You last name',
},
dob : '1994-01-01',
}
//Use your Shufti Pro account client id and secret key
var token = btoa("YOUR_CLIENT_ID:YOUR_SECRET_KEY"); //BASIC AUTH TOKEN
// if Access Token
//var token = "YOUR_ACCESS_TOKEN";
//Dispatch request via fetch API or with whatever else which best suits for you
fetch('https://api.shuftipro.com/service/real_time/verification',
{
method : 'post',
headers : {
'Accept' : 'application/json',
'Content-Type' : 'application/json',
'Authorization' : 'Basic ' +token // if access token then replace "Basic" with "Bearer"
},
body: JSON.stringify(payload)
})
.then(function(response) {
return response.json();
}).then(function(data) {
if (data.event && data.event === 'request.pending') {
createIframe(data.verification_url)
}
});
//Method used to create an Iframe
function createIframe(src) {
let iframe = document.createElement('iframe');
iframe.style.position = 'fixed';
iframe.id = 'shuftipro-iframe';
iframe.name = 'shuftipro-iframe';
iframe.allow = "camera";
iframe.src = src;
iframe.style.top = 0;
iframe.style.left = 0;
iframe.style.bottom = 0;
iframe.style.right = 0;
iframe.style.margin = 0;
iframe.style.padding = 0;
iframe.style.overflow = 'hidden';
iframe.style.border = "none";
iframe.style.zIndex = "2147483647";
iframe.width = "100%";
iframe.height = "100%";
iframe.dataset.removable = true;
document.body.appendChild(iframe);
}
<?php
$url = 'https://api.shuftipro.com/service/real_time/verification';
//Your Shufti Pro account Client ID
$client_id = 'YOUR-CLIENT-ID';
//Your Shufti Pro account Secret Key
$secret_key = 'YOUR-SECRET-KEY';
//OR Access Token
//$access_token = 'YOUR-ACCESS-TOKEN';
$verification_request = [
'reference' => 'ref-'.rand(4,444).rand(4,444),
'country' => 'GB',
'language' => 'EN',
'email' => '[email protected]',
'callback_url' => 'https://yourdomain.com/profile/notifyCallback',
];
//Use this key if you want to perform face verification
$verification_request['face'] = "";
//Use this key if you want to perform document verification
$verification_request['document'] =[
'name' => [
'first_name' => 'Your first name',
'middle_name' => 'Your middle name',
'last_name' => 'You last name',
'fuzzy_match' => '1'
],
'dob' => '1992-10-10',
'age' => 18,
'document_number' => '2323-5629-5465-9990',
'expiry_date' => '2025-10-10',
'issue_date' => '2015-10-10',
'supported_types' => ['id_card','passport'],
'gender' => 'M'
];
//Use this key if you want to perform address verification
$verification_request['address'] = [
'name' => [
'first_name' => 'Your first name',
'middle_name' => 'Your middle name',
'last_name' => 'You last name',
'fuzzy_match' => '1'
],
'full_address' => 'your address',
'address_fuzzy_match' => '1',
'issue_date' => '2015-10-10',
'supported_types' => ['utility_bill','passport','bank_statement']
];
//Use this key if you want to perform consent verification
$verification_request['consent'] =[
'text' => 'some text for consent verification',
'supported_types' => ['handwritten']
];
//Use this key if you want to perform phone verification
$verification_request['phone'] =[
'phone_number' => '+1378746734',
'random_code' => '9977',
'text' => 'Your verification code is 9977'
];
//Use this key if you want to perform aml/background checks verification
$verification_request['background_checks'] = [
'name' => [
'first_name' => 'Your first name',
'middle_name' => 'Your middle name',
'last_name' => 'You last name'
],
'dob' => '1992-10-10',
];
$auth = $client_id.":".$secret_key; // remove this in case of Access Token
$headers = ['Content-Type: application/json'];
// if using Access Token then add it into headers as mentioned below otherwise remove access token
// array_push($headers, 'Authorization : Bearer ' . $access_token);
$post_data = json_encode($verification_request);
//Calling Shufti Pro request API using curl
$response = send_curl($url, $post_data, $headers, $auth); // remove $auth in case of Access Token
//Get Shufti Pro API Response
$response_data = $response['body'];
//Get Shufti Pro Signature
$exploded = explode("\n", $response['headers']);
// Get Signature Key from Hearders
$sp_signature = null;
foreach ($exploded as $key => $value) {
if (strpos($value, 'signature: ') !== false || strpos($value, 'Signature: ') !== false) {
$sp_signature=trim(explode(':', $exploded[$key])[1]);
break;
}
}
// Calculating signature for verification
// Clients registered with Shufti Pro after March 15, 2023, must use secret key as follows
// $secret_key = hash('sha256', $secret_key)
// Calculated signature functionality cannot be implement in case of access token
$calculate_signature = hash('sha256',$response_data.$secret_key);
$decoded_response = json_decode($response_data,true);
$event_name = $decoded_response['event'];
if($event_name == 'request.pending'){
if($sp_signature == $calculate_signature){
$verification_url = $decoded_response['verification_url'];
echo "Verification url :" . $verification_url;
}else{
echo "Invalid signature :" . $response_data;
}
}else{
echo "Error :" . $response_data;
}
function send_curl($url, $post_data, $headers, $auth){ // remove $auth in case of Access Token
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_USERPWD, $auth); // remove this in case of Access Token
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); // remove this in case of Access Token
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$html_response = curl_exec($ch);
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$headers = substr($html_response, 0, $header_size);
$body = substr($html_response, $header_size);
curl_close($ch);
return ['headers' => $headers,'body' => $body];
}
?>
import requests, base64, json, hashlib
from random import randint
'''
Python 2
--------
import urllib2
Python 3
--------
import urllib.request
urllib.request.urlopen(url).read()
'''
url = 'https://api.shuftipro.com/service/real_time/verification'
callback_url = 'https://yourdomain.com/profile/notifyCallback'
# Your Shufti Pro account Client ID
client_id = 'YOUR-CLIENT-ID'
# Your Shufti Pro account Secret Key
secret_key = 'YOUR-SECRET-KEY'
# OR Access Token
# access_token = 'YOUR-ACCESS-TOKEN';
verification_request = {
'reference' : 'ref-{}{}'.format(randint(1000, 9999), randint(1000, 9999)),
'country' : 'GB',
'language' : 'EN',
'email' : '[email protected]',
'callback_url' : callback_url
}
# Use this key if want to perform face verification
verification_request['face'] = {}
# Use this key if want to perform document verification
verification_request['document'] = {
'name' : {
'first_name' : 'Your first name',
'middle_name' : 'Your middle name',
'last_name' : 'Your last name',
'fuzzy_match' : '1'
},
'dob' : '1992-10-10',
'age' : 18,
'document_number' : '2323-5629-5465-9990',
'expiry_date' : '2025-10-10',
'issue_date' : '2015-10-10',
'supported_types' : ['id_card','passport'],
'gender' : 'M'
}
# Use this key if want to perform address verification
verification_request['address'] = {
'name' : {
'first_name' : 'Your first name',
'middle_name' : 'Your middle name',
'last_name' : 'Your last name',
'fuzzy_match' : '1'
},
'full_address' : 'your address',
'address_fuzzy_match' : '1',
'issue_date' : '2015-10-10',
'supported_types' : ['utility_bill','passport','bank_statement']
}
# Use this key if want to perform consent verification
verification_request['consent'] = {
'text' : 'some text for consent verification',
'supported_type': ['handwritten']
}
# Use this key if want to perform phone verification
verification_request['phone'] = {
'phone_number' : '+1378746734',
'random_code' : '9977',
'text' : 'Your verification code is 9977'
}
# Calling Shufti Pro request API using python requests
auth = '{}:{}'.format(client_id, secret_key)
b64Val = base64.b64encode(auth.encode()).decode()
# if access token
# b64Val = access_token
# replace "Basic with "Bearer" in case of Access Token
response = requests.post(url,
headers={"Authorization": "Basic %s" % b64Val, "Content-Type": "application/json"},
data=json.dumps(verification_request))
# Calculating signature for verification
# Clients registered with Shufti Pro after March 15, 2023, must use secret key as follows
# secret_key = hashlib.sha256(secret_key.encode()).hexdigest()
# Calculated signature functionality cannot be implement in case of access token
calculated_signature = hashlib.sha256('{}{}'.format(response.content.decode(), secret_key).encode()).hexdigest()
# Get Shufti Pro Signature
sp_signature = response.headers.get('Signature','')
# Convert json string to json object
json_response = json.loads(response.content)
# Get event returned
event_name = json_response['event']
print (json_response)
if event_name == 'request.pending':
if sp_signature == calculated_signature:
verification_url = json_response['verification_url']
print ('Verification URL: {}'.format(verification_url))
else:
print ('Invalid signature: {}'.format(response.content))
require 'uri'
require 'net/http'
require 'base64'
require 'json'
url = URI("https://api.shuftipro.com/service/real_time/verification")
# Your Shufti Pro account Client ID
CLIENT_ID = "YOUR-CLIENT-ID"
# Your Shufti Pro account Secret Key
SECRET_KEY = "YOUR-SECRET-KEY"
# if access token
# ACCESS_TOKEN = "YOUR-ACCESS-TOKEN"
verification_request = {
reference: "Ref-"+ (0...8).map { (65 + rand(26)).chr }.join,
callback_url: "https://yourdomain.com/profile/notifyCallback",
email: "[email protected]",
country: "GB",
language: "EN",
redirect_url: "http://www.example.com"
}
# Use this key if you want to perform document verification with OCR
verification_request["document"] = {
supported_types: ["id_card","driving_license","passport"],
name: {
first_name: "Johon",
last_name: "Livone"
},
dob: "1990-10-10",
age: 18,
issue_date: "2015-10-10",
expiry_date: "2025-10-10",
document_number: "1234-1234-ABC",
gender: "M"
}
# Use this key if you want to perform address verification with OCR
verification_request["address"] = {
supported_types: ["id_card","bank_statement"],
name: {
first_name: "Johon",
last_name: "Livone"
},
issue_date: "2015-10-10",
full_address: "Candyland Avenue",
address_fuzzy_match: "1"
}
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
header_auth = Base64.strict_encode64("#{CLIENT_ID}:#{SECRET_KEY}")
# if Access Token
# header_auth = ACCESS_TOKEN
request["Content-Type"] = "application/json"
request["Authorization"] = "Basic #{header_auth}" # replace "Basic" with "Bearer" in case of access token
request.body = verification_request.to_json
response = http.request(request)
response_headers = response.instance_variable_get("@header")
response_data = response.read_body
sp_signature = !(response_headers['signature'].nil?) ? response_headers['signature'].join(',') : ""
# Calculating signature for verification
# Clients registered with Shufti Pro after March 15, 2023, must use secret key as follows
# SECRET_KEY = Digest::SHA256.hexdigest SECRET_KEY
# calculated signature functionality cannot be implement in case of access token
calculated_signature = Digest::SHA256.hexdigest response_data + SECRET_KEY
if sp_signature == calculated_signature
puts response_data
else
puts "Invalid signature"
end
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import javax.net.ssl.HttpsURLConnection;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://api.shuftipro.com/service/real_time/verification";
String CLIENT_ID = "CLIENT_ID";
String SECRET_KEY = "SECRET_KEY";
URL obj = new URL(url);
HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
// Add request header
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/json");
String basicAuth = "Basic " + Base64.getEncoder().encodeToString((CLIENT_ID + ":" + SECRET_KEY).getBytes(StandardCharsets.UTF_8));
con.setRequestProperty("Authorization", basicAuth);
String payload = "{\n \"reference\": \"5667456341\",\n \"callback_url\": \"http://www.example.com/\",\n \"email\": \"[email protected]\",\n \"country\": \"GB\",\n \"language\": \"EN\",\n \"face\": \"\",\n \"document\": {\n \"supported_types\": [\n \"id_card\",\n \"driving_license\",\n \"passport\"\n ],\n \"name\": {\n \"first_name\": \"John\",\n \"middle_name\": \"Middleman\",\n \"last_name\": \"Doe\"\n },\n \"dob\": \"1980-11-12\",\n \"age\": 18,\n \"issue_date\": \"1990-09-07\",\n \"expiry_date\": \"2050-10-10\",\n \"document_number\": \"0989-7752-6291-2387\",\n \"gender\": \"M\"\n },\n \"address\": {\n \"supported_types\": [\n \"id_card\",\n \"bank_statement\"\n ],\n \"name\": {\n \"first_name\": \"John\",\n \"middle_name\": \"Middleman\",\n \"last_name\": \"Doe\"\n },\n \"full_address\": \"3339 Maryland Avenue, Largo, Florida\",\n \"address_fuzzy_match\": \"1\",\n \"issue_date\": \"1990-09-07\"\n },\n \"consent\": {\n \"supported_types\": [\n \"handwritten\",\n \"printed\"\n ],\n \"text\": \"My name is John Doe and I authorise this transaction of $100/- Date: July 15, 2020\"\n },\n \"phone\": {\n \"phone_number\": \"+4400000000\",\n \"random_code\": \"23234\",\n \"text\": \"Your verification code is 23234\"\n },\n \"background_checks\": {\n \"name\": {\n \"first_name\": \"John\",\n \"middle_name\": \"Middleman\",\n \"last_name\": \"Doe\"\n },\n \"dob\": \"1980-11-12\"\n }\n}";
// Send post request
con.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(payload);
wr.flush();
wr.close();
int responseCode = con.getResponseCode();
System.out.println("\nSending 'POST' request to URL : " + url);
System.out.println("Payload : " + payload);
System.out.println("Response Code : " + responseCode);
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
System.out.println(in.toString());
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
// Print the response
System.out.println(response.toString());
}
}
curl --location --request POST 'https://api.shuftipro.com/service/real_time/verification' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic NmI4NmIyNzNmZjM0ZmNlMTlkNmI4WJRTUxINTJHUw==' \
--data-raw '{
"reference": "5667456341",
"callback_url": "http://www.example.com/",
"email": "[email protected]",
"country": "GB",
"language": "EN",
"face": "",
"document": {
"supported_types": [
"id_card",
"driving_license",
"passport"
],
"name": {
"first_name": "John",
"middle_name": "Middleman",
"last_name": "Doe"
},
"dob": "1980-11-12",
"age": 18,
"issue_date": "1990-09-07",
"expiry_date": "2050-10-10",
"document_number": "0989-7752-6291-2387",
"gender": "M"
},
"address": {
"supported_types": [
"id_card",
"bank_statement"
],
"name": {
"first_name": "John",
"middle_name": "Middleman",
"last_name": "Doe"
},
"full_address": "3339 Maryland Avenue, Largo, Florida",
"address_fuzzy_match": "1",
"issue_date": "1990-09-07"
},
"consent": {
"supported_types": [
"handwritten",
"printed"
],
"text": "My name is John Doe and I authorise this transaction of $100/- Date: July 15, 2020"
},
"phone": {
"phone_number": "+4400000000",
"random_code": "23234",
"text": "Your verification code is 23234"
},
"background_checks": {
"name": {
"first_name": "John",
"middle_name": "Middleman",
"last_name": "Doe"
},
"dob": "1980-11-12"
}
}'
var client = new RestClient("https://api.shuftipro.com/service/real_time/verification");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Basic NmI4NmIyNzNmZjM0ZmNlMTlkNmI4WJRTUxINTJHUw==");
var body = @"{" + "\n" +
@" ""reference"": ""5667456341""," + "\n" +
@" ""callback_url"": ""http://www.example.com/""," + "\n" +
@" ""email"": ""[email protected]""," + "\n" +
@" ""country"": ""GB""," + "\n" +
@" ""language"": ""EN""," + "\n" +
@" ""face"": """"," + "\n" +
@" ""document"": {" + "\n" +
@" ""supported_types"": [" + "\n" +
@" ""id_card""," + "\n" +
@" ""driving_license""," + "\n" +
@" ""passport""" + "\n" +
@" ]," + "\n" +
@" ""name"": {" + "\n" +
@" ""first_name"": ""John""," + "\n" +
@" ""middle_name"": ""Middleman""," + "\n" +
@" ""last_name"": ""Doe""" + "\n" +
@" }," + "\n" +
@" ""dob"": ""1980-11-12""," + "\n" +
@" ""age"": 18," + "\n" +
@" ""issue_date"": ""1990-09-07""," + "\n" +
@" ""expiry_date"": ""2050-10-10""," + "\n" +
@" ""document_number"": ""0989-7752-6291-2387""," + "\n" +
@" ""gender"": ""M""" + "\n" +
@" }," + "\n" +
@" ""address"": {" + "\n" +
@" ""supported_types"": [" + "\n" +
@" ""id_card""," + "\n" +
@" ""bank_statement""" + "\n" +
@" ]," + "\n" +
@" ""name"": {" + "\n" +
@" ""first_name"": ""John""," + "\n" +
@" ""middle_name"": ""Middleman""," + "\n" +
@" ""last_name"": ""Doe""" + "\n" +
@" }," + "\n" +
@" ""full_address"": ""3339 Maryland Avenue, Largo, Florida""," + "\n" +
@" ""address_fuzzy_match"": ""1""," + "\n" +
@" ""issue_date"": ""1990-09-07""" + "\n" +
@" }," + "\n" +
@" ""consent"": {" + "\n" +
@" ""supported_types"": [" + "\n" +
@" ""handwritten""," + "\n" +
@" ""printed""" + "\n" +
@" ]," + "\n" +
@" ""text"": ""My name is John Doe and I authorise this transaction of $100/- Date: July 15, 2020""" + "\n" +
@" }," + "\n" +
@" ""phone"": {" + "\n" +
@" ""phone_number"": ""+4400000000""," + "\n" +
@" ""random_code"": ""23234""," + "\n" +
@" ""text"": ""Your verification code is 23234""" + "\n" +
@" }," + "\n" +
@" ""background_checks"": {" + "\n" +
@" ""name"": {" + "\n" +
@" ""first_name"": ""John""," + "\n" +
@" ""middle_name"": ""Middleman""," + "\n" +
@" ""last_name"": ""Doe""" + "\n" +
@" }," + "\n" +
@" ""dob"": ""1980-11-12""" + "\n" +
@" }" + "\n" +
@"}";
request.AddParameter("application/json", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.shuftipro.com/service/real_time/verification"
method := "POST"
payload := strings.NewReader(`{
"reference": "5667456341",
"callback_url": "http://www.example.com/",
"email": "[email protected]",
"country": "GB",
"language": "EN",
"face": "",
"document": {
"supported_types": [
"id_card",
"driving_license",
"passport"
],
"name": {
"first_name": "John",
"middle_name": "Middleman",
"last_name": "Doe"
},
"dob": "1980-11-12",
"age": 18,
"issue_date": "1990-09-07",
"expiry_date": "2050-10-10",
"document_number": "0989-7752-6291-2387",
"gender": "M"
},
"address": {
"supported_types": [
"id_card",
"bank_statement"
],
"name": {
"first_name": "John",
"middle_name": "Middleman",
"last_name": "Doe"
},
"full_address": "3339 Maryland Avenue, Largo, Florida",
"address_fuzzy_match": "1",
"issue_date": "1990-09-07"
},
"consent": {
"supported_types": [
"handwritten",
"printed"
],
"text": "My name is John Doe and I authorise this transaction of $100/- Date: July 15, 2020"
},
"phone": {
"phone_number": "+4400000000",
"random_code": "23234",
"text": "Your verification code is 23234"
},
"background_checks": {
"name": {
"first_name": "John",
"middle_name": "Middleman",
"last_name": "Doe"
},
"dob": "1980-11-12"
}
}`)
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Basic NmI4NmIyNzNmZjM0ZmNlMTlkNmI4WJRTUxINTJHUw==")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}