NotaryLive API - ID Proofing

Page last updated: June 1, 2026

ID Proofing

The ID Proofing API allows you to create a session where a participant's identity is verified through ID scanning and Knowledge-Based Authentication (KBA) — without requiring a live notary session. This is useful when your workflow requires identity verification as a standalone step.

To create an ID proofing session, send a POST request to the /api/v3/id-proofing/create endpoint. Below is an example:

curl -X POST "https://notarylive.com/api/v3/id-proofing/create" \
    -H 'Content-Type: application/json' \
    -u 'api_test_user:api_test_key' \
    -d $'{"internal_id": "((internal_order_id))", "participant_email": "john.doe@notarylive.com", "participant_first_name": "John", "participant_last_name": "Doe"}'

A successful request will generate the following response:

{
    "success": 1,
    "link_to_order": "https://notarylive.com/id-proofing/order/{unique_order_identifier}"
}

Send the link_to_order to your participant. They will be guided through the ID scanning and KBA steps at that URL.


Validation Failures

Invalid credentials will return a 401 response with the message: HTTP/1.0 401 Unauthorized

Invalid or missing payload data will return a 400 HTTP response with a JSON body containing success = 0 as well as an array of errors containing both a standardized error code, and a human-readable description of what caused the error:

If you continue having issues, please take a look at our troubleshooting guide.

curl -X POST "https://notarylive.com/api/v3/id-proofing/create" \
    -H 'Content-Type: application/json' \
    -u 'api_test_user:api_test_key' \
    -d $'{"internal_id":"internal_order_id","participant_email":"john.doe@notarylive.com","participant_last_name":"Doe"}'
{
    "success": 0,
    "errors": [
        {
            "code": "validation_failed",
            "message": "The participant first name field is required."
        }
    ]
}

Validation Rules

The following are the validation rules for all arguments within the ID proofing creation API call:

Parameter Validation Rules
biometrics_enabled Optional | Boolean | Defaults to false | When true, the participant must complete a biometric (selfie) check. Cannot be enabled unless id_scan_enabled is also true
company_email Optional | Email | Max length: 100 characters | The email address NotaryLive will send status updates to as the order moves through the system
confirmation_btn_text Required if confirmation_btn_url is set | String | Max length: 50 characters | The name of the organization or workflow that your participants are returning to after completing the session
confirmation_btn_url Optional | Url | The url the confirmation page button will link out to
expired_order_redirect Optional | Url | The url NotaryLive will redirect participants to when the order has expired due to inactivity
id_scan_enabled Optional | Boolean | Defaults to true | When true, the participant must scan a government-issued photo ID. Cannot be disabled at the same time as kba_enabled
internal_id Optional | String | Max length: 191 characters | A value you supply that helps identify this record in your internal systems
kba_enabled Optional | Boolean | Defaults to true | When true, the participant must answer Knowledge-Based Authentication (KBA) questions. Cannot be disabled at the same time as id_scan_enabled
participant_email Required | Email | Max length: 100 characters | The email address of the participant
participant_first_name Required | String | Max length: 35 characters | Letters, commas, periods, hyphens, apostrophes and spaces only | The first name of the participant
participant_last_name Required | String | Max length: 50 characters | Letters, commas, periods, hyphens, apostrophes and spaces only | The last name of the participant
webhook_url Optional | Url | The url NotaryLive will POST status updates to as the order moves through the system

Verification Steps

Each ID proofing session is made up of one or more verification steps. You can toggle which steps a participant must complete with the biometrics_enabled, id_scan_enabled, and kba_enabled parameters. By default an order requires the ID scan and KBA, with biometrics disabled.

The following rules govern which combinations are allowed. A request that violates either rule returns a 400 response with a validation_failed error:

  • Biometrics requires the ID scan. biometrics_enabled can only be true when id_scan_enabled is also true.
  • At least one of the ID scan or KBA is required. id_scan_enabled and kba_enabled cannot both be false in the same request.

Webhook Events

If you supply a webhook_url, NotaryLive will POST a JSON event to it as the participant moves through the ID proofing session. If you supply a company_email instead (and no webhook_url), the same event data is emailed to that address. All ID proofing webhook events are sent with Content-Type: application/json.

Event Name JSON Payload
identity_verified
{
    "event": "identity_verified",
    "nl_id_proofing_order_id": "notarylive_order_id",
    "their_order_id": "your_company_order_id",
    "participant_email": "participant@domain.tld",
    "checks": {
        "biometrics": false,
        "id_scan": true,
        "kba": true
    },
    "verified_person": {
        "address": "123 Main St Springfield IL 62704 US",
        "date_of_birth": "1980-01-01",
        "first_name": "John",
        "id_expires_at": "2026-01-01",
        "id_issued_at": "2018-01-01",
        "id_type": "drivers_license",
        "last_name": "Doe",
        "middle_name": "A",
        "name": "John A Doe Jr",
        "suffix": "Jr"
    }
}
Please note: The checks object reflects which verification steps were enabled for the order (see biometrics_enabled, id_scan_enabled, and kba_enabled above). The verified_person object holds the identity data read from the scanned ID; it is only included when an ID scan was performed, so orders that run KBA alone will omit it.

Copyright © 2026, NotaryLive.com