pVerify CGX Widget API

Provision and drive the embeddable eligibility-and-estimates widget. Setup runs against the premium portal host; CGXInquiry returns a combined estimate plus eligibility result for the widget to render.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/pverify-cgx-widget-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

pverify-cgx-widget-api-openapi.yml Raw ↑
# Derived from pVerify's published Postman collection: https://postman.pverify.com/
# method: derived  generated: 2026-08-14
openapi: 3.0.3
info:
  title: pVerify CGX Widget API
  description: pVerify CGX Widget 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
- url: https://premium.pverify.com
  description: pVerify premium portal host (PDF reports, widget setup)
tags:
- name: CGX Widget
paths:
  /Widget/Setup:
    post:
      operationId: createWidgetSetup
      tags:
      - CGX Widget
      summary: Setup
      description: "Step 1 - Generate setupId to load widget in iframe\n\nSetupId will be required to\
        \ load the widget in iframe. SetupId can be generated using Client ID and Client Secret. To generate\
        \ SetupId, pass Client ID and Client Secret to following endpoint[POST] https://premium.pverify.com/Widget/Setupe.g.\n\
        \n{\n\"clientApiId\":\"xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx\",\n\"clientSecret\":\"xxxxxxxxxxxxxxx\"\
        \n}\n\nIt will generate a SetupId something like this XXXXxxXX-XXXX-XxXX-XxXX-XXxxXXXXxXX.\n\n\
        Step 2 - Load iframe with following URL with setupIdIf you want to integrate Estimation widget,\
        \ then set URL of iframe as shown belowhttps://premium.pverify.com/Component/EstimateInquiry?SetupId=setupId\n\
        \nIf you want to integrate Eligibility widget, then set URL of iframe as shown belowhttps://premium.pverify.com/Component/ElgInquiry?SetupId=setupId\n\
        \nDetails about SetupId \n\n1.Need to generate SetupId for each transaction \n\n2.SetupId is valid\
        \ for 10 mins"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                clientApiId:
                  type: string
                  example: xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx
                clientSecret:
                  type: string
                  example: xxxxxxxxxxxxxxx
            example:
              clientApiId: xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx
              clientSecret: xxxxxxxxxxxxxxx
      responses:
        '200':
          description: OK
  /api/CGXInquiry:
    post:
      operationId: cgxInquiry
      tags:
      - CGX Widget
      summary: CGXInquiry - Estimates and Eligibility Combo
      description: "Environment | \nURL | \n\nTest | \nhttps://testapi.pverify.com/API/CGXInquiry | \n\
        \nProduction | \nhttps://api.pverify.com/API/CGXInquiry | \n\nCGXInquiry is our combined Eligibility\
        \ & Estimate endpoint.\n\nNote that only a handful of items are required. This allows very quick\
        \ and easy coding to get a response. The NPI is hard coded to use the default NPI. The location\
        \ can use the first/default location. Pricing is based either on payer/location specific pricing\
        \ or the medicare price. If the former, then the CPT codes need to be imported into pVerify. If\
        \ the later, then the location needs to have the state/ZIP code set, and the default medicare\
        \ % needs to be set from Premium (Admin Setup). It is possible when configured to use remit data\
        \ to power this estimate. The eligibility call is the same as the EligibilitySummary call. Either\
        \ the practice type can be set from the body or it will use the default practice type set by client.\n\
        \nHeaders\n\nKey | \nValue | \n\nURL | \nhttps://api.pverify.com/API/CGXInquiry | \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\n\
        Content-Type | \napplication/json | \n\n*Note: The Client-API-Id is required. Header keys are\
        \ case sensitive.\n\nCGXInquiry Request Details\n\nProperty Name | \nData Type | \nUsage | \n\
        Description | \n\nPayerCode | \nString | \nConditional | \npVerify Payer Code(ie Aetna 00001)\
        \ | \n\nPayerName | \nString | \nConditional | \nYour payer name mapped through our system (note\
        \ either PayerCode or PayerName is required) | \n\nMemberId | \nString | \nRequired | \nMember\
        \ ID of Patient | \n\nPatientFirstName | \nString | \nRequired | \nPatient first name | \n\nPatientLastName\
        \ | \nString | \nRequired | \nPatient last name | \n\nPatientDOB | \nString | \nRequired | \n\
        Format must be MM/DD/YYYY | \n\nLocation | \nString | \nOptional | \nName of location - used to\
        \ set the appointment pricing | \n\nZipCode | \nString | \nOptional | \n0 if default, else ZipCode\
        \ - see notes below | \n\nAppointmentType | \nString | \nConditional | \nName of appointment |\
        \ \n\nCPTList | \nArray of String | \nConditional | \nList of CPT codes - String array. Either\
        \ this or AppointmentType is required. If both are set, the CPTList is used. | \n\nMRN | \nString\
        \ | \nOptional | \nMRN or reference of patient - not used by pVerify | \n\nIsActiveSecondry |\
        \ \nBoolean | \nOptional | \nFor use for estimate | \n\nSelfPay | \nBoolean | \nOptional | \n\
        For estimate | \n\nPracticeTypeId | \nInteger | \nOptional | \nPlease consult Practice Type Code\
        \ table - sets which practice type to use, i.e. 12 for physical therapy, which will return an\
        \ object with PT benefits in the results. If you do not select a practice type, the default for\
        \ your account will be used. Contact pVerify for more info. | \n\nEither PayerCode (preference)\
        \ or your Payer Name mapped through our system can be used. The system will use the PayerCode\
        \ if not empty.\n\nLocation is optional, it will pull the default location if not set. The location\
        \ is used to power the Medicare pricing which relies on Zip Code. To overrride this, set the ZipCode\
        \ field. If the Location field is a location that does not exist, it will be created. Note if\
        \ this happens, the first user in the system must be role ClientAdmin else the API will not set\
        \ the user to the location correctly. If this happens then the API call fails.\n\nEIther CPTList\
        \ (string array) or AppointmentType (name) can be used. If both are present then CPTList will\
        \ be used. This is used to pull the pricing and it's based on the following order.\n\nIF CptLIst\
        \ is used, then this is the pricing order in the system:\n\nRemit Price (CPT/Payer specific) (based\
        \ on EDI 835 data specific to client)\n\nPayer & CPT specific custom pricing (from your imported\
        \ fee schedule)\n\nPayer & CPT specific medicare pricing (from your imported fee schedule)\n\n\
        CPT specific custom pricing (from your imported fee schedule)\n\nMedicare custom pricing (from\
        \ your imported fee schedule)\n\nMedicare pricing (from CMS)\n\nNote for #6 there is a client-wide\
        \ medicare price that can be used to act as a multiplier for Medicare Pricing - it is set in Admin\
        \ Profile from Premium.\n\nIf Appointment list is used - the pricing is the same as above except\
        \ remit pricing is not factored in.\n\nCGXInquiry Response Fields\n\nProperty Name | \nData Type\
        \ | \nDescription | \n\nrequestId | \nInteger | \nPrimary Key | \n\nisDataError | \nBoolean |\
        \ \ntrue if error | \n\nerrorMessage | \nString | \nError message | \n\neligibilityRequestID |\
        \ \nInteger | \nPrimary Key for request | \n\nelgStatus | \nString | \nActive if patient's insurance\
        \ is active | \n\nelgResponseMessage | \nString | \nError from eligibility call | \n\napiResponseCode\
        \ | \nInteger | \n0 if no error | \n\napiResponseMessage | \nString | \nProcessed if no error\
        \ | \n\ndetailResponse.preAuthStatus | \nString | \nNot yet supported | \n\ndetailResponse.paFrom\
        \ | \nString | \nNot yet supported | \n\ndetailResponse.locationName | \nString | \nName of location\
        \ from request | \n\ndetailResponse.cptCode | \nString | \nCPT Code | \n\ndetailResponse.co_ins_Percentage\
        \ | \nString | \nCoinsurance | \n\ndetailResponse.co_Pay | \nString | \nCopay | \n\ndetailResponse.deductible_remaining\
        \ | \nString | \nDeductible Remaining | \n\ndetailResponse.out_of_Pocket_remaining | \nString\
        \ | \nOOP Remaining | \n\ndetailResponse.estimatedAllowable | \nString | \nAllowed amount from\
        \ payer | \n\ndetailResponse.EstPtResponsibilitywDeduc | \nString | \nEstimate for patient responsibility\
        \ with Deductible | \n\ndetailResponse.EstPtResponsibilitywoDeduc | \nString | \nEstimate for\
        \ patient responsibility without Deductible | \n\ndetailResponse.EstPtResponsibilityMessage |\
        \ \nString | \nPatient Responsibility message | \n\ndetailResponse.amountPayable | \nString |\
        \ \nAmount due by patient | \n\nResponse JSON:\n\nStartFragment\n\n{\"requestId\": 299,\"isDataError\"\
        : false,\"errorMessage\": \" Location set by default location. \",\"detailResponse\": {\"preAuthStatus\"\
        : null,\"paFrom\": null,\"locationName\": null,\"cptCode\": \"70553\",\"co_ins_Percentage\": \"\
        0\",\"co_Pay\": \"225.00\",\"deductible_remaining\": \"0.00\",\"out_"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                PayerCode:
                  type: string
                  example: 00192
                PayerName:
                  type: string
                  example: United HC
                MemberId:
                  type: string
                  example: '1234'
                PatientFirstName:
                  type: string
                  example: John
                PatientLastName:
                  type: string
                  example: Doe
                PatientDOB:
                  type: string
                  example: 01/01/2000
                Location:
                  type: string
                  example: Brooklyn
                AppointmentType:
                  type: string
                  example: MRI Brain
                CPTList:
                  type: array
                  items:
                    type: string
                    example: '77001'
                MRN:
                  type: string
                  example: '1234'
                IsActiveSecondry:
                  type: boolean
                  example: false
                SelfPay:
                  type: boolean
                  example: false
                PracticeTypeId:
                  type: integer
                  example: 25
            example:
              PayerCode: 00192
              PayerName: United HC
              MemberId: '1234'
              PatientFirstName: John
              PatientLastName: Doe
              PatientDOB: 01/01/2000
              Location: Brooklyn
              AppointmentType: MRI Brain
              CPTList:
              - '77001'
              - '77002'
              MRN: '1234'
              IsActiveSecondry: false
              SelfPay: false
              PracticeTypeId: 25
      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.