Skip to main content
POST
/
sessions
curl -X POST \
  "https://verilock.io/api/v1/sessions" \
  -H "Authorization: Bearer qi_live_your_api_key_here" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
  "profile_id": "01234567-89ab-cdef-0123-456789abcdef",
  "applicant_email": "jean.dupont@example.com",
  "applicant_name": "Jean Dupont",
  "external_id": "usr_12345",
  "redirect_url": "https://example.com/kyc/complete",
  "metadata": {
    "plan": "premium"
  }
}'
$client = new \GuzzleHttp\Client();
$response = $client->post(
  'https://verilock.io/api/v1/sessions',
  [
    'headers' => [
      'Authorization' => 'Bearer qi_live_your_api_key_here',
      'Accept' => 'application/json',
    ],
    'json' => [
      'profile_id' => '01234567-89ab-cdef-0123-456789abcdef',
      'applicant_email' => 'jean.dupont@example.com',
      'applicant_name' => 'Jean Dupont',
      'external_id' => 'usr_12345',
      'redirect_url' => 'https://example.com/kyc/complete',
      'metadata' => ['plan' => 'premium'],
    ],
  ]
);
{
  "id": "ses_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "session_token": "tok_abc123def456...",
  "session_url": "https://verilock.io/verify/tok_abc123def456...",
  "status": "created",
  "expires_at": "2026-03-15T11:30:00Z"
}

Request Body Parameters

profile_id
string
required
UUID of the verification profile to use. Profiles define the steps, thresholds, and document types for the session.
applicant_email
string
Applicant’s email address
applicant_name
string
Applicant’s full name
external_id
string
Your internal reference ID for this session
redirect_url
string
URL to redirect the applicant after completing the hosted flow
expires_in
integer
Session expiration in seconds (min: 300, max: 86400, default: 3600)
metadata
object
Arbitrary key-value pairs attached to the session
curl -X POST \
  "https://verilock.io/api/v1/sessions" \
  -H "Authorization: Bearer qi_live_your_api_key_here" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
  "profile_id": "01234567-89ab-cdef-0123-456789abcdef",
  "applicant_email": "jean.dupont@example.com",
  "applicant_name": "Jean Dupont",
  "external_id": "usr_12345",
  "redirect_url": "https://example.com/kyc/complete",
  "metadata": {
    "plan": "premium"
  }
}'
$client = new \GuzzleHttp\Client();
$response = $client->post(
  'https://verilock.io/api/v1/sessions',
  [
    'headers' => [
      'Authorization' => 'Bearer qi_live_your_api_key_here',
      'Accept' => 'application/json',
    ],
    'json' => [
      'profile_id' => '01234567-89ab-cdef-0123-456789abcdef',
      'applicant_email' => 'jean.dupont@example.com',
      'applicant_name' => 'Jean Dupont',
      'external_id' => 'usr_12345',
      'redirect_url' => 'https://example.com/kyc/complete',
      'metadata' => ['plan' => 'premium'],
    ],
  ]
);
{
  "id": "ses_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "session_token": "tok_abc123def456...",
  "session_url": "https://verilock.io/verify/tok_abc123def456...",
  "status": "created",
  "expires_at": "2026-03-15T11:30:00Z"
}
Use session_token to initialize the Web, Flutter, or React Native SDK. Use session_url to redirect the user to the hosted verification flow.