Free Liveness detection for your organization

Free Trial
Liveness Demo

A quick and effective alternative to memorizing keys. Save time and money by integrating our OTP (one time password) technology. passwordles logins

The one stop shop Passwordless solution

A simple, easy to use authentication solution

Talk to us

Features

Facial Simple, hustle free logins for your precious clients

Smart Conversion Icon - Verifik

Can't be reused

Passwords expire after use or after a certain time has passed

Mutiple Platforms Icon - Verifik

Multi channel

OTP is delivered via text, email or whatsapp

Less Overhead Icon - Verifik

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.

Enroll Icon - Verifik

Since OTPs are single-use and expire after a certain period of time, they are more secure and reduce the risk of unauthorized access.

Importance of Enroll - Verifik

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 Icon - Verifik

No-Code

A versatile and effective app

Verifik offers a no-code solution for those who prefer a simpler life

Dev Ready Icon - Verifik

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.

Talk to us

Email

Forget about passwords and get OTPs directly to your email.

Talk to us

Bio Auth

Verify user identity with Facial Recognition and Life Detection, powered by computer vision AI.

Talk to us

SMS / WhatsApp

Replace passwords and request OTPs directly to your phone or whatsapp app

Book a Call

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