PingOne Platform APIs

Create Verify Policy

POST {{apiPath}}/v1/environments/{{envID}}/verifyPolicies

Create a new verify policy for the specified environment with the POST {{apiPath}}/v1/environments/{{envID}}/verifyPolicies request.

The first example response returns when .provider.auto is Veriff. The second example response returns when .provider.auto is not provided. The third example shows an Aadhaar-enabled policy.

Prerequisites

Request Model

Refer to Verify policy data model for full property descriptions.

Property Type Required

biometricEnrollment

Object

Optional

dataBasedIdentityVerification

Object

Optional

default

Boolean

Optional

description

String

Optional

deviceOwnership

Object

Optional

email

Object

Optional

environment.id

String

Required

facialComparison

Object

Optional

governmentId

Object

Optional

id

String

Required

identityRecordMatching

Object

Optional

liveness

Object

Optional

name

String

Required

phone

Object

Optional

transaction

Object

Optional

updatedAt

DateTime

N/A

verifiableCredential

Object

Optional

voice (deprecated)

Object

Optional

biometricEnrollment - Biometric enrollment configuration object

Property Type Required

face.enabled

Boolean

Optional

dataBasedIdentityVerification - Data-based identity verification configuration object

Property Type Required

threshold

String

Optional

deviceOwnership - Device ownership configuration object

Property Type Required

transunion

Object

Required

transunion.emailToNameThreshold

String

Optional

transunion.emailToPhoneThreshold

String

Optional

transunion.phoneRiskThreshold

String

Required

transunion.phoneToNameThreshold

String

Required

verify

String

Required

email and phone - Email address and phone number configuration object

Property Type Required

createMfaDevice

Boolean

Optional

otp

Object

Optional

otp.
attempts

Object

Required

otp.
attempts.
count

Integer

Required

otp.
deliveries

Object

Required

otp.
deliveries.
coolDown

Object

Required

otp.
deliveries.
coolDown.
duration

Integer

Required

otp.
deliveries.
coolDown.
timeUnit

String

Required

otp.
deliveries.
count

Integer

Required

otp.
lifeTime

Object

Required

otp.
lifeTime.
duration

Integer

Required

otp.
lifeTime.
timeUnit

String

Required

otp.
notification

Object

Required

otp.
notification.
templateName

String

Required

otp.
notification.
variantName

String

Optional

verify

String

Required

facialComparison - Facial comparison configuration object

Property Type Required

threshold

String

Required

verify

String

Required

governmentId - Government identification document configuration object

Property Type Required

aadhaar

Object

Optional

aadhaar.enabled

Boolean

Optional

failExpiredId

Boolean

Optional

inspectionType

String

Optional

provider.auto

String

Optional

provider.manual

String

Optional

retry.attempts

Integer

Optional

verify

String

Required

verifyAamva

Boolean

Optional

identityRecordMatching - Identity record matching configuration object

Property Type Required

address

String

Optional

address.fieldRequired

Boolean

Required

address.threshold

String

Required

birth_date

String

Optional

birth_date.fieldRequired

Boolean

Required

birth_date.threshold

String

Required

family_name

String

Optional

family_name.fieldRequired

Boolean

Required

family_name.threshold

String

Required

given_name.fieldRequired

Boolean

Required

given_name

String

Optional

given_name.threshold

String

Required

name

String

Optional

name.fieldRequired

Boolean

Required

name.threshold

String

Required

liveness - Liveness configuration object

Property Type Required

retry.attempts

Integer

Optional

threshold

String

Required

verify

String

Required

transaction - Transaction configuration object

Property Type Required

dataCollection

Object

Optional

dataCollection.
timeout

Object

Required

dataCollection.
timeout.
duration

Integer

Required

dataCollection.
timeout.
timeUnit

String

Required

dataCollectionOnly

Boolean

Optional

ida.enabled

Boolean

Optional

timeout

Object

Optional

timeout.
duration

Integer

Required

timeout.
timeUnit

String

Required

verifiableCredential - Verifiable credential configuration object

Property Type Required

issuerFilter.dids

String[]

Optional

issuerFilter.environmentIds

String[]

Optional

message

String

Optional

protocol

String

Optional

requestedCredentials

Object[]

Required

requestedCredentials.keys

String[]

Optional

requestedCredentials.type

String

Required

verify

String

Required

voice - Voice verification configuration object

Voice verification is deprecated and will be removed on November 25, 2026.

Property Type Required

comparison.
threshold

String

Required

enrollment

Boolean

Required

liveness.
threshold

String

Required

referenceData

Object

Optional

referenceData.
retainOriginalRecordings

Boolean

Optional

referenceData.
updateOnReenrollment

Boolean

Optional

referenceData.
updateOnVerification

Boolean

Optional

textDependent

Object

Optional

textDependent.
phrase.
id

String

Required

textDependent.
samples

Integer

Required

verify

String

Required

The notification.variantName in the email and phone configuration objects can define a variant for the email_phone_verification notification submitted in notification.templateName, if needed. After receipt of a Create Verify Transaction request, the verification service uses an email_phone_verification notification template to send notice of the action taken to the user via email or SMS text.

A policy-specific locale cannot be specified for the email_phone_verification notification. The notification uses the user’s preferred language or, if the user has no preferred language, the default language of the environment.

When setting timeouts in the transaction configuration object, dataCollection.timeout.duration must be less than or equal to timeout.duration. Use caution when reducing the timeouts below the defaults to avoid an unfavorable user experience.

The first example response includes AAMVA. The second example response includes data-based identity verification.

Headers

Authorization      Bearer {{accessToken}}

Content-Type      application/json

Body

raw ( application/json )

