A quick and effective alternative to memorizing keys. Save time and money by integrating our OTP (one time password) technology. passwordles logins
Features
Facial Simple, hustle free logins for your precious clients
Can't be reused
Passwords expire after use or after a certain time has passed
Multi channel
OTP is delivered via text, email or whatsapp
Bio Auth
Integrate Biometric Authentication seamlessly with API or SDK
Importance
The importance of
passwordless login with OTP
One-time passwords, or OTPs, are a robust option for authenticating users without the need to memorize passwords or use password managers. This technology verifies in real time that the user attempting to log in is the legitimate owner of the account and not an impostor, thus becoming a necessity for security-conscious companies.
Since OTPs are single-use and expire after a certain period of time, they are more secure and reduce the risk of unauthorized access.
How it works
Code Solution
import axios from 'axios';
const options = {
method: 'POST',
url: 'https://api.verifik.co/v2/projects',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
authorization: 'JWT your token'
},
data: {
name: 'Ejemplo',
allowedCountries: ['Colombia']
}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
import requests
url = "https://api.verifik.co/v2/projects"
payload = {
"name": "Ejemplo",
"allowedCountries": ["Colombia"]
}
headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"authorization": "123"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
import Foundation
let headers = [
"Content-Type": "application/json",
"Accept": "application/json",
"authorization": "123"
]
let parameters = [
"name": "Ejemplo",
"allowedCountries": ["Colombia"]
] as [String: Any]
let postData = try! JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(
url: NSURL(string: "https://api.verifik.co/v2/projects")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0
)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest) { data, response, error in
if let error = error {
print(error)
} else if let httpResponse = response as? HTTPURLResponse {
print(httpResponse)
}
}
dataTask.resume()
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.verifik.co/v2/projects', [
'body' => json_encode([
'name' => 'Ejemplo',
'allowedCountries' => ['Colombia']
]),
'headers' => [
'Accept' => 'application/json',
'Content-Type' => 'application/json',
'authorization' => '123',
],
]);
echo $response->getBody();
import axios from 'axios';
const options = {
method: 'POST',
url: 'https://api.verifik.co/v2/project-flows',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
authorization: 'JWT your token'
},
data: {
project: 'string',
type: 'string',
loginSettings: {
email: true,
emailGateway: 'string',
phone: true,
phoneGateway: 'string',
faceLiveness: true,
livenessMinScore: 0,
searchMode: 'string',
searchMinScore: 0
},
security: {
strategy: 'string',
source: 'string',
apiUrl: 'string',
apiTestType: 'string',
apiTestValue: 'string'
}
}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
import requests
url = "https://api.verifik.co/v2/project-flows"
payload = {
"project": "string",
"type": "string",
"loginSettings": {
"email": True,
"emailGateway": "string",
"phone": True,
"phoneGateway": "string",
"faceLiveness": True,
"livenessMinScore": 0,
"searchMode": "string",
"searchMinScore": 0
},
"security": {
"strategy": "string",
"source": "string",
"apiUrl": "string",
"apiTestType": "string",
"apiTestValue": "string"
}
}
headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"authorization": "123"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
import Foundation
let headers = [
"Content-Type": "application/json",
"Accept": "application/json",
"authorization": "123"
]
let parameters = [
"project": "string",
"type": "string",
"loginSettings": [
"email": true,
"emailGateway": "string",
"phone": true,
"phoneGateway": "string",
"faceLiveness": true,
"livenessMinScore": 0,
"searchMode": "string",
"searchMinScore": 0
],
"security": [
"strategy": "string",
"source": "string",
"apiUrl": "string",
"apiTestType": "string",
"apiTestValue": "string"
]
] as [String: Any]
let postData = try! JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(
url: NSURL(string: "https://api.verifik.co/v2/project-flows")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0
)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest) { data, response, error in
if let error = error {
print(error)
} else if let httpResponse = response as? HTTPURLResponse {
print(httpResponse)
}
}
dataTask.resume()
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.verifik.co/v2/project-flows', [
'json' => [
'project' => 'string',
'type' => 'string',
'loginSettings' => [
'email' => true,
'emailGateway' => 'string',
'phone' => true,
'phoneGateway' => 'string',
'faceLiveness' => true,
'livenessMinScore' => 0,
'searchMode' => 'string',
'searchMinScore' => 0
],
'security' => [
'strategy' => 'string',
'source' => 'string',
'apiUrl' => 'string',
'apiTestType' => 'string',
'apiTestValue' => 'string'
]
],
'headers' => [
'Accept' => 'application/json',
'Content-Type' => 'application/json',
'authorization' => '123',
],
]);
echo $response->getBody();
import axios from 'axios';
const options = {
method: 'POST',
url: 'https://api.verifik.co/v2/face-recognition/search',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'jwt your_token'
},
data: {
images: ['base64_encoded_string'],
min_score: 0.7,
search_mode: 'FAST/ACCURATE choose one',
collection_id: 'ID_OF_COLLECTION'
}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
import requests
url = "https://api.verifik.co/v2/face-recognition/search"
payload = {
"images": ["base64_encoded_string"],
"min_score": 0.7,
"search_mode": "FAST/ACCURATE choose one",
"collection_id": "ID_OF_COLLECTION"
}
headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "JWT token"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
import Foundation
let headers = [
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "JWT token"
]
let parameters = [
"images": ["base64_encoded_string"],
"min_score": 0.7,
"search_mode": "FAST/ACCURATE choose one",
"collection_id": "ID_OF_COLLECTION"
] as [String: Any]
let postData = try! JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(
url: NSURL(string: "https://api.verifik.co/v2/face-recognition/search")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0
)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if let error = error {
print(error)
} else {
if let httpResponse = response as? HTTPURLResponse {
print(httpResponse)
}
}
})
dataTask.resume()
<?php
use GuzzleHttp\Client;
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.verifik.co/v2/face-recognition/search', [
'body' => '{
"images": [
"base64_encoded_string"
],
"min_score": 0.7,
"search_mode": "FAST/ACCURATE choose one",
"collection_id": "ID_OF_COLLECTION"
}',
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'JWT token',
'Content-Type' => 'application/json',
],
]);
echo $response->getBody();
import axios from 'axios';
const options = {
method: 'POST',
url: 'https://api.verifik.co/v2/email-validations/validate',
headers: {
'Content-Type': 'application/json',
authorization: 'JWT your token'
},
data: {
projectFlow: 'string',
email: 'string',
otp: 0
}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
import requests
url = "https://api.verifik.co/v2/email-validations/validate"
payload = {
"projectFlow": "string",
"email": "string",
"otp": 0
}
headers = {
"Content-Type": "application/json",
"authorization": "123"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
import Foundation
let headers = [
"Content-Type": "application/json",
"authorization": "123"
]
let parameters = [
"projectFlow": "string",
"email": "string",
"otp": 0
] as [String: Any]
let postData = try! JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(
url: NSURL(string: "https://api.verifik.co/v2/email-validations/validate")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0
)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest) { data, response, error in
if let error = error {
print(error)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
}
dataTask.resume()
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.verifik.co/v2/email-validations/validate', [
'json' => [
'projectFlow' => 'string',
'email' => 'string',
'otp' => 0
],
'headers' => [
'Content-Type' => 'application/json',
'authorization' => '123',
],
]);
echo $response->getBody();
Solutions
No-Code
A versatile and effective app
Verifik offers a no-code solution for those who prefer a simpler life
dev-ready
Volume discounts available
Verifik offers a coding solution for those who want advanced customization
Functionalities
SMS / WhatsApp
Replace passwords and get OTPs on your phone easily and quickly via text message or WhatsApp.
Bio Auth
Verify user identity with Facial Recognition and Life Detection, powered by computer vision AI.
SMS / WhatsApp
Replace passwords and request OTPs directly to your phone or whatsapp app
WITH VERIFIK
Plug in, automate and focus on what matters
Products
Choose the best solution for your project with smartACCESS
App
smartACCESS
A no-code solution for those who prefer a simpler life
- Liveness Detection
- SMS/Email/Whatsapp
Dev-Ready
smartACCESS
A code solution for those who want advanced customization
- Volume Discounts
- Annual Commitments