DocumentationAPI Reference
DocumentationAPI Reference


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 accountaccount - An entity that captures all the interactions (i.e. inquiries) between an individual and an organization, typically representing an individual in the organization's system.. 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 ([email protected]). They will continue to work in the immediate future.

If you are on [email protected], view our migration guide for a list of changes.




templateId or templateVersionId


This 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.


Pass a specific theme to be used.


The Persona API environment on which to create inquiries. For sandbox and production, use sandbox and production respectively.


You 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.


ID of the account to associate newly created inquiries with.


Specify a supported language to localize the flow. Language will be inferred from browser settings by default.

See Languages.


Provide 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.


Deprecated. Provide an object to prefill form inputs in the flow. Each attribute in the object is optional. See Prefill documentation.


A 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.


A function that is called when the inquiry has finished loading and is ready for user interaction. Will always be called after onLoad.


A 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.


A function that is called when an individual completes the inquiry flow (passed or failed). It is passed the inquiry ID, status, and fields.


A function that is called when an error occurs in the flow.


A 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.


Should 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.


Allows 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'].






Specify an inquiry ID to resume an existing inquiry. The sessionToken parameter is required if the inquiry's status is pending.


When resuming an inquiry with a pending status, you must also generate a session token from the /api/v1/inquiries/<inquiry-id>/resume endpoint.