{
    "name": "Verify everything",
    "description": "All types required",
    "default": false,
    "governmentId": {
        "verify": "REQUIRED",
        "inspectionType": "AUTOMATIC",
        "failExpiredId": "true",
        "retry": {
            "attempts": 3
        },
        "provider": {
            "auto": "VERIFF",
            "manual": "MITEK"
        },
        "verifyAamva": true
    },
    "facialComparison": {
        "verify": "REQUIRED",
        "threshold": "HIGH"
    },
    "liveness": {
        "verify": "REQUIRED",
        "threshold": "HIGH",
        "retry": {
            "attempts": 3
        }
    },
    "identityRecordMatching": {
        "address": {
            "fieldRequired": true,
            "threshold": "MEDIUM"
        },
        "birth_date": {
            "fieldRequired": true,
            "threshold": "MEDIUM"
        },
        "family_name": {
            "fieldRequired": true,
            "threshold": "MEDIUM"
        },
        "given_name": {
            "fieldRequired": true,
            "threshold": "MEDIUM"
        },
        "name": {
            "fieldRequired": false,
            "threshold": "MEDIUM"
        }
    },
    "dataBasedIdentityVerification": {
        "threshold": "HIGH"
    },
    "email": {
        "verify": "REQUIRED",
        "createMfaDevice": true,
        "otp": {
            "attempts": {
                "count": 5
            },
            "lifeTime": {
                "duration": 10,
                "timeUnit": "MINUTES"
            },
            "deliveries": {
                "count": 3,
                "cooldown": {
                    "duration": 30,
                    "timeUnit": "SECONDS"
                }
            },
            "notification": {
                "templateName": "email_phone_verification"
            }
        }
    },
    "phone": {
        "verify": "REQUIRED",
        "createMfaDevice": true,
        "otp": {
            "attempts": {
                "count": 5
            },
            "lifeTime": {
                "duration": 10,
                "timeUnit": "MINUTES"
            },
            "deliveries": {
                "count": 3,
                "cooldown": {
                    "duration": 30,
                    "timeUnit": "SECONDS"
                }
            },
            "notification": {
                "templateName": "email_phone_verification"
            }
        }
    },
    "transaction": {
        "timeout": {
            "duration": 30,
            "timeUnit": "MINUTES"
        },
        "dataCollection": {
            "timeout": {
                "duration": 15,
                "timeUnit": "MINUTES"
            }
        },
        "dataCollectionOnly": false
    }
}

Example Request

  • cURL

  • C#

  • Go

  • HTTP

  • Java

  • jQuery

  • NodeJS

  • Python

  • PHP

  • Ruby

  • Swift

curl --location --globoff '{{apiPath}}/v1/environments/{{envID}}/verifyPolicies' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--data '{
    "name": "Verify everything",
    "description": "All types required",
    "default": false,
    "governmentId": {
        "verify": "REQUIRED",
        "inspectionType": "AUTOMATIC",
        "failExpiredId": "true",
        "retry": {
            "attempts": 3
        },
        "provider": {
            "auto": "VERIFF",
            "manual": "MITEK"
        },
        "verifyAamva": true
    },
    "facialComparison": {
        "verify": "REQUIRED",
        "threshold": "HIGH"
    },
    "liveness": {
        "verify": "REQUIRED",
        "threshold": "HIGH",
        "retry": {
            "attempts": 3
        }
    },
    "identityRecordMatching": {
        "address": {
            "fieldRequired": true,
            "threshold": "MEDIUM"
        },
        "birth_date": {
            "fieldRequired": true,
            "threshold": "MEDIUM"
        },
        "family_name": {
            "fieldRequired": true,
            "threshold": "MEDIUM"
        },
        "given_name": {
            "fieldRequired": true,
            "threshold": "MEDIUM"
        },
        "name": {
            "fieldRequired": false,
            "threshold": "MEDIUM"
        }
    },
    "dataBasedIdentityVerification": {
        "threshold": "HIGH"
    },
    "email": {
        "verify": "REQUIRED",
        "createMfaDevice": true,
        "otp": {
            "attempts": {
                "count": 5
            },
            "lifeTime": {
                "duration": 10,
                "timeUnit": "MINUTES"
            },
            "deliveries": {
                "count": 3,
                "cooldown": {
                    "duration": 30,
                    "timeUnit": "SECONDS"
                }
            },
            "notification": {
                "templateName": "email_phone_verification"
            }
        }
    },
    "phone": {
        "verify": "REQUIRED",
        "createMfaDevice": true,
        "otp": {
            "attempts": {
                "count": 5
            },
            "lifeTime": {
                "duration": 10,
                "timeUnit": "MINUTES"
            },
            "deliveries": {
                "count": 3,
                "cooldown": {
                    "duration": 30,
                    "timeUnit": "SECONDS"
                }
            },
            "notification": {
                "templateName": "email_phone_verification"
            }
        }
    },
    "transaction": {
        "timeout": {
            "duration": 30,
            "timeUnit": "MINUTES"
        },
        "dataCollection": {
            "timeout": {
                "duration": 15,
                "timeUnit": "MINUTES"
            }
        },
        "dataCollectionOnly": false
    }
}'
var options = new RestClientOptions("{{apiPath}}/v1/environments/{{envID}}/verifyPolicies")
{
  MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("", Method.Post);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer {{accessToken}}");
var body = @"{" + "\n" +
@"    ""name"": ""Verify everything""," + "\n" +
@"    ""description"": ""All types required""," + "\n" +
@"    ""default"": false," + "\n" +
@"    ""governmentId"": {" + "\n" +
@"        ""verify"": ""REQUIRED""," + "\n" +
@"        ""inspectionType"": ""AUTOMATIC""," + "\n" +
@"        ""failExpiredId"": ""true""," + "\n" +
@"        ""retry"": {" + "\n" +
@"            ""attempts"": 3" + "\n" +
@"        }," + "\n" +
@"        ""provider"": {" + "\n" +
@"            ""auto"": ""VERIFF""," + "\n" +
@"            ""manual"": ""MITEK""" + "\n" +
@"        }," + "\n" +
@"        ""verifyAamva"": true" + "\n" +
@"    }," + "\n" +
@"    ""facialComparison"": {" + "\n" +
@"        ""verify"": ""REQUIRED""," + "\n" +
@"        ""threshold"": ""HIGH""" + "\n" +
@"    }," + "\n" +
@"    ""liveness"": {" + "\n" +
@"        ""verify"": ""REQUIRED""," + "\n" +
@"        ""threshold"": ""HIGH""," + "\n" +
@"        ""retry"": {" + "\n" +
@"            ""attempts"": 3" + "\n" +
@"        }" + "\n" +
@"    }," + "\n" +
@"    ""identityRecordMatching"": {" + "\n" +
@"        ""address"": {" + "\n" +
@"            ""fieldRequired"": true," + "\n" +
@"            ""threshold"": ""MEDIUM""" + "\n" +
@"        }," + "\n" +
@"        ""birth_date"": {" + "\n" +
@"            ""fieldRequired"": true," + "\n" +
@"            ""threshold"": ""MEDIUM""" + "\n" +
@"        }," + "\n" +
@"        ""family_name"": {" + "\n" +
@"            ""fieldRequired"": true," + "\n" +
@"            ""threshold"": ""MEDIUM""" + "\n" +
@"        }," + "\n" +
@"        ""given_name"": {" + "\n" +
@"            ""fieldRequired"": true," + "\n" +
@"            ""threshold"": ""MEDIUM""" + "\n" +
@"        }," + "\n" +
@"        ""name"": {" + "\n" +
@"            ""fieldRequired"": false," + "\n" +
@"            ""threshold"": ""MEDIUM""" + "\n" +
@"        }" + "\n" +
@"    }," + "\n" +
@"    ""dataBasedIdentityVerification"": {" + "\n" +
@"        ""threshold"": ""HIGH""" + "\n" +
@"    }," + "\n" +
@"    ""email"": {" + "\n" +
@"        ""verify"": ""REQUIRED""," + "\n" +
@"        ""createMfaDevice"": true," + "\n" +
@"        ""otp"": {" + "\n" +
@"            ""attempts"": {" + "\n" +
@"                ""count"": 5" + "\n" +
@"            }," + "\n" +
@"            ""lifeTime"": {" + "\n" +
@"                ""duration"": 10," + "\n" +
@"                ""timeUnit"": ""MINUTES""" + "\n" +
@"            }," + "\n" +
@"            ""deliveries"": {" + "\n" +
@"                ""count"": 3," + "\n" +
@"                ""cooldown"": {" + "\n" +
@"                    ""duration"": 30," + "\n" +
@"                    ""timeUnit"": ""SECONDS""" + "\n" +
@"                }" + "\n" +
@"            }," + "\n" +
@"            ""notification"": {" + "\n" +
@"                ""templateName"": ""email_phone_verification""" + "\n" +
@"            }" + "\n" +
@"        }" + "\n" +
@"    }," + "\n" +
@"    ""phone"": {" + "\n" +
@"        ""verify"": ""REQUIRED""," + "\n" +
@"        ""createMfaDevice"": true," + "\n" +
@"        ""otp"": {" + "\n" +
@"            ""attempts"": {" + "\n" +
@"                ""count"": 5" + "\n" +
@"            }," + "\n" +
@"            ""lifeTime"": {" + "\n" +
@"                ""duration"": 10," + "\n" +
@"                ""timeUnit"": ""MINUTES""" + "\n" +
@"            }," + "\n" +
@"            ""deliveries"": {" + "\n" +
@"                ""count"": 3," + "\n" +
@"                ""cooldown"": {" + "\n" +
@"                    ""duration"": 30," + "\n" +
@"                    ""timeUnit"": ""SECONDS""" + "\n" +
@"                }" + "\n" +
@"            }," + "\n" +
@"            ""notification"": {" + "\n" +
@"                ""templateName"": ""email_phone_verification""" + "\n" +
@"            }" + "\n" +
@"        }" + "\n" +
@"    }," + "\n" +
@"    ""transaction"": {" + "\n" +
@"        ""timeout"": {" + "\n" +
@"            ""duration"": 30," + "\n" +
@"            ""timeUnit"": ""MINUTES""" + "\n" +
@"        }," + "\n" +
@"        ""dataCollection"": {" + "\n" +
@"            ""timeout"": {" + "\n" +
@"                ""duration"": 15," + "\n" +
@"                ""timeUnit"": ""MINUTES""" + "\n" +
@"            }" + "\n" +
@"        }," + "\n" +
@"        ""dataCollectionOnly"": false" + "\n" +
@"    }" + "\n" +
@"}";
request.AddStringBody(body, DataFormat.Json);
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);
package main

