pVerify Patient Demographic Validator API
Validate and complete patient demographic data (pDV) — name, date of birth, gender and address — so that downstream eligibility and discovery inquiries match on identity.
Validate and complete patient demographic data (pDV) — name, date of birth, gender and address — so that downstream eligibility and discovery inquiries match on identity.
# Derived from pVerify's published Postman collection: https://postman.pverify.com/
# method: derived generated: 2026-08-14
openapi: 3.0.3
info:
title: pVerify Patient Demographic Validator API
description: pVerify Patient Demographic Validator API, derived operation-for-operation from the public
Postman collection pVerify publishes at https://postman.pverify.com/ (last updated 03/01/2026). All
calls require an OAuth2 bearer token from POST /Token plus the Client-API-Id header.
version: '1.0'
termsOfService: https://pverify.com/privacy-policy/
contact:
name: pVerify Support
email: support@pverify.com
url: https://pverify.com/contact-support/
servers:
- url: https://api.pverify.com
description: Production
- url: https://testapi.pverify.com
description: Test environment published by pVerify
tags:
- name: Patient Demographic Validator
paths:
/api/PatientFinderInquiry:
post:
operationId: patientFinderInquiry
tags:
- Patient Demographic Validator
summary: PatientFinderInquiry
description: "Environment | \nURL | \n\nTest | \nhttps://testapi.pverify.com/API/PatientFinderInquiry\
\ | \n\nProduction | \nhttps://api.pverify.com/API/PatientFinderInquiry | \n\nDescription:Returns\
\ only the top matching patient based on provided demographic information. This endpoint is optimized\
\ for use cases where only the most likely match is needed.\n\nUse Cases:Fast lookups for integrations\
\ where a single high-confidence match is sufficient.Scenarios where presenting a list of potential\
\ matches is not required.\n\nBehavior:Returns a maximum of 1 patient record (the best match).Uses\
\ match score to determine the top candidate.Ideal for a specific patient match.\n\nHeaders\n\n\
Key | \nValue | \n\nURL | \nhttps://api.pverify.com/API/PatientFinderInquiry | \n\nMethod | \n\
POST | \n\nHeaders | \nDescription | \n\nAuthorization | \nAuthorization token from above preceded\
\ by the String \"Bearer\" | \n\nClient-API-Id | \nAPI ID provided by pVerify | \n\nContent-Type\
\ | \napplication/json | \n\n*Note: The Client-API-Id is required. Header keys are case sensitive.\n\
\nSearch Criterias\n\nSNo | \nSearch Criteria | \n\n1 | \nFirstName,LastName,Street Address,City,State\
\ | \n\n2 | \nFirstName,LastName,DOB,City,State | \n\n3 | \nFirstName,LastName,DOB,State | \n\n\
4 | \nLastName,DOB,Street Address,Zip Code | \n\n5 | \nFirstName,LastName, Last 4 SSN | \n\n6\
\ | \nFirstName,LastName, Full SSN | \n\n7 | \nFirstName,LastName, Zip Code | \n\n8 | \nFirstName,LastName,\
\ State | \n\nPatientFinderInquiry Request Fields\n\nProperty Name | \nData Type | \nUsage | \n\
Description | \n\nFirstName | \nString | \nOptional | \nFirst Name of patient for inquiry | \n\
\nMiddleName | \nString | \nOptional | \nMiddle Name of patient for inquiry | \n\nLastName | \n\
String | \nRequired | \nLast Name of patient required for inquiry | \n\nDOB | \nString | \nOptional\
\ | \n(Expected format: MM/dd/YYYY ie 01/01/2000) | \n\nSSN | \nString | \nOptional | \nSocial\
\ Security Number (Exported format XXX-XX-XXXX) | \n\nAddress.AddressLine1 | \nString | \nOptional\
\ | \nAddress1 | \n\nAddress.AddressLine2 | \nString | \nOptional | \nAddress2 | \n\nAddress.City\
\ | \nString | \nOptional | \nCity | \n\nAddress.State | \nString | \nOptional | \nState | \n\n\
Address.ZipCode | \nString | \nOptional | \nZip | \n\nLocation | \nString | \nRequired | \nLocation\
\ is the practice location. Note by setting this, you will lock the patient to one location, so\
\ that users that login in via our portal who are not authorized to see that location will not\
\ see the patient. | \n\nReferenceNumber | \nString | \nOptional | \nAny free text for patient\
\ identifier, ie MRN | \n\nPatientFinderInquiry Response Fields\n\nKey | \nType | \nDescription\
\ | \n\nRequestID | \nInteger | \nEligibility Transaction ID | \n\nAPIResponseCode | \nInteger\
\ | \n0-Processed,1-Rejected,2-NoFunds,3-Pending | \n\nAPIResponseMessage | \nString | \nMessage\
\ about the transaction | \n\nError | \nString | \nMessage from Payer about errors | \n\npatientsFound\
\ | \nInteger | \nNumber of patients found | \n\nRequestHasSSN | \nBoolean | \nTrue if request\
\ has SSN | \n\nIsMBIRegistered | \nBoolean | \nTrue if the request contains a registered MBI;\
\ otherwise, false | \n\nIsTRHasError | \nBoolean | \nTrue if there was an error during Thomson\
\ Reuters (TR) verification; otherwise, false | \n\nIsShowSSN | \nBoolean | \nIndicates whether\
\ the patient's SSN should be displayed in the response. True = show SSN, False = mask SSN | \n\
\nPatients | \nArray of Object | \nReturns the top-matched patient based on the request. (Note:\
\ Patients is an array, but it contains only one patient.) | \n\nPatients.FirstName | \nString\
\ | \nFirst name (Note Patients object is an array) | \n\nPatients.LastName | \nString | \nLast\
\ Name | \n\nPatients.MiddleName | \nString | \nMiddle name | \n\nPatients.DOB | \nString | \n\
ODB | \n\nPatients.SSN | \nString | \nSSN (this is masked unless request has SSN) | \n\nPatients.RecordCount\
\ | \nInteger | \nNumber of records with this information (usually | \n\nPatients.Score | \nInteger\
\ | \nFrom 1-99, higher is better. >90 is typical for a very likely chance of exact match | \n\
\nPatients.GroupId | \nString | \nGroupId | \n\nPatients.Emails | \nString | \n(not supported\
\ yet) | \n\nPatients.Address | \nObject | \nAddress object as request | \n\nPatients.Address.AddressLine1\
\ | \nString | \nAddress1 | \n\nPatients.Address.AddressLine2 | \nString | \nAddress2 | \n\nPatients.Address.City\
\ | \nString | \nCity | \n\nPatients.Address.State | \nString | \nState | \n\nPatients.Address.ZipCode\
\ | \nString | \nZip | \n\nPatients.Address.ReportedDate | \nString | \nThe date on which the\
\ patient's record was last updated. | \n\nPatients.PhoneNumber | \nString | \n(not supported\
\ yet) |"
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
FirstName:
type: string
example: firstname
MiddleName:
nullable: true
LastName:
type: string
example: lastname
DOB:
nullable: true
SSN:
nullable: true
PhoneNumber:
nullable: true
Address:
type: object
properties:
AddressLine1:
type: string
example: Address1
AddressLine2:
nullable: true
City:
type: string
example: City
State:
type: string
example: ST
ZipCode:
type: string
example: '12345'
Location:
type: string
example: Somewhere
ReferenceNumber:
nullable: true
example:
FirstName: firstname
MiddleName: null
LastName: lastname
DOB: null
SSN: null
PhoneNumber: null
Address:
AddressLine1: Address1
AddressLine2: null
City: City
State: ST
ZipCode: '12345'
Location: Somewhere
ReferenceNumber: null
responses:
'200':
description: OK
security:
- bearerAuth: []
clientApiId: []
/API/PatientFinderInquiryResults:
post:
operationId: patientFinderInquiryResults
tags:
- Patient Demographic Validator
summary: PatientFinderInquiryResults
description: "Environment | \nURL | \n\nTest | \nhttps://testapi.pverify.com/API/PatientFinderInquiryResults\
\ | \n\nProduction | \nhttps://api.pverify.com/API/PatientFinderInquiryResults | \n\nDescription:Returns\
\ all matching patient records based on the search criteria. This endpoint is intended for workflows\
\ that require presenting multiple potential matches for verification.\n\nUse Cases:Used in Patient\
\ Validator-Verification.\n\nBehavior:Returns all matched patient records that meet the criteria.\n\
\nHeaders\n\nKey | \nValue | \n\nURL | \nhttps://api.pverify.com/API/PatientFinderInquiryResults\
\ | \n\nMethod | \nPOST | \n\nHeaders | \nDescription | \n\nAuthorization | \nAuthorization token\
\ from above preceded by the String \"Bearer\" | \n\nClient-API-Id | \nAPI ID provided by pVerify\
\ | \n\nContent-Type | \napplication/json | \n\n*Note: The Client-API-Id is required. Header keys\
\ are case sensitive.\n\nPatientFinderInquiryResults Request Fields\n\nProperty Name | \nData\
\ Type | \nUsage | \nDescription | \n\nFirstName | \nString | \nOptional | \nFirst Name of patient\
\ for inquiry | \n\nMiddleName | \nString | \nOptional | \nMiddle Name of patient for inquiry\
\ | \n\nLastName | \nString | \nRequired | \nLast Name of patient required for inquiry | \n\n\
DOB | \nString | \nOptional | \n(Expected format: MM/dd/YYYY ie 01/01/2000) | \n\nSSN | \nString\
\ | \nOptional | \nSocial Security Number (Exported format XXX-XX-XXXX) | \n\nAddress.AddressLine1\
\ | \nString | \nOptional | \nAddress1 | \n\nAddress.AddressLine2 | \nString | \nOptional | \n\
Address2 | \n\nAddress.City | \nString | \nOptional | \nCity | \n\nAddress.State | \nString |\
\ \nOptional | \nState | \n\nAddress.ZipCode | \nString | \nOptional | \nZip | \n\nLocation |\
\ \nString | \nRequired | \nLocation is the practice location. Note by setting this, you will\
\ lock the patient to one location, so that users that login in via our portal who are not authorized\
\ to see that location will not see the patient. | \n\nReferenceNumber | \nString | \nOptional\
\ | \nAny free text for patient identifier, ie MRN | \n\nPatientFinderInquiryResults Response\
\ Fields\n\nReturns a list of all matched patients. All other response fields are the same as\
\ the PatientFinderInquiry endpoint.\n\nKey | \nType | \nDescription | \n\nRequestID | \nInteger\
\ | \nEligibility Transaction ID | \n\nAPIResponseCode | \nString | \n0-Processed,1-Rejected,2-NoFunds,3-Pending\
\ | \n\nAPIResponseMessage | \nString | \nMessage about the transaction | \n\nError | \nString\
\ | \nMessage from Payer about errors | \n\npatientsFound | \nInteger | \nNumber of patients found\
\ | \n\nRequestHasSSN | \nBoolean | \nTrue if request has SSN | \n\nIsMBIRegistered | \nBoolean\
\ | \nTrue if the request contains a registered MBI; otherwise, false | \n\nIsTRHasError | \n\
Boolean | \nTrue if there was an error during Thomson Reuters (TR) verification; otherwise, false\
\ | \n\nIsShowSSN | \nBoolean | \nIndicates whether the patient's SSN should be displayed in the\
\ response. True = show SSN, False = mask SSN | \n\nPatients | \nArray of Objects | \nReturns\
\ a list of matched patients based on the request. If only one patient is matched, the array will\
\ still contain a single object. (Note: Patients is always returned as an array.) | \n\nPatients.FirstName\
\ | \nString | \nFirst name | \n\nPatients.LastName | \nString | \nLast Name | \n\nPatients.MiddleName\
\ | \nString | \nMiddle name | \n\nPatients.DOB | \nString | \nODB | \n\nPatients.SSN | \nString\
\ | \nSSN (this is masked unless request has SSN) | \n\nPatients.RecordCount | \nInteger | \n\
Number of records with this information (usually | \n\nPatients.Score | \nInteger | \nFrom 1-99,\
\ higher is better. >90 is typical for a very likely chance of exact match | \n\nPatients.GroupId\
\ | \nString | \nGroupId | \n\nPatients.Emails | \nString | \n(not supported yet) | \n\nPatients.Address\
\ | \nObject | \nAddress object as request | \n\nPatients.Address.AddressLine1 | \nString | \n\
Address1 | \n\nPatients.Address.AddressLine2 | \nString | \nAddress2 | \n\nPatients.Address.City\
\ | \nString | \nCity | \n\nPatients.Address.State | \nString | \nState | \n\nPatients.Address.ZipCode\
\ | \nString | \nZip | \n\nPatients.Address.ReportedDate | \nString | \nThe date on which the\
\ patient's record was last updated. | \n\nPatients.PhoneNumber | \nString | \n(not supported\
\ yet) |"
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
FirstName:
type: string
example: JOHN
MiddleName:
nullable: true
LastName:
type: string
example: WILLIAMS
DOB:
type: string
example: 07/12/1938
SSN:
nullable: true
PhoneNumber:
nullable: true
Address:
type: object
properties:
AddressLine1:
nullable: true
AddressLine2:
nullable: true
City:
nullable: true
State:
nullable: true
ZipCode:
nullable: true
Location:
nullable: true
ReferenceNumber:
nullable: true
SearchCriteriaId:
nullable: true
example:
FirstName: JOHN
MiddleName: null
LastName: WILLIAMS
DOB: 07/12/1938
SSN: null
PhoneNumber: null
Address:
AddressLine1: null
AddressLine2: null
City: null
State: null
ZipCode: null
Location: null
ReferenceNumber: null
SearchCriteriaId: null
responses:
'200':
description: OK
security:
- bearerAuth: []
clientApiId: []
/API/GetPatientFinderResponse/{requestId}:
get:
operationId: getPatientFinderResponse
tags:
- Patient Demographic Validator
summary: GetPatientFinderResponse
description: "Environment | \nURL | \n\nTest | \nhttps://testapi.pverify.com/API/GetPatientFinderResponse/{id}\
\ | \n\nProduction | \nhttps://api.pverify.com/Test/API/GetPatientFinderResponse/{id} | \n\nThis\
\ GET method will return complete response of PatientFinderInquiry endpoint. This call allows\
\ you to get the patient demographicverification result by a unique transaction ID.\n\nGetPatientFinderResponse\
\ Request\n\nKey | \nValue | \n\nURL | \nhttps://api.pverify.com/API/GetEligibilityResponse/{id}\
\ | \n\nMethod | \nGET | \n\nHeaders | \nDescription | \n\nAuthorization | \nAuthorization token\
\ from above preceded by the String \"Bearer\" | \n\nClient-API-Id* | \nYour pVerify client-api-id\
\ | \n\n*Note: The Client-API-Id header is required. Header keys are case sensitive.\n\nA successful\
\ GetPatientFinderResponse call will have the same format as the Patient Finder Inquiry response\
\ (above)."
parameters:
- name: requestId
in: path
required: true
schema:
type: string
description: Unique pVerify transaction / request id returned by the matching inquiry call.
responses:
'200':
description: OK
security:
- bearerAuth: []
clientApiId: []
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: 'OAuth2 access token returned by POST /Token, sent as `Authorization: Bearer <token>`.'
clientApiId:
type: apiKey
in: header
name: Client-API-Id
description: Client API identifier issued by pVerify. Required on every call; header keys are case
sensitive.
clientSecret:
type: apiKey
in: header
name: Client-Secret
description: Client secret issued by pVerify, used by the one-step (no-token) endpoints and the
premium report endpoints.