const response = await fetch('https://service.pcibooking.net/api/card-view-request/initView', {
method: 'POST',
headers: {
'Authorization': 'APIKEY your-api-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
Card_token: '555fd7b49f134b42a5dbe4d576b2e527',
Email: 'customer@example.com',
Phone: '353858622255',
PersonName: 'Jane Smith',
TtlMinutes: 15,
Language: 'en'
})
});
const data = await response.json();
console.log(data);
import requests
response = requests.post(
'https://service.pcibooking.net/api/card-view-request/initView',
headers={
'Authorization': 'APIKEY your-api-key',
'Content-Type': 'application/json'
},
json={
'Card_token': '555fd7b49f134b42a5dbe4d576b2e527',
'Email': 'customer@example.com',
'Phone': '353858622255',
'PersonName': 'Jane Smith',
'TtlMinutes': 15,
'Language': 'en'
}
)
print(response.json())
{
"verifyId": "s4iMrBQioE0JBCJIMN9kjnsLNDeGZUmG",
"status": "Pending",
"completedAt": null,
"expiresAt": "2026-01-12T14:15:00Z",
"phoneNumber": "353858622255",
"personName": "Jane Smith",
"language": "en",
"metadata": null,
"senderName": "My Travel Brand"
}
{
"code": -179,
"message": "Bad input parameter",
"moreInfo": "Bad input data",
"errorList": [
"The Email field is not a valid e-mail address."
]
}
{
"code": -1003,
"message": "Not authorized to access this resource",
"moreInfo": "User is not associated with bank card",
"errorList": null
}
Card Display
Initiate Card Display with OTP
Send a secure card viewing link with OTP verification to a cardholder.
POST
/
api
/
card-view-request
/
initView
const response = await fetch('https://service.pcibooking.net/api/card-view-request/initView', {
method: 'POST',
headers: {
'Authorization': 'APIKEY your-api-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
Card_token: '555fd7b49f134b42a5dbe4d576b2e527',
Email: 'customer@example.com',
Phone: '353858622255',
PersonName: 'Jane Smith',
TtlMinutes: 15,
Language: 'en'
})
});
const data = await response.json();
console.log(data);
import requests
response = requests.post(
'https://service.pcibooking.net/api/card-view-request/initView',
headers={
'Authorization': 'APIKEY your-api-key',
'Content-Type': 'application/json'
},
json={
'Card_token': '555fd7b49f134b42a5dbe4d576b2e527',
'Email': 'customer@example.com',
'Phone': '353858622255',
'PersonName': 'Jane Smith',
'TtlMinutes': 15,
'Language': 'en'
}
)
print(response.json())
{
"verifyId": "s4iMrBQioE0JBCJIMN9kjnsLNDeGZUmG",
"status": "Pending",
"completedAt": null,
"expiresAt": "2026-01-12T14:15:00Z",
"phoneNumber": "353858622255",
"personName": "Jane Smith",
"language": "en",
"metadata": null,
"senderName": "My Travel Brand"
}
{
"code": -179,
"message": "Bad input parameter",
"moreInfo": "Bad input data",
"errorList": [
"The Email field is not a valid e-mail address."
]
}
{
"code": -1003,
"message": "Not authorized to access this resource",
"moreInfo": "User is not associated with bank card",
"errorList": null
}
Card Display with OTP Guide
How the OTP verification flow works end-to-end
Error Responses
| Code | HTTP Status | Condition |
|---|---|---|
| -179 | 400 | Validation error: missing required fields, invalid email or phone format. |
| -1003 | 401 | Missing or invalid API key in the Authorization header. |
| -1003 | 401 | No valid identity found for the authenticated user. |
| -160 | 404 | Session incorrect or expired (when validating or retrieving OTP session). |
Parameter Constraints
| Parameter | Constraint |
|---|---|
Phone | Required. Digits only including country code, no + prefix. |
Email | Required. Must be a valid email address. |
PersonName | Max 100 characters. |
TtlMinutes | Integer, range 1 to 30 (minutes). Default: 10. |
Language | 2-letter code from the supported languages list. Default: en. |
| OTP code | 6-digit numeric code. Regex: ^\d{6}$. |
| Session ID (CVRT) | 32-character alphanumeric string. Regex: ^[a-zA-Z0-9]{32}$. |
Parameters
Headers
string
required
Your API key prefixed with
APIKEY. Example: APIKEY your-api-key. See the Authentication guide.Request Body
string
required
The PCI Booking card token to display.
string
required
Email address to send the secure viewing link to. (Legacy alias:
ViewrEmail.)string
required
Phone number for SMS verification. Format: country code + number, no
+ prefix (e.g. 1555123456 for US, 353858622255 for Ireland). (Legacy alias: ViewrPhone.)string
Name of the viewer, used to personalize the email and verification screens. Max 100 characters. (Legacy alias:
ViewerName.)string
SMS sender name. Defaults to your account name.
number
default:"10"
How long the viewing link stays valid, in minutes. Range 1 to 30.
string
default:"en"
Two-letter language code for the email and verification screens, from the supported languages list.
const response = await fetch('https://service.pcibooking.net/api/card-view-request/initView', {
method: 'POST',
headers: {
'Authorization': 'APIKEY your-api-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
Card_token: '555fd7b49f134b42a5dbe4d576b2e527',
Email: 'customer@example.com',
Phone: '353858622255',
PersonName: 'Jane Smith',
TtlMinutes: 15,
Language: 'en'
})
});
const data = await response.json();
console.log(data);
import requests
response = requests.post(
'https://service.pcibooking.net/api/card-view-request/initView',
headers={
'Authorization': 'APIKEY your-api-key',
'Content-Type': 'application/json'
},
json={
'Card_token': '555fd7b49f134b42a5dbe4d576b2e527',
'Email': 'customer@example.com',
'Phone': '353858622255',
'PersonName': 'Jane Smith',
'TtlMinutes': 15,
'Language': 'en'
}
)
print(response.json())
Response
{
"verifyId": "s4iMrBQioE0JBCJIMN9kjnsLNDeGZUmG",
"status": "Pending",
"completedAt": null,
"expiresAt": "2026-01-12T14:15:00Z",
"phoneNumber": "353858622255",
"personName": "Jane Smith",
"language": "en",
"metadata": null,
"senderName": "My Travel Brand"
}
{
"code": -179,
"message": "Bad input parameter",
"moreInfo": "Bad input data",
"errorList": [
"The Email field is not a valid e-mail address."
]
}
{
"code": -1003,
"message": "Not authorized to access this resource",
"moreInfo": "User is not associated with bank card",
"errorList": null
}