import (
  "fmt"
  "strings"
  "net/http"
  "io"
)

func main() {

  url := "{{apiPath}}/v1/environments/{{envID}}/verifyPolicies"
  method := "POST"

  payload := strings.NewReader(`{
    "name": "Verify everything",
    "description": "All types required",
    "default": false,
    "governmentId": {
        "verify": "REQUIRED",
        "inspectionType": "AUTOMATIC",
        "failExpiredId": "true",
        "retry": {
            "attempts": 3
        },
        "provider": {
            "auto": "VERIFF",
            "manual": "MITEK"
        },
        "verifyAamva": true
    },
    "facialComparison": {
        "verify": "REQUIRED",
        "threshold": "HIGH"
    },
    "liveness": {
        "verify": "REQUIRED",
        "threshold": "HIGH",
        "retry": {
            "attempts": 3
        }
    },
    "identityRecordMatching": {
        "address": {
            "fieldRequired": true,
            "threshold": "MEDIUM"
        },
        "birth_date": {
            "fieldRequired": true,
            "threshold": "MEDIUM"
        },
        "family_name": {
            "fieldRequired": true,
            "threshold": "MEDIUM"
        },
        "given_name": {
            "fieldRequired": true,
            "threshold": "MEDIUM"
        },
        "name": {
            "fieldRequired": false,
            "threshold": "MEDIUM"
        }
    },
    "dataBasedIdentityVerification": {
        "threshold": "HIGH"
    },
    "email": {
        "verify": "REQUIRED",
        "createMfaDevice": true,
        "otp": {
            "attempts": {
                "count": 5
            },
            "lifeTime": {
                "duration": 10,
                "timeUnit": "MINUTES"
            },
            "deliveries": {
                "count": 3,
                "cooldown": {
                    "duration": 30,
                    "timeUnit": "SECONDS"
                }
            },
            "notification": {
                "templateName": "email_phone_verification"
            }
        }
    },
    "phone": {
        "verify": "REQUIRED",
        "createMfaDevice": true,
        "otp": {
            "attempts": {
                "count": 5
            },
            "lifeTime": {
                "duration": 10,
                "timeUnit": "MINUTES"
            },
            "deliveries": {
                "count": 3,
                "cooldown": {
                    "duration": 30,
                    "timeUnit": "SECONDS"
                }
            },
            "notification": {
                "templateName": "email_phone_verification"
            }
        }
    },
    "transaction": {
        "timeout": {
            "duration": 30,
            "timeUnit": "MINUTES"
        },
        "dataCollection": {
            "timeout": {
                "duration": 15,
                "timeUnit": "MINUTES"
            }
        },
        "dataCollectionOnly": false
    }
}`)

  client := &http.Client {
  }
  req, err := http.NewRequest(method, url, payload)

  if err != nil {
    fmt.Println(err)
    return
  }
  req.Header.Add("Content-Type", "application/json")
  req.Header.Add("Authorization", "Bearer {{accessToken}}")

  res, err := client.Do(req)
  if err != nil {
    fmt.Println(err)
    return
  }
  defer res.Body.Close()

  body, err := io.ReadAll(res.Body)
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(string(body))
}
POST /v1/environments/{{envID}}/verifyPolicies HTTP/1.1
Host: {{apiPath}}
Content-Type: application/json
Authorization: Bearer {{accessToken}}

