PingOne Platform APIs

Create Verify Policy

 

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

Create a new verify policy for the specified environment with the POST {{apiPath}}/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?

default

Boolean

Optional

description

String

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

governmentId - Government identification document configuration object

Property Type Required?

aadhaar

Object

Optional

aadhaar.enabled

Boolean

Optional

aadhaar.otp

Object

Optional

aadhaar.otp.
deliveries

Object

Required

aadhaar.otp.
deliveries.
coolDown

Object

Required

aadhaar.otp.
deliveries.
coolDown.
duration

Integer

Required

aadhaar.otp.
deliveries.
coolDown.
timeUnit

String

Required

aadhaar.otp.
deliveries.
count

Integer

Required

failExpiredId

Boolean

Optional

inspectionType

String

Optional

provider.auto

String

Optional

provider.manual

String

Optional

retry.attempts

Integer

Optional

verify

String

Required

verifyAamva

Boolean

Optional

facialComparison - Facial comparison configuration object

Property Type Required?

threshold

String

Required

verify

String

Required

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

dataBasedIdentityVerification - Data-based identity verification configuration object

Property Type Required? Mutable? Description

threshold

String

Optional

liveness - Liveness configuration object

Property Type Required?

retry.attempts

Integer

Optional

threshold

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

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

timeout

Object

Optional

timeout.
duration

Integer

Required

timeout.
timeUnit

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}}/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}}/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}}/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 /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}}/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}}/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}}/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}}/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}}/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}}/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}}/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
    },
    "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"
            }
        }
    },
    "voice": {
        "verify": "DISABLED",
        "enrollment": false,
        "textDependent": {
            "samples": 3,
            "phrase": {
                "id": "exceptional_experiences"
            }
        },
        "comparison": {
            "threshold": "MEDIUM"
        },
        "liveness": {
            "threshold": "MEDIUM"
        },
        "referenceData": {
            "retainOriginalRecordings": false,
            "updateOnReenrollment": true,
            "updateOnVerification": true
        }
    },
    "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/2b85040d-581c-49b3-b982-eec155463204"
        },
        "environment": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
        }
    },
    "id": "2b85040d-581c-49b3-b982-eec155463204",
    "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
    },
    "facialComparison": {
        "verify": "REQUIRED",
        "threshold": "HIGH"
    },
    "liveness": {
        "verify": "REQUIRED",
        "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"
            }
        }
    },
    "voice": {
        "verify": "DISABLED",
        "enrollment": false,
        "textDependent": {
            "samples": 3,
            "phrase": {
                "id": "exceptional_experiences"
            }
        },
        "comparison": {
            "threshold": "MEDIUM"
        },
        "liveness": {
            "threshold": "MEDIUM"
        },
        "referenceData": {
            "retainOriginalRecordings": false,
            "updateOnReenrollment": true,
            "updateOnVerification": true
        }
    },
    "transaction": {
        "timeout": {
            "duration": 30,
            "timeUnit": "MINUTES"
        },
        "dataCollection": {
            "timeout": {
                "duration": 15,
                "timeUnit": "MINUTES"
            }
        },
        "dataCollectionOnly": false
    },
    "verifiableCredential": {
        "verify": "DISABLED",
        "protocol": "NATIVE"
    },
    "createdAt": "2024-04-08T12:58:19.702Z",
    "updatedAt": "2024-04-08T12:58:19.709Z"
}

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"
        }
    },
    "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"
            }
        }
    },
    "voice": {
        "verify": "DISABLED",
        "enrollment": false,
        "textDependent": {
            "samples": 3,
            "phrase": {
                "id": "exceptional_experiences"
            }
        },
        "comparison": {
            "threshold": "MEDIUM"
        },
        "liveness": {
            "threshold": "MEDIUM"
        },
        "referenceData": {
            "retainOriginalRecordings": false,
            "updateOnReenrollment": true,
            "updateOnVerification": true
        }
    },
    "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,
            "otp": {
                "deliveries": {
                    "count": 3,
                    "cooldown": {
                        "duration": 60,
                        "timeUnit": "SECONDS"
                    }
                }
            }
        }
    },
    "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"
            }
        }
    },
    "voice": {
        "verify": "DISABLED",
        "enrollment": false,
        "textDependent": {
            "samples": 3,
            "phrase": {
                "id": "exceptional_experiences"
            }
        },
        "comparison": {
            "threshold": "MEDIUM"
        },
        "liveness": {
            "threshold": "MEDIUM"
        },
        "referenceData": {
            "retainOriginalRecordings": false,
            "updateOnReenrollment": true,
            "updateOnVerification": true
        }
    },
    "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"
}