POST /identity_verification/create

Create a new Identity Verification for the user specified by the client_user_id field. The requirements and behavior of the verification are determined by the template_id provided. If you don't know whether the associated user already has an active Identity Verification, you can specify "is_idempotent": true in the request body. With idempotency enabled, a new Identity Verification will only be created if one does not already exist for the associated client_user_id and template_id. If an Identity Verification is found, it will be returned unmodified with an 200 OK HTTP status code.

You can also use this endpoint to supply information you already have collected about the user; if any of these fields are specified, the screens prompting the user to enter them will be skipped during the Link flow.

Servers

Request headers

Name Type Required Description
Content-Type String Yes The media type of the request body.

Default value: "application/json"

Request body fields

Name Type Required Description
is_idempotent Boolean No

An optional flag specifying how you would like Plaid to handle attempts to create an Identity Verification when an Identity Verification already exists for the provided client_user_id and template_id. If idempotency is enabled, Plaid will return the existing Identity Verification. If idempotency is disabled, Plaid will reject the request with a 400 Bad Request status code if an Identity Verification already exists for the supplied client_user_id and template_id.

client_id String No

Your Plaid API client_id. The client_id is required and may be provided either in the PLAID-CLIENT-ID header or as part of a request body.

user Object No

User information collected outside of Link, most likely via your own onboarding process.

Each of the following identity fields are optional:

email_address

phone_number

date_of_birth

name

address

id_number

Specifically, these fields are optional in that they can either be fully provided (satisfying every required field in their subschema) or omitted from the request entirely by not providing the key or value. Providing these fields via the API will result in Link skipping the data collection process for the associated user. All verification steps enabled in the associated Identity Verification Template will still be run. Verification steps will either be run immediately, or once the user completes the accept_tos step, depending on the value provided to the gave_consent field. If you are not using the shareable URL feature, you can optionally provide these fields via /link/token/create instead; both /identity_verification/create and /link/token/create are valid ways to provide this information. Note that if you provide a non-null user data object via /identity_verification/create, any user data fields entered via /link/token/create for the same client_user_id will be ignored when prefilling Link.

user.date_of_birth String No

A date in the format YYYY-MM-DD (RFC 3339 Section 5.6).

user.name Object No

You can use this field to pre-populate the user's legal name; if it is provided here, they will not be prompted to enter their name in the identity verification attempt.

user.name.family_name String Yes

A string with at least one non-whitespace character, with a max length of 100 characters.

user.name.given_name String Yes

A string with at least one non-whitespace character, with a max length of 100 characters.

user.email_address String No

A valid email address. Must not have leading or trailing spaces and address must be RFC compliant. For more information, see RFC 3696.

user.id_number Object No

ID number submitted by the user, currently used only for the Identity Verification product. If the user has not submitted this data yet, this field will be null. Otherwise, both fields are guaranteed to be filled.

user.id_number.type String Yes

A globally unique and human readable ID type, specific to the country and document category. For more context on this field, see Hybrid Input Validation.

Possible values:

  • "sg_nric"
  • "se_pin"
  • "cl_run"
  • "ke_huduma_namba"
  • "ca_sin"
  • "es_nie"
  • "za_smart_id"
  • "ng_nin"
  • "es_dni"
  • "om_civil_id"
  • "ar_dni"
  • "jo_civil_id"
  • "kw_civil_id"
  • "mx_rfc"
  • "eg_national_id"
  • "dk_cpr"
  • "jp_my_number"
  • "in_pan"
  • "nz_drivers_license"
  • "tr_tc_kimlik"
  • "cn_resident_card"
  • "mx_curp"
  • "br_cpf"
  • "sa_national_id"
  • "us_ssn_last_4"
  • "au_passport"
  • "co_nit"
  • "ph_psn"
  • "hk_hkid"
  • "pl_pesel"
  • "my_nric"
  • "ro_cnp"
  • "us_ssn"
  • "it_cf"
  • "au_drivers_license"
user.id_number.value String Yes

Value of identity document value typed in by user. Alpha-numeric, with all formatting characters stripped. For specific format requirements by ID type, see Hybrid Input Validation.

user.address Object No

Home address for the user. Supported values are: not provided, address with only country code or full address.

For more context on this field, see Input Validation by Country.

user.address.street2 String No

Extra street information, like an apartment or suite number. If provided, a string with at least one non-whitespace character, with a max length of 50 characters.

user.address.region String No

An ISO 3166-2 subdivision code. Related terms would be "state", "province", "prefecture", "zone", "subdivision", etc.

user.address.postal_code String No

The postal code for the associated address. Between 2 and 10 alphanumeric characters. For US-based addresses this must be 5 numeric digits.

user.address.country String Yes

Valid, capitalized, two-letter ISO code representing the country of this object. Must be in ISO 3166-1 alpha-2 form.

user.address.street String No

The primary street portion of an address. If an address is provided, this field will always be filled. A string with at least one non-whitespace alphabetical character, with a max length of 80 characters.

user.address.city String No

City from the end user's address. A string with at least one non-whitespace alphabetical character, with a max length of 100 characters."

user.client_user_id String No

Specifying user.client_user_id is deprecated. Please provide client_user_id at the root level instead.

user.phone_number String No

A valid phone number in E.164 format.

gave_consent Boolean Yes

A flag specifying whether the end user has already agreed to a privacy policy specifying that their data will be shared with Plaid for verification purposes.

If gave_consent is set to true, the accept_tos step will be marked as skipped and the end user's session will start at the next step requirement.

Default value: false

is_shareable Boolean Yes

A flag specifying whether you would like Plaid to expose a shareable URL for the verification being created.

client_user_id String No

A unique ID that identifies the end user in your system. This ID can also be used to associate user-specific data from other Plaid products. Financial Account Matching requires this field and the /link/token/create client_user_id to be consistent. Personally identifiable information, such as an email address or phone number, should not be used in the client_user_id.

secret String No

Your Plaid API secret. The secret is required and may be provided either in the PLAID-SECRET header or as part of a request body.

template_id String Yes

ID of the associated Identity Verification template.

How to start integrating

  1. Add HTTP Task to your workflow definition.
  2. Search for the API you want to integrate with and click on the name.
    • This loads the API reference documentation and prepares the Http request settings.
  3. Click Test request to test run your request to the API and see the API's response.