{
    "name": "Verify everything",
    "description": "All types required",
    "default": false,
    "governmentId": {
        "verify": "REQUIRED",
        "inspectionType": "AUTOMATIC",
        "failExpiredId": "true",
        "retry": {
            "attempts": 3
        },
        "provider": {
            "auto": "VERIFF",
            "manual": "MITEK"
        },
        "verifyAamva": true
    },
    "facialComparison": {
        "verify": "REQUIRED",
        "threshold": "HIGH"
    },
    "liveness": {
        "verify": "REQUIRED",
        "threshold": "HIGH",
        "retry": {
            "attempts": 3
        }
    },
    "identityRecordMatching": {
        "address": {
            "fieldRequired": true,
            "threshold": "MEDIUM"
        },
        "birth_date": {
            "fieldRequired": true,
            "threshold": "MEDIUM"
        },
        "family_name": {
            "fieldRequired": true,
            "threshold": "MEDIUM"
        },
        "given_name": {
            "fieldRequired": true,
            "threshold": "MEDIUM"
        },
        "name": {
            "fieldRequired": false,
            "threshold": "MEDIUM"
        }
    },
    "dataBasedIdentityVerification": {
        "threshold": "HIGH"
    },
    "email": {
        "verify": "REQUIRED",
        "createMfaDevice": true,
        "otp": {
            "attempts": {
                "count": 5
            },
            "lifeTime": {
                "duration": 10,
                "timeUnit": "MINUTES"
            },
            "deliveries": {
                "count": 3,
                "cooldown": {
                    "duration": 30,
                    "timeUnit": "SECONDS"
                }
            },
            "notification": {
                "templateName": "email_phone_verification"
            }
        }
    },
    "phone": {
        "verify": "REQUIRED",
        "createMfaDevice": true,
        "otp": {
            "attempts": {
                "count": 5
            },
            "lifeTime": {
                "duration": 10,
                "timeUnit": "MINUTES"
            },
            "deliveries": {
                "count": 3,
                "cooldown": {
                    "duration": 30,
                    "timeUnit": "SECONDS"
                }
            },
            "notification": {
                "templateName": "email_phone_verification"
            }
        }
    },
    "transaction": {
        "timeout": {
            "duration": 30,
            "timeUnit": "MINUTES"
        },
        "dataCollection": {
            "timeout": {
                "duration": 15,
                "timeUnit": "MINUTES"
            }
        },
        "dataCollectionOnly": false
    }
}
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n    \"name\": \"Verify everything\",\n    \"description\": \"All types required\",\n    \"default\": false,\n    \"governmentId\": {\n        \"verify\": \"REQUIRED\",\n        \"inspectionType\": \"AUTOMATIC\",\n        \"failExpiredId\": \"true\",\n        \"retry\": {\n            \"attempts\": 3\n        },\n        \"provider\": {\n            \"auto\": \"VERIFF\",\n            \"manual\": \"MITEK\"\n        },\n        \"verifyAamva\": true\n    },\n    \"facialComparison\": {\n        \"verify\": \"REQUIRED\",\n        \"threshold\": \"HIGH\"\n    },\n    \"liveness\": {\n        \"verify\": \"REQUIRED\",\n        \"threshold\": \"HIGH\",\n        \"retry\": {\n            \"attempts\": 3\n        }\n    },\n    \"identityRecordMatching\": {\n        \"address\": {\n            \"fieldRequired\": true,\n            \"threshold\": \"MEDIUM\"\n        },\n        \"birth_date\": {\n            \"fieldRequired\": true,\n            \"threshold\": \"MEDIUM\"\n        },\n        \"family_name\": {\n            \"fieldRequired\": true,\n            \"threshold\": \"MEDIUM\"\n        },\n        \"given_name\": {\n            \"fieldRequired\": true,\n            \"threshold\": \"MEDIUM\"\n        },\n        \"name\": {\n            \"fieldRequired\": false,\n            \"threshold\": \"MEDIUM\"\n        }\n    },\n    \"dataBasedIdentityVerification\": {\n        \"threshold\": \"HIGH\"\n    },\n    \"email\": {\n        \"verify\": \"REQUIRED\",\n        \"createMfaDevice\": true,\n        \"otp\": {\n            \"attempts\": {\n                \"count\": 5\n            },\n            \"lifeTime\": {\n                \"duration\": 10,\n                \"timeUnit\": \"MINUTES\"\n            },\n            \"deliveries\": {\n                \"count\": 3,\n                \"cooldown\": {\n                    \"duration\": 30,\n                    \"timeUnit\": \"SECONDS\"\n                }\n            },\n            \"notification\": {\n                \"templateName\": \"email_phone_verification\"\n            }\n        }\n    },\n    \"phone\": {\n        \"verify\": \"REQUIRED\",\n        \"createMfaDevice\": true,\n        \"otp\": {\n            \"attempts\": {\n                \"count\": 5\n            },\n            \"lifeTime\": {\n                \"duration\": 10,\n                \"timeUnit\": \"MINUTES\"\n            },\n            \"deliveries\": {\n                \"count\": 3,\n                \"cooldown\": {\n                    \"duration\": 30,\n                    \"timeUnit\": \"SECONDS\"\n                }\n            },\n            \"notification\": {\n                \"templateName\": \"email_phone_verification\"\n            }\n        }\n    },\n    \"transaction\": {\n        \"timeout\": {\n            \"duration\": 30,\n            \"timeUnit\": \"MINUTES\"\n        },\n        \"dataCollection\": {\n            \"timeout\": {\n                \"duration\": 15,\n                \"timeUnit\": \"MINUTES\"\n            }\n        },\n        \"dataCollectionOnly\": false\n    }\n}");
Request request = new Request.Builder()
  .url("{{apiPath}}/v1/environments/{{envID}}/verifyPolicies")
  .method("POST", body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer {{accessToken}}")
  .build();
Response response = client.newCall(request).execute();
var settings = {
  "url": "{{apiPath}}/v1/environments/{{envID}}/verifyPolicies",
  "method": "POST",
  "timeout": 0,
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "Bearer {{accessToken}}"
  },
  "data": JSON.stringify({
    "name": "Verify everything",
    "description": "All types required",
    "default": false,
    "governmentId": {
      "verify": "REQUIRED",
      "inspectionType": "AUTOMATIC",
      "failExpiredId": "true",
      "retry": {
        "attempts": 3
      },
      "provider": {
        "auto": "VERIFF",
        "manual": "MITEK"
      },
      "verifyAamva": true
    },
    "facialComparison": {
      "verify": "REQUIRED",
      "threshold": "HIGH"
    },
    "liveness": {
      "verify": "REQUIRED",
      "threshold": "HIGH",
      "retry": {
        "attempts": 3
      }
    },
    "identityRecordMatching": {
      "address": {
        "fieldRequired": true,
        "threshold": "MEDIUM"
      },
      "birth_date": {
        "fieldRequired": true,
        "threshold": "MEDIUM"
      },
      "family_name": {
        "fieldRequired": true,
        "threshold": "MEDIUM"
      },
      "given_name": {
        "fieldRequired": true,
        "threshold": "MEDIUM"
      },
      "name": {
        "fieldRequired": false,
        "threshold": "MEDIUM"
      }
    },
    "dataBasedIdentityVerification": {
      "threshold": "HIGH"
    },
    "email": {
      "verify": "REQUIRED",
      "createMfaDevice": true,
      "otp": {
        "attempts": {
          "count": 5
        },
        "lifeTime": {
          "duration": 10,
          "timeUnit": "MINUTES"
        },
        "deliveries": {
          "count": 3,
          "cooldown": {
            "duration": 30,
            "timeUnit": "SECONDS"
          }
        },
        "notification": {
          "templateName": "email_phone_verification"
        }
      }
    },
    "phone": {
      "verify": "REQUIRED",
      "createMfaDevice": true,
      "otp": {
        "attempts": {
          "count": 5
        },
        "lifeTime": {
          "duration": 10,
          "timeUnit": "MINUTES"
        },
        "deliveries": {
          "count": 3,
          "cooldown": {
            "duration": 30,
            "timeUnit": "SECONDS"
          }
        },
        "notification": {
          "templateName": "email_phone_verification"
        }
      }
    },
    "transaction": {
      "timeout": {
        "duration": 30,
        "timeUnit": "MINUTES"
      },
      "dataCollection": {
        "timeout": {
          "duration": 15,
          "timeUnit": "MINUTES"
        }
      },
      "dataCollectionOnly": false
    }
  }),
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
var request = require('request');
var options = {
  'method': 'POST',
  'url': '{{apiPath}}/v1/environments/{{envID}}/verifyPolicies',
  'headers': {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer {{accessToken}}'
  },
  body: JSON.stringify({
    "name": "Verify everything",
    "description": "All types required",
    "default": false,
    "governmentId": {
      "verify": "REQUIRED",
      "inspectionType": "AUTOMATIC",
      "failExpiredId": "true",
      "retry": {
        "attempts": 3
      },
      "provider": {
        "auto": "VERIFF",
        "manual": "MITEK"
      },
      "verifyAamva": true
    },
    "facialComparison": {
      "verify": "REQUIRED",
      "threshold": "HIGH"
    },
    "liveness": {
      "verify": "REQUIRED",
      "threshold": "HIGH",
      "retry": {
        "attempts": 3
      }
    },
    "identityRecordMatching": {
      "address": {
        "fieldRequired": true,
        "threshold": "MEDIUM"
      },
      "birth_date": {
        "fieldRequired": true,
        "threshold": "MEDIUM"
      },
      "family_name": {
        "fieldRequired": true,
        "threshold": "MEDIUM"
      },
      "given_name": {
        "fieldRequired": true,
        "threshold": "MEDIUM"
      },
      "name": {
        "fieldRequired": false,
        "threshold": "MEDIUM"
      }
    },
    "dataBasedIdentityVerification": {
      "threshold": "HIGH"
    },
    "email": {
      "verify": "REQUIRED",
      "createMfaDevice": true,
      "otp": {
        "attempts": {
          "count": 5
        },
        "lifeTime": {
          "duration": 10,
          "timeUnit": "MINUTES"
        },
        "deliveries": {
          "count": 3,
          "cooldown": {
            "duration": 30,
            "timeUnit": "SECONDS"
          }
        },
        "notification": {
          "templateName": "email_phone_verification"
        }
      }
    },
    "phone": {
      "verify": "REQUIRED",
      "createMfaDevice": true,
      "otp": {
        "attempts": {
          "count": 5
        },
        "lifeTime": {
          "duration": 10,
          "timeUnit": "MINUTES"
        },
        "deliveries": {
          "count": 3,
          "cooldown": {
            "duration": 30,
            "timeUnit": "SECONDS"
          }
        },
        "notification": {
          "templateName": "email_phone_verification"
        }
      }
    },
    "transaction": {
      "timeout": {
        "duration": 30,
        "timeUnit": "MINUTES"
      },
      "dataCollection": {
        "timeout": {
          "duration": 15,
          "timeUnit": "MINUTES"
        }
      },
      "dataCollectionOnly": false
    }
  })

};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});
import requests
import json

