Card Tokenize
curl --request POST \
--url https://api.henrylabs.ai/v1/card/tokenize \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"cardNumber": "4242424242424242",
"expiryMonth": "12",
"expiryYear": "28",
"cvv": "123"
}
'import requests
url = "https://api.henrylabs.ai/v1/card/tokenize"
payload = {
"cardNumber": "4242424242424242",
"expiryMonth": "12",
"expiryYear": "28",
"cvv": "123"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
cardNumber: '4242424242424242',
expiryMonth: '12',
expiryYear: '28',
cvv: '123'
})
};
fetch('https://api.henrylabs.ai/v1/card/tokenize', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.henrylabs.ai/v1/card/tokenize",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'cardNumber' => '4242424242424242',
'expiryMonth' => '12',
'expiryYear' => '28',
'cvv' => '123'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.henrylabs.ai/v1/card/tokenize"
payload := strings.NewReader("{\n \"cardNumber\": \"4242424242424242\",\n \"expiryMonth\": \"12\",\n \"expiryYear\": \"28\",\n \"cvv\": \"123\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.henrylabs.ai/v1/card/tokenize")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"cardNumber\": \"4242424242424242\",\n \"expiryMonth\": \"12\",\n \"expiryYear\": \"28\",\n \"cvv\": \"123\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.henrylabs.ai/v1/card/tokenize")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"cardNumber\": \"4242424242424242\",\n \"expiryMonth\": \"12\",\n \"expiryYear\": \"28\",\n \"cvv\": \"123\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"status": "<string>",
"message": "<string>",
"data": {
"cardToken": "card_live_abc123xyz",
"cardBin": "424242",
"cardLast4": "4242",
"cardBrand": "visa"
}
}{
"success": true,
"status": "<string>",
"message": "<string>"
}{
"success": true,
"status": "<string>",
"message": "<string>"
}Card
Card Tokenize
Tokenize raw card details into a card token.
PCI scope warning: This endpoint accepts the raw PAN, CVV, and expiry directly on your server. Sending unencrypted cardholder data through your backend brings your systems into PCI DSS scope (typically SAQ D). If you want to stay out of scope, collect card details with Henry Labs’s hosted secure elements / client-side tokenization instead, so raw card data never touches your servers.
POST
/
card
/
tokenize
Card Tokenize
curl --request POST \
--url https://api.henrylabs.ai/v1/card/tokenize \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"cardNumber": "4242424242424242",
"expiryMonth": "12",
"expiryYear": "28",
"cvv": "123"
}
'import requests
url = "https://api.henrylabs.ai/v1/card/tokenize"
payload = {
"cardNumber": "4242424242424242",
"expiryMonth": "12",
"expiryYear": "28",
"cvv": "123"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
cardNumber: '4242424242424242',
expiryMonth: '12',
expiryYear: '28',
cvv: '123'
})
};
fetch('https://api.henrylabs.ai/v1/card/tokenize', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.henrylabs.ai/v1/card/tokenize",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'cardNumber' => '4242424242424242',
'expiryMonth' => '12',
'expiryYear' => '28',
'cvv' => '123'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.henrylabs.ai/v1/card/tokenize"
payload := strings.NewReader("{\n \"cardNumber\": \"4242424242424242\",\n \"expiryMonth\": \"12\",\n \"expiryYear\": \"28\",\n \"cvv\": \"123\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.henrylabs.ai/v1/card/tokenize")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"cardNumber\": \"4242424242424242\",\n \"expiryMonth\": \"12\",\n \"expiryYear\": \"28\",\n \"cvv\": \"123\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.henrylabs.ai/v1/card/tokenize")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"cardNumber\": \"4242424242424242\",\n \"expiryMonth\": \"12\",\n \"expiryYear\": \"28\",\n \"cvv\": \"123\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"status": "<string>",
"message": "<string>",
"data": {
"cardToken": "card_live_abc123xyz",
"cardBin": "424242",
"cardLast4": "4242",
"cardBrand": "visa"
}
}{
"success": true,
"status": "<string>",
"message": "<string>"
}{
"success": true,
"status": "<string>",
"message": "<string>"
}Authorizations
Body
application/json
Full card number (PAN) with no spaces or dashes
Pattern:
^\d{13,19}$Example:
"4242424242424242"
Two-digit expiry month, zero-padded
Pattern:
^(0[1-9]|1[0-2])$Example:
"12"
Two-digit expiry year
Pattern:
^\d{2}$Example:
"28"
Card verification value (3 digits for Visa/MC, 4 for Amex)
Pattern:
^\d{3,4}$Example:
"123"
Was this page helpful?
⌘I