Persona is an identity verification platform that helps businesses verify who their users are. Persona handles the full identity lifecycle — collecting government IDs, selfies, and documents through hosted verification flows, screening individuals against global watchlists and sanctions lists, and routing edge cases to human review.
With Persona, you can:
- Verify identities end to end: Create inquiries from your verification templates, send customers one-time verification links, and read back collected fields and decision results
- Automate KYC and compliance decisions: Approve or decline inquiries programmatically, run watchlist, adverse media, and politically-exposed-person screening reports, and monitor cases that need manual review
- Manage your verified user base: Create and look up accounts, bulk-import existing users from CSV, and keep your user model in sync with Persona via reference IDs
- Keep an audit trail: Download inquiry summary PDFs and retrieve the underlying verifications and documents behind every decision
In Sim, the Persona block lets your agents drive identity verification as part of real workflows. Trigger verification when a customer signs up, route on approval status, screen names against watchlists before activating accounts, post pending reviews to Slack, or archive verification PDFs to cloud storage — all using your Persona API key and templates.
Integrate Persona identity verification into the workflow. Manage the full inquiry lifecycle (create, update, approve, decline, review, resume, expire, redact), generate one-time verification links and PDF summaries, manage accounts including CSV bulk import, run watchlist and adverse media reports, review cases, retrieve verifications and documents, and discover inquiry templates.
Create a new identity verification inquiry from an inquiry template. Returns the created inquiry, which can then be completed by the individual via a one-time link.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Persona API key |
inquiryTemplateId | string | Yes | Inquiry template ID (starts with itmpl_), inquiry template version ID (starts with itmplv_), or legacy template ID (starts with tmpl_) |
accountId | string | No | Account ID (starts with act_) to associate with this inquiry |
referenceId | string | No | Reference ID that refers to an entity in your user model. An account is auto-created for it if one does not exist. |
fields | json | No | JSON object of field name to field value pairs to pre-fill, as defined by the inquiry template (e.g. {"name-first": "Jane"}) |
note | string | No | Free-form note to attach to the inquiry |
redirectUri | string | No | URI to redirect the individual to after completing the inquiry flow |
| Parameter | Type | Description |
|---|
inquiry | object | The created inquiry |
Retrieve a single identity verification inquiry by ID, including its status, collected fields, and decision timestamps.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Persona API key |
inquiryId | string | Yes | Inquiry ID to retrieve (starts with inq_) |
| Parameter | Type | Description |
|---|
inquiry | object | The retrieved inquiry |
List identity verification inquiries, optionally filtered by status, account ID, reference ID, or creation date range. Results are cursor-paginated.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Persona API key |
status | string | No | Filter by inquiry status (created, pending, completed, failed, expired, needs_review, approved, declined) |
accountId | string | No | Filter by account ID (starts with act_); comma-separate multiple IDs |
referenceId | string | No | Filter by reference ID |
createdAtStart | string | No | Filter to inquiries created at or after this ISO 8601 timestamp |
createdAtEnd | string | No | Filter to inquiries created at or before this ISO 8601 timestamp |
pageSize | number | No | Number of inquiries to return per page (1-100, default 10) |
pageAfter | string | No | Pagination cursor: return inquiries after this inquiry ID |
| Parameter | Type | Description |
|---|
inquiries | array | Inquiries matching the filters |
nextCursor | string | Cursor for the next page (pass as pageAfter), or null on the last page |
Update an inquiry’s note, fields, tags, or redirect URI. Only the provided values are changed.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Persona API key |
inquiryId | string | Yes | Inquiry ID to update (starts with inq_) |
note | string | No | Free-form note to set on the inquiry |
fields | json | No | JSON object of field name to field value pairs to set, as defined by the inquiry template (e.g. {"name-first": "Jane"}) |
tags | array | No | JSON array of tag names to set on the inquiry (e.g. ["vip"]) |
redirectUri | string | No | URI to redirect the individual to after completing the inquiry flow |
| Parameter | Type | Description |
|---|
inquiry | object | The updated inquiry |
Approve an identity verification inquiry. Approving prevents further progress on the inquiry and triggers any associated workflows and webhooks.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Persona API key |
inquiryId | string | Yes | Inquiry ID to approve (starts with inq_) |
| Parameter | Type | Description |
|---|
inquiry | object | The approved inquiry |
Decline an identity verification inquiry. Declining prevents further progress on the inquiry and triggers any associated workflows and webhooks.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Persona API key |
inquiryId | string | Yes | Inquiry ID to decline (starts with inq_) |
| Parameter | Type | Description |
|---|
inquiry | object | The declined inquiry |
Mark an identity verification inquiry for manual review, moving it to the needs_review status.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Persona API key |
inquiryId | string | Yes | Inquiry ID to mark for review (starts with inq_) |
| Parameter | Type | Description |
|---|
inquiry | object | The inquiry marked for review |
Resume a pending or expired inquiry, creating a new session so the individual can continue verification. Returns a session token.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Persona API key |
inquiryId | string | Yes | Inquiry ID to resume (starts with inq_) |
| Parameter | Type | Description |
|---|
inquiry | object | The resumed inquiry |
sessionToken | string | Session token for the new inquiry session, used to continue the flow in embedded SDKs |
Expire an in-progress inquiry, invalidating its sessions and one-time links so the individual can no longer continue it.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Persona API key |
inquiryId | string | Yes | Inquiry ID to expire (starts with inq_) |
| Parameter | Type | Description |
|---|
inquiry | object | The expired inquiry |
Generate a one-time link for an inquiry that the individual can open to complete their identity verification.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Persona API key |
inquiryId | string | Yes | Inquiry ID to generate a one-time link for (starts with inq_) |
expiresInSeconds | number | No | Number of seconds from now until the link expires (must be greater than 0; defaults to the inquiry template setting, typically 24 hours) |
| Parameter | Type | Description |
|---|
inquiry | object | The inquiry the link was generated for |
oneTimeLink | string | One-time link the individual can open to complete the inquiry |
oneTimeLinkShort | string | Shortened version of the one-time link |
Download a PDF summary of an inquiry, including its collected information and verification results.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Persona API key |
inquiryId | string | Yes | Inquiry ID to print (starts with inq_) |
| Parameter | Type | Description |
|---|
file | file | PDF summary of the inquiry, stored in execution files |
Permanently delete all personally identifiable information collected by an inquiry, for example to honor a data deletion request. This cannot be undone.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Persona API key |
inquiryId | string | Yes | Inquiry ID to redact (starts with inq_) |
| Parameter | Type | Description |
|---|
inquiry | object | The redacted inquiry (PII fields are removed) |
Create an account that represents an individual in Persona. Accounts consolidate inquiries, verifications, and reports for the same person.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Persona API key |
accountTypeId | string | No | Account type ID to create the account for (starts with acttp_); defaults to your organization default |
referenceId | string | No | Reference ID that refers to an entity in your user model |
countryCode | string | No | ISO 3166-1 alpha-2 country code (e.g. US) |
fields | json | No | JSON object of field name to field value pairs, as defined by the account type (e.g. {"name-first": "Jane"}) |
tags | array | No | JSON array of tag names to associate with the account (e.g. ["vip"]) |
| Parameter | Type | Description |
|---|
account | object | The created account |
Retrieve a single account by ID, including its reference ID, fields, tags, and status.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Persona API key |
accountId | string | Yes | Account ID to retrieve (starts with act_) |
| Parameter | Type | Description |
|---|
account | object | The retrieved account |
List accounts in your Persona organization, optionally filtered by reference ID. Results are cursor-paginated.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Persona API key |
referenceId | string | No | Filter by reference ID |
pageSize | number | No | Number of accounts to return per page (1-100, default 10) |
pageAfter | string | No | Pagination cursor: return accounts after this account ID |
| Parameter | Type | Description |
|---|
accounts | array | Accounts matching the filters |
nextCursor | string | Cursor for the next page (pass as pageAfter), or null on the last page |
Update an account’s reference ID, country code, fields, or tags. Only the provided values are changed.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Persona API key |
accountId | string | Yes | Account ID to update (starts with act_) |
referenceId | string | No | Reference ID that refers to an entity in your user model |
countryCode | string | No | ISO 3166-1 alpha-2 country code (e.g. US) |
fields | json | No | JSON object of field name to field value pairs to set, as defined by the account type (e.g. {"name-first": "Jane"}) |
tags | array | No | JSON array of tag names to set on the account (e.g. ["vip"]) |
| Parameter | Type | Description |
|---|
account | object | The updated account |
Bulk-import accounts into Persona from a CSV file. Returns an importer whose status can be polled until processing completes.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Persona API key |
file | file | Yes | CSV file of accounts to import |
| Parameter | Type | Description |
|---|
importer | object | The created account importer |
Permanently delete all personally identifiable information stored on an account, for example to honor a data deletion request. This cannot be undone.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Persona API key |
accountId | string | Yes | Account ID to redact (starts with act_) |
| Parameter | Type | Description |
|---|
account | object | The redacted account (PII fields are removed) |
List manual review cases, optionally filtered by status, account ID, or reference ID. Results are cursor-paginated.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Persona API key |
status | string | No | Filter by case status (e.g. Open, Resolved) |
accountId | string | No | Filter by account ID (starts with act_) |
referenceId | string | No | Filter by reference ID |
pageSize | number | No | Number of cases to return per page (1-100, default 10) |
pageAfter | string | No | Pagination cursor: return cases after this case ID |
| Parameter | Type | Description |
|---|
cases | array | Cases matching the filters |
nextCursor | string | Cursor for the next page (pass as pageAfter), or null on the last page |
Retrieve a single manual review case by ID, including its status, resolution, and assignee.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Persona API key |
caseId | string | Yes | Case ID to retrieve (starts with case_) |
| Parameter | Type | Description |
|---|
case | object | The retrieved case |
Run a screening report (watchlist, adverse media, or politically exposed person) against an individual by name or search term.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Persona API key |
reportType | string | Yes | Type of report to run: watchlist, adverse-media, or politically-exposed-person |
reportTemplateId | string | Yes | Report template ID to run (starts with rptp_) |
term | string | No | Full-name search term (e.g. "Jane Q Doe"). Provide this or the separate name parts. |
nameFirst | string | No | First name of the individual to search |
nameMiddle | string | No | Middle name of the individual to search |
nameLast | string | No | Last name of the individual to search |
birthdate | string | No | Birthdate of the individual, formatted as YYYY-MM-DD |
countryCode | string | No | ISO 3166-1 alpha-2 country code (e.g. US) |
accountId | string | No | Account ID (starts with act_) to associate with this report |
| Parameter | Type | Description |
|---|
report | object | The created report. Reports run asynchronously; poll until status is ready. |
Retrieve a single screening report by ID, including its status, match results, and full type-specific attributes.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Persona API key |
reportId | string | Yes | Report ID to retrieve (starts with rep_) |
| Parameter | Type | Description |
|---|
report | object | The retrieved report |
List screening reports, optionally filtered by account ID or reference ID. Results are cursor-paginated.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Persona API key |
accountId | string | No | Filter by account ID (starts with act_) |
referenceId | string | No | Filter by reference ID |
pageSize | number | No | Number of reports to return per page (1-100, default 10) |
pageAfter | string | No | Pagination cursor: return reports after this report ID |
| Parameter | Type | Description |
|---|
reports | array | Reports matching the filters |
nextCursor | string | Cursor for the next page (pass as pageAfter), or null on the last page |
Retrieve a single verification by ID (government ID, selfie, document, database, and more), including its status and the checks that ran.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Persona API key |
verificationId | string | Yes | Verification ID to retrieve (starts with ver_) |
| Parameter | Type | Description |
|---|
verification | object | The retrieved verification |
Retrieve a single document by ID (government ID, generic document, and more), including its processing status and uploaded files.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Persona API key |
documentId | string | Yes | Document ID to retrieve (starts with doc_) |
| Parameter | Type | Description |
|---|
document | object | The retrieved document |
List the inquiry templates in your Persona organization, to discover template IDs for creating inquiries. Results are cursor-paginated.
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Persona API key |
pageSize | number | No | Number of templates to return per page (1-100, default 10) |
pageAfter | string | No | Pagination cursor: return templates after this template ID |
| Parameter | Type | Description |
|---|
inquiryTemplates | array | Inquiry templates in the organization |
nextCursor | string | Cursor for the next page (pass as pageAfter), or null on the last page |