url = "{{apiPath}}/v1/environments/{{envID}}/verifyPolicies"

payload = json.dumps({
  "name": "Verify everything",
  "description": "All types required",
  "default": False,
  "governmentId": {
    "verify": "REQUIRED",
    "inspectionType": "AUTOMATIC",
    "failExpiredId": "true",
    "retry": {
      "attempts": 3
    },
    "provider": {
      "auto": "VERIFF",
      "manual": "MITEK"
    },
    "verifyAamva": True
  },
  "facialComparison": {
    "verify": "REQUIRED",
    "threshold": "HIGH"
  },
  "liveness": {
    "verify": "REQUIRED",
    "threshold": "HIGH",
    "retry": {
      "attempts": 3
    }
  },
  "identityRecordMatching": {
    "address": {
      "fieldRequired": True,
      "threshold": "MEDIUM"
    },
    "birth_date": {
      "fieldRequired": True,
      "threshold": "MEDIUM"
    },
    "family_name": {
      "fieldRequired": True,
      "threshold": "MEDIUM"
    },
    "given_name": {
      "fieldRequired": True,
      "threshold": "MEDIUM"
    },
    "name": {
      "fieldRequired": False,
      "threshold": "MEDIUM"
    }
  },
  "dataBasedIdentityVerification": {
    "threshold": "HIGH"
  },
  "email": {
    "verify": "REQUIRED",
    "createMfaDevice": True,
    "otp": {
      "attempts": {
        "count": 5
      },
      "lifeTime": {
        "duration": 10,
        "timeUnit": "MINUTES"
      },
      "deliveries": {
        "count": 3,
        "cooldown": {
          "duration": 30,
          "timeUnit": "SECONDS"
        }
      },
      "notification": {
        "templateName": "email_phone_verification"
      }
    }
  },
  "phone": {
    "verify": "REQUIRED",
    "createMfaDevice": True,
    "otp": {
      "attempts": {
        "count": 5
      },
      "lifeTime": {
        "duration": 10,
        "timeUnit": "MINUTES"
      },
      "deliveries": {
        "count": 3,
        "cooldown": {
          "duration": 30,
          "timeUnit": "SECONDS"
        }
      },
      "notification": {
        "templateName": "email_phone_verification"
      }
    }
  },
  "transaction": {
    "timeout": {
      "duration": 30,
      "timeUnit": "MINUTES"
    },
    "dataCollection": {
      "timeout": {
        "duration": 15,
        "timeUnit": "MINUTES"
      }
    },
    "dataCollectionOnly": False
  }
})
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('{{apiPath}}/v1/environments/{{envID}}/verifyPolicies');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setHeader(array(
  'Content-Type' => 'application/json',
  'Authorization' => 'Bearer {{accessToken}}'
));
$request->setBody('{\n    "name": "Verify everything",\n    "description": "All types required",\n    "default": false,\n    "governmentId": {\n        "verify": "REQUIRED",\n        "inspectionType": "AUTOMATIC",\n        "failExpiredId": "true",\n        "retry": {\n            "attempts": 3\n        },\n        "provider": {\n            "auto": "VERIFF",\n            "manual": "MITEK"\n        },\n        "verifyAamva": true\n    },\n    "facialComparison": {\n        "verify": "REQUIRED",\n        "threshold": "HIGH"\n    },\n    "liveness": {\n        "verify": "REQUIRED",\n        "threshold": "HIGH",\n        "retry": {\n            "attempts": 3\n        }\n    },\n    "identityRecordMatching": {\n        "address": {\n            "fieldRequired": true,\n            "threshold": "MEDIUM"\n        },\n        "birth_date": {\n            "fieldRequired": true,\n            "threshold": "MEDIUM"\n        },\n        "family_name": {\n            "fieldRequired": true,\n            "threshold": "MEDIUM"\n        },\n        "given_name": {\n            "fieldRequired": true,\n            "threshold": "MEDIUM"\n        },\n        "name": {\n            "fieldRequired": false,\n            "threshold": "MEDIUM"\n        }\n    },\n    "dataBasedIdentityVerification": {\n        "threshold": "HIGH"\n    },\n    "email": {\n        "verify": "REQUIRED",\n        "createMfaDevice": true,\n        "otp": {\n            "attempts": {\n                "count": 5\n            },\n            "lifeTime": {\n                "duration": 10,\n                "timeUnit": "MINUTES"\n            },\n            "deliveries": {\n                "count": 3,\n                "cooldown": {\n                    "duration": 30,\n                    "timeUnit": "SECONDS"\n                }\n            },\n            "notification": {\n                "templateName": "email_phone_verification"\n            }\n        }\n    },\n    "phone": {\n        "verify": "REQUIRED",\n        "createMfaDevice": true,\n        "otp": {\n            "attempts": {\n                "count": 5\n            },\n            "lifeTime": {\n                "duration": 10,\n                "timeUnit": "MINUTES"\n            },\n            "deliveries": {\n                "count": 3,\n                "cooldown": {\n                    "duration": 30,\n                    "timeUnit": "SECONDS"\n                }\n            },\n            "notification": {\n                "templateName": "email_phone_verification"\n            }\n        }\n    },\n    "transaction": {\n        "timeout": {\n            "duration": 30,\n            "timeUnit": "MINUTES"\n        },\n        "dataCollection": {\n            "timeout": {\n                "duration": 15,\n                "timeUnit": "MINUTES"\n            }\n        },\n        "dataCollectionOnly": false\n    }\n}');
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
require "uri"
require "json"
require "net/http"

