DocumentationAPI Reference
Help CenterAPI ChangelogOpenAPI SpecStatus
Documentation

Parameters

Creating inquiries

The most common way to set up the embedded flow is to specify a templateId. This will create a new inquiry on every visit.

Optionally, you can connect new inquiries to an account. To connect the inquiry to an account, specify either referenceId or accountId. You cannot specify both.

For more details on the callback parameters, see Client Callbacks.

🚧

Deprecated attributes in v4

Deprecated attributes are planned to be removed or replaced in a future major version (persona@5). They will continue to work in the immediate future.

If you are on persona@3, view our migration guide for a list of changes.

ParametersRequirementDescription
templateId or templateVersionIdRequiredThis template ID corresponds to a pre-set configuration and determines how the flow is customized.

If using Dynamic Flow Templates, a version ID can be passed instead.
themeIdPass a specific theme to be used.
environmentThe Persona API environment on which to create inquiries. For sandbox and production, use sandbox and production respectively.
referenceIdYou can generate and provide a unique ID which we will associate with the inquiry. The identifier can be used to monitor user progress in newly created inquiries. Inquiries with the same reference ID will be grouped under a single account.
accountIdID of the account to associate newly created inquiries with.
languageSpecify a supported language to localize the flow. Language will be inferred from browser settings by default.

See Languages.
fieldsProvide an object to set inquiry field values. Each attribute in the object is optional.

If using Dynamic Flow Templates, will also prefill form inputs in the flow.

See Fields documentation.
prefill Deprecated. Provide an object to prefill form inputs in the flow. Each attribute in the object is optional. See Prefill documentation.
onLoadA function that is called when the Persona module has finished loading, but before the inquiry flow UI is ready for user interaction.

Calls to open() prior to the onLoad callback will still open the flow, and a loading spinner will be shown.
onReadyA function that is called when the inquiry has finished loading and is ready for user interaction. Will always be called after onLoad.
onCancelA function that is called when an individual has specifically exited the flow without completing.

The function should expect two arguments, the inquiry ID and a sessionToken for resuming.
onCompleteA function that is called when an individual completes the inquiry flow (passed or failed). It is passed the inquiry ID, status, and fields.
onErrorA function that is called when an error occurs in the flow.
onEventA function that is called when an individual reaches certain points in the inquiry flow. The function should expect two arguments, an eventName string and a metadata object which contains event-specific values.
frameAncestorsShould only be used if your page integrating Persona's iframe is itself embedded into another page as an iframe. If this matches your use case, you must pass an array of origins for ALL frames that are ancestors of the Persona iframe.

Allows specifying additional origins for CSP purposes. Values should include both protocol and host (e.g. https://withpersona.com).

Defaults to ['window.location.origin'].
frameHeightControl the height of the Persona widget iframe. Values must be valid CSS size strings.
frameWidthControl the height of the Persona widget iframe. Values must be valid CSS size strings. Size cannot exceed 768px.
messageTargetOriginShould only be used if your page integrating Persona's iframe is itself embedded into another page as an iframe. If this matches your use case, you must pass your page's domain here.

Allows specifying a custom target for window.postMessage, to allow the Persona web application to communicate with the Persona iframe.

Defaults to 'window.location.origin'.
parentAllows specifying a custom mount point for the Persona iframe.

Defaults to document.body. If document.body does not exist, the first child of document is used.

Resuming an inquiry

To resume an existing inquiry instead of creating a new one, use the inquiryId parameter. Do not pass a templateId or templateVersionId when resuming the inquiry. The other attributes and callbacks specified above can still be used.

If the inquiry already has submitted verifications, you need to specify a sessionToken as well. You can generate a token with the /api/v1/inquiries/<inquiry-id>/resume endpoint. The token will be accessible as meta['session-token'].

ParameterRequiredDescription
inquiryIdRequiredSpecify an inquiry ID to resume an existing inquiry. The sessionToken parameter is required if the inquiry's status is pending.
sessionTokenWhen resuming an inquiry with a pending status, you must also generate a session token from the /api/v1/inquiries/<inquiry-id>/resume endpoint.