url = URI("{{apiPath}}/v1/environments/{{envID}}/verifyPolicies")

http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer {{accessToken}}"
request.body = JSON.dump({
  "name": "Verify everything",
  "description": "All types required",
  "default": false,
  "governmentId": {
    "verify": "REQUIRED",
    "inspectionType": "AUTOMATIC",
    "failExpiredId": "true",
    "retry": {
      "attempts": 3
    },
    "provider": {
      "auto": "VERIFF",
      "manual": "MITEK"
    },
    "verifyAamva": true
  },
  "facialComparison": {
    "verify": "REQUIRED",
    "threshold": "HIGH"
  },
  "liveness": {
    "verify": "REQUIRED",
    "threshold": "HIGH",
    "retry": {
      "attempts": 3
    }
  },
  "identityRecordMatching": {
    "address": {
      "fieldRequired": true,
      "threshold": "MEDIUM"
    },
    "birth_date": {
      "fieldRequired": true,
      "threshold": "MEDIUM"
    },
    "family_name": {
      "fieldRequired": true,
      "threshold": "MEDIUM"
    },
    "given_name": {
      "fieldRequired": true,
      "threshold": "MEDIUM"
    },
    "name": {
      "fieldRequired": false,
      "threshold": "MEDIUM"
    }
  },
  "dataBasedIdentityVerification": {
    "threshold": "HIGH"
  },
  "email": {
    "verify": "REQUIRED",
    "createMfaDevice": true,
    "otp": {
      "attempts": {
        "count": 5
      },
      "lifeTime": {
        "duration": 10,
        "timeUnit": "MINUTES"
      },
      "deliveries": {
        "count": 3,
        "cooldown": {
          "duration": 30,
          "timeUnit": "SECONDS"
        }
      },
      "notification": {
        "templateName": "email_phone_verification"
      }
    }
  },
  "phone": {
    "verify": "REQUIRED",
    "createMfaDevice": true,
    "otp": {
      "attempts": {
        "count": 5
      },
      "lifeTime": {
        "duration": 10,
        "timeUnit": "MINUTES"
      },
      "deliveries": {
        "count": 3,
        "cooldown": {
          "duration": 30,
          "timeUnit": "SECONDS"
        }
      },
      "notification": {
        "templateName": "email_phone_verification"
      }
    }
  },
  "transaction": {
    "timeout": {
      "duration": 30,
      "timeUnit": "MINUTES"
    },
    "dataCollection": {
      "timeout": {
        "duration": 15,
        "timeUnit": "MINUTES"
      }
    },
    "dataCollectionOnly": false
  }
})

response = http.request(request)
puts response.read_body
let parameters = "{\n    \"name\": \"Verify everything\",\n    \"description\": \"All types required\",\n    \"default\": false,\n    \"governmentId\": {\n        \"verify\": \"REQUIRED\",\n        \"inspectionType\": \"AUTOMATIC\",\n        \"failExpiredId\": \"true\",\n        \"retry\": {\n            \"attempts\": 3\n        },\n        \"provider\": {\n            \"auto\": \"VERIFF\",\n            \"manual\": \"MITEK\"\n        },\n        \"verifyAamva\": true\n    },\n    \"facialComparison\": {\n        \"verify\": \"REQUIRED\",\n        \"threshold\": \"HIGH\"\n    },\n    \"liveness\": {\n        \"verify\": \"REQUIRED\",\n        \"threshold\": \"HIGH\",\n        \"retry\": {\n            \"attempts\": 3\n        }\n    },\n    \"identityRecordMatching\": {\n        \"address\": {\n            \"fieldRequired\": true,\n            \"threshold\": \"MEDIUM\"\n        },\n        \"birth_date\": {\n            \"fieldRequired\": true,\n            \"threshold\": \"MEDIUM\"\n        },\n        \"family_name\": {\n            \"fieldRequired\": true,\n            \"threshold\": \"MEDIUM\"\n        },\n        \"given_name\": {\n            \"fieldRequired\": true,\n            \"threshold\": \"MEDIUM\"\n        },\n        \"name\": {\n            \"fieldRequired\": false,\n            \"threshold\": \"MEDIUM\"\n        }\n    },\n    \"dataBasedIdentityVerification\": {\n        \"threshold\": \"HIGH\"\n    },\n    \"email\": {\n        \"verify\": \"REQUIRED\",\n        \"createMfaDevice\": true,\n        \"otp\": {\n            \"attempts\": {\n                \"count\": 5\n            },\n            \"lifeTime\": {\n                \"duration\": 10,\n                \"timeUnit\": \"MINUTES\"\n            },\n            \"deliveries\": {\n                \"count\": 3,\n                \"cooldown\": {\n                    \"duration\": 30,\n                    \"timeUnit\": \"SECONDS\"\n                }\n            },\n            \"notification\": {\n                \"templateName\": \"email_phone_verification\"\n            }\n        }\n    },\n    \"phone\": {\n        \"verify\": \"REQUIRED\",\n        \"createMfaDevice\": true,\n        \"otp\": {\n            \"attempts\": {\n                \"count\": 5\n            },\n            \"lifeTime\": {\n                \"duration\": 10,\n                \"timeUnit\": \"MINUTES\"\n            },\n            \"deliveries\": {\n                \"count\": 3,\n                \"cooldown\": {\n                    \"duration\": 30,\n                    \"timeUnit\": \"SECONDS\"\n                }\n            },\n            \"notification\": {\n                \"templateName\": \"email_phone_verification\"\n            }\n        }\n    },\n    \"transaction\": {\n        \"timeout\": {\n            \"duration\": 30,\n            \"timeUnit\": \"MINUTES\"\n        },\n        \"dataCollection\": {\n            \"timeout\": {\n                \"duration\": 15,\n                \"timeUnit\": \"MINUTES\"\n            }\n        },\n        \"dataCollectionOnly\": false\n    }\n}"
let postData = parameters.data(using: .utf8)

var request = URLRequest(url: URL(string: "{{apiPath}}/v1/environments/{{envID}}/verifyPolicies")!,timeoutInterval: Double.infinity)
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("Bearer {{accessToken}}", forHTTPHeaderField: "Authorization")

request.httpMethod = "POST"
request.httpBody = postData

let task = URLSession.shared.dataTask(with: request) { data, response, error in
  guard let data = data else {
    print(String(describing: error))
    return
  }
  print(String(data: data, encoding: .utf8)!)
}

task.resume()

Example Response

201 Created

{
    "_links": {
        "self": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/verifyPolicies/80c3f3c3-1099-4ff3-967e-dc35e742aa63"
        },
        "environment": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
        },
        "notificationTemplates": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/templates/email_phone_verification"
        }
    },
    "id": "80c3f3c3-1099-4ff3-967e-dc35e742aa63",
    "environment": {
        "id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
    },
    "name": "Verify everything",
    "description": "All types required",
    "default": false,
    "governmentId": {
        "verify": "REQUIRED",
        "inspectionType": "AUTOMATIC",
        "failExpiredId": true,
        "retry": {
            "attempts": 3
        },
        "provider": {
            "auto": "VERIFF",
            "manual": "MITEK"
        },
        "verifyAamva": true,
        "documentImages": {
            "enabled": true
        }
    },
    "facialComparison": {
        "verify": "REQUIRED",
        "threshold": "HIGH"
    },
    "liveness": {
        "verify": "REQUIRED",
        "threshold": "HIGH",
        "retry": {
            "attempts": 3
        }
    },
    "email": {
        "verify": "REQUIRED",
        "createMfaDevice": true,
        "otp": {
            "attempts": {
                "count": 5
            },
            "lifeTime": {
                "duration": 10,
                "timeUnit": "MINUTES"
            },
            "deliveries": {
                "count": 3,
                "cooldown": {
                    "duration": 30,
                    "timeUnit": "SECONDS"
                }
            },
            "notification": {
                "templateName": "email_phone_verification"
            }
        }
    },
    "phone": {
        "verify": "REQUIRED",
        "createMfaDevice": true,
        "otp": {
            "attempts": {
                "count": 5
            },
            "lifeTime": {
                "duration": 10,
                "timeUnit": "MINUTES"
            },
            "deliveries": {
                "count": 3,
                "cooldown": {
                    "duration": 30,
                    "timeUnit": "SECONDS"
                }
            },
            "notification": {
                "templateName": "email_phone_verification"
            }
        }
    },
    "transaction": {
        "timeout": {
            "duration": 30,
            "timeUnit": "MINUTES"
        },
        "dataCollection": {
            "timeout": {
                "duration": 15,
                "timeUnit": "MINUTES"
            }
        },
        "dataCollectionOnly": false,
        "authenticationMode": false
    },
    "verifiableCredential": {
        "verify": "DISABLED",
        "protocol": "NATIVE"
    },
    "identityRecordMatching": {
        "address": {
            "threshold": "MEDIUM",
            "fieldRequired": true
        },
        "birth_date": {
            "threshold": "MEDIUM",
            "fieldRequired": true
        },
        "family_name": {
            "threshold": "MEDIUM",
            "fieldRequired": true
        },
        "given_name": {
            "threshold": "MEDIUM",
            "fieldRequired": true
        },
        "name": {
            "threshold": "MEDIUM",
            "fieldRequired": false
        }
    },
    "dataBasedIdentityVerification": {
        "threshold": "HIGH"
    },
    "createdAt": "2025-08-12T20:23:14.930Z",
    "updatedAt": "2025-08-12T20:23:14.942Z",
    "systemProvided": false
}

Example Response

201 Created

{
    "_links": {
        "self": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/verifyPolicies/60ee17a9-611e-4281-88b8-32acf451220b"
        },
        "environment": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
        },
        "notificationTemplates": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/templates/email_phone_verification"
        }
    },
    "id": "60ee17a9-611e-4281-88b8-32acf451220b",
    "environment": {
        "id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
    },
    "name": "Verify everything",
    "description": "All types required",
    "default": false,
    "governmentId": {
        "verify": "REQUIRED",
        "inspectionType": "AUTOMATIC",
        "failExpiredId": true,
        "retry": {
            "attempts": 3
        },
        "provider": {
            "auto": "VERIFF",
            "manual": "MITEK"
        },
        "verifyAamva": true,
        "documentImages": {
           "enabled": true
        }
    },
    "facialComparison": {
        "verify": "REQUIRED",
        "threshold": "HIGH"
    },
    "liveness": {
        "verify": "REQUIRED",
        "threshold": "HIGH",
        "retry": {
            "attempts": 3
        }
    },
    "email": {
        "verify": "REQUIRED",
        "createMfaDevice": true,
        "otp": {
            "attempts": {
                "count": 5
            },
            "lifeTime": {
                "duration": 10,
                "timeUnit": "MINUTES"
            },
            "deliveries": {
                "count": 3,
                "cooldown": {
                    "duration": 30,
                    "timeUnit": "SECONDS"
                }
            },
            "notification": {
                "templateName": "email_phone_verification"
            }
        }
    },
    "phone": {
        "verify": "REQUIRED",
        "createMfaDevice": true,
        "otp": {
            "attempts": {
                "count": 5
            },
            "lifeTime": {
                "duration": 10,
                "timeUnit": "MINUTES"
            },
            "deliveries": {
                "count": 3,
                "cooldown": {
                    "duration": 30,
                    "timeUnit": "SECONDS"
                }
            },
            "notification": {
                "templateName": "email_phone_verification"
            }
        }
    },
    "transaction": {
        "timeout": {
            "duration": 30,
            "timeUnit": "MINUTES"
        },
        "dataCollection": {
            "timeout": {
                "duration": 15,
                "timeUnit": "MINUTES"
            }
        },
        "ida": {
            "enabled": true
        },
        "dataCollectionOnly": false
    },
    "verifiableCredential": {
        "verify": "DISABLED",
        "protocol": "NATIVE"
    },
    "createdAt": "2025-01-03T14:48:37.946Z",
    "updatedAt": "2025-01-03T14:48:37.963Z"
}

Example Response

201 Created

{
    "_links": {
        "self": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/verifyPolicies/fec27b2c-a1be-4c96-9eed-f0de64ad6408"
        },
        "environment": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
        }
    },
    "id": "fec27b2c-a1be-4c96-9eed-f0de64ad6408",
    "environment": {
        "id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
    },
    "name": "Verify everything",
    "description": "All types required",
    "default": false,
    "governmentId": {
        "verify": "REQUIRED",
        "inspectionType": "AUTOMATIC",
        "retry": {
            "attempts": 3
        },
        "provider": {
            "auto": "MITEK",
            "manual": "MITEK"
        },
        "documentImages": {
            "enabled": true
        }
    },
    "facialComparison": {
        "verify": "REQUIRED",
        "threshold": "HIGH"
    },
    "liveness": {
        "verify": "REQUIRED",
        "threshold": "HIGH",
        "retry": {
            "attempts": 3
        }
    },
    "email": {
        "verify": "REQUIRED",
        "createMfaDevice": true,
        "otp": {
            "attempts": {
                "count": 5
            },
            "lifeTime": {
                "duration": 10,
                "timeUnit": "MINUTES"
            },
            "deliveries": {
                "count": 3,
                "cooldown": {
                    "duration": 30,
                    "timeUnit": "SECONDS"
                }
            },
            "notification": {
                "templateName": "email_phone_verification"
            }
        }
    },
    "phone": {
        "verify": "REQUIRED",
        "createMfaDevice": true,
        "otp": {
            "attempts": {
                "count": 5
            },
            "lifeTime": {
                "duration": 10,
                "timeUnit": "MINUTES"
            },
            "deliveries": {
                "count": 3,
                "cooldown": {
                    "duration": 30,
                    "timeUnit": "SECONDS"
                }
            },
            "notification": {
                "templateName": "email_phone_verification"
            }
        }
    },
    "transaction": {
        "timeout": {
            "duration": 30,
            "timeUnit": "MINUTES"
        },
        "dataCollection": {
            "timeout": {
                "duration": 15,
                "timeUnit": "MINUTES"
            }
        },
        "dataCollectionOnly": false
    },
    "verifiableCredential": {
        "verify": "DISABLED",
        "protocol": "NATIVE"
    },
    "createdAt": "2024-04-10T20:26:06.326Z",
    "updatedAt": "2024-04-10T20:26:06.330Z"
}

Example Response

201 Created

{
    "_links": {
        "self": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/verifyPolicies/5c5989a3-c167-444e-9321-b73a28df9e1b"
        },
        "environment": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
        }
    },
    "id": "5c5989a3-c167-444e-9321-b73a28df9e1b",
    "environment": {
        "id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
    },
    "name": "Verify Policy Use GovId - Aadhaar",
    "description": "Require Aadhaar ID.",
    "default": false,
    "governmentId": {
        "verify": "REQUIRED",
        "inspectionType": "AUTOMATIC",
        "failExpiredId": false,
        "provider": {
            "auto": "MITEK",
            "manual": "MITEK"
        },
        "verifyAamva": true,
        "aadhaar": {
            "enabled": true
        },
        "documentImages": {
            "enabled": true
        }
    },
    "facialComparison": {
        "verify": "REQUIRED",
        "threshold": "HIGH"
    },
    "liveness": {
        "verify": "REQUIRED",
        "threshold": "HIGH",
        "retry": {
            "attempts": 1
        }
    },
    "email": {
        "verify": "DISABLED",
        "createMfaDevice": false,
        "otp": {
            "attempts": {
                "count": 5
            },
            "lifeTime": {
                "duration": 10,
                "timeUnit": "MINUTES"
            },
            "deliveries": {
                "count": 3,
                "cooldown": {
                    "duration": 30,
                    "timeUnit": "SECONDS"
                }
            },
            "notification": {
                "templateName": "email_phone_verification"
            }
        }
    },
    "phone": {
        "verify": "DISABLED",
        "createMfaDevice": false,
        "otp": {
            "attempts": {
                "count": 5
            },
            "lifeTime": {
                "duration": 10,
                "timeUnit": "MINUTES"
            },
            "deliveries": {
                "count": 3,
                "cooldown": {
                    "duration": 30,
                    "timeUnit": "SECONDS"
                }
            },
            "notification": {
                "templateName": "email_phone_verification"
            }
        }
    },
    "transaction": {
        "timeout": {
            "duration": 30,
            "timeUnit": "MINUTES"
        },
        "dataCollection": {
            "timeout": {
                "duration": 15,
                "timeUnit": "MINUTES"
            }
        },
        "ida": {
            "enabled": true
        },
        "dataCollectionOnly": false
    },
    "verifiableCredential": {
        "verify": "DISABLED",
        "protocol": "NATIVE"
    },
    "createdAt": "2025-04-21T18:16:50.040Z",
    "updatedAt": "2025-04-21T18:16:50.044Z"
}