pVerify CMN API (discontinued)

Certificate of Medical Necessity lookup. Labelled "(Discontinued)" by pVerify; every operation is marked deprecated in the spec.

Operations 3

POST /API/CMNInquiry CMNInquiry #
GET /API/GetCMNResponse/{requestId} GetCMNResponse #
GET /PDFReport/CMN/{id} CMN Report #

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-cmn-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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

pverify-cmn-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: pVerify API (discontinued) CMN API
  description: pVerify CMN API (discontinued), 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: CMN
paths:
  /API/CMNInquiry:
    post:
      operationId: cmnInquiry
      tags:
      - CMN
      summary: CMNInquiry
      description: "Environment | \nURL | \n\nTest | \nhttps://testapi.pverify.com/API/CMNInquiry | \n\nProduction | \nhttps://api.pverify.com/API/CMNInquiry | \n\nThis endpoint submits a Same/Similar request into our queue. Note that this is not real time, and either the postback URL must be used (to submit the response to), or the GetSameOrSimilarResponse endpoint must be called with the request ID.\n\nKey | \nValue | \n\nURL | \nhttps://api.pverify.com/API/CMNInquiry | \n\nMethod | \nPOST | \n\nHeaders | \nDescription | \n\nContent-Type | \napplication/json | \n\nAuthorization | \nAuthorization token from above preceded by the String \"Bearer\" | \n\nClient-API-Id* | \nYour pVerify client-api-id | \n\nBody | \nDescription | \n\nData Parameters | \nSee Right Panel | \n\n*Note: The Client-API-Id is required in header. Header keys are case sensitive.\n\nCMNInquiry Request fields\n\nProperty Name | \nData Type | \nUsage | \nDescription | \n\nmemberId | \nString | \nRequired | \nPatient's member ID (HICN). | \n\npatientFirstName | \nString | \nRequired | \nPatient First Name. | \n\npatientLastName | \nString | \nRequired | \nPatient Last Name. | \n\npatientDOB | \nString | \nRequired | \nPatient DOB (Expected format: MM/dd/YYYY ie 01/01/2000). | \n\npatientStateCode | \nString | \nRequired | \nPatient State Code ex: AL. | \n\nhcpcsCode | \nString | \nRequired | \nHCPCS -L codes only. Multiple codes can be sent by separating with a comma (,). | \n\ndosStart | \nString | \nOptional | \nDate of service start date (Expected format: MM/dd/YYYY ie 01/01/2000). Default value is 5 years before date to current date. | \n\ndosEnd | \nString | \nOptional | \nDate of service end date (Expected format: MM/dd/YYYY ie 01/01/2000). Default value is current date (Today's date). | \n\nlocation | \nString | \nOptional | \nLocation name and the default is client user's location or client's location. | \n\ncallBackUrl | \nString | \nOptional | \nto Post response data on client side | \n\nAPIResponseCode Meaning\n\nAPIResponseCode | \nDescription | \n\n0 | \nProcessed | \n\n1 | \nRejected | \n\n2 | \nNoFunds (Insufficient Account Balance) | \n\n3 | \nPending (Pending need to get response later) | \n\n4 | \nInvalidRequest (Required Data Missing) | \n\n5 | \nInvalidFormat (data fields / data format is wrong) | \n\n6 | \nLocationError (Location is not configured) | \n\n** Response JSON Processing Steps **\n\nStep 1: Check the value of the API Response Code property. If the API Response Code is 3 (Pending) then the request is pending and the Request ID can be extracted.\n\nStep 2: Save the data\n\nNote: The CMN API always returns API response code as 3 (pending)"
      deprecated: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                memberId:
                  type: string
                  example: '123456'
                patientFirstName:
                  type: string
                  example: First Name
                patientLastName:
                  type: string
                  example: Last Name
                patientDOB:
                  type: string
                  example: Date of birth
                patientStateCode:
                  type: string
                  example: StateCode
                hcpcsCode:
                  type: string
                  example: A, B, E, or K code
                dosStart:
                  type: string
                  example: 12/09/2020
                dosEnd:
                  type: string
                  example: 12/09/2020
                location:
                  type: string
                  example: location Name
                callBackUrl:
                  type: string
                  example: http://www.test.com/api/PostData
            example:
              memberId: '123456'
              patientFirstName: First Name
              patientLastName: Last Name
              patientDOB: Date of birth
              patientStateCode: StateCode
              hcpcsCode: A, B, E, or K code
              dosStart: 12/09/2020
              dosEnd: 12/09/2020
              location: location Name
              callBackUrl: http://www.test.com/api/PostData
      responses:
        '200':
          description: OK
      security:
      - bearerAuth: []
        clientApiId: []
  /API/GetCMNResponse/{requestId}:
    get:
      operationId: getCMNResponse
      tags:
      - CMN
      summary: GetCMNResponse
      description: "Environment | \nURL | \n\nTest | \nhttps://testapi.pverify.com/API/GetCMNResponse/{requestID} | \n\nProduction | \nhttps://api.pverify.com/API/GetCMNResponse/{requestID} | \n\nThis call is used to get the transaction result later using a unique request ID.\n\nNote: We purge this data after 90 days\n\nKey | \nValue | \n\nURL | \nhttps://api.pverify.com/API/GetCMNResponse/{requestID} | \n\nMethod | \nGET | \n\nHeaders | \nDescription | \n\nContent-Type | \napplication/json | \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\nNotes\n\nAlways check for apiResponseCode property value before processing.\n\nIf APIResponseCode is zero then look for ErrorMessage and Claims to process response.\n\nA successful GetSameOrSimilarResponse will have the same format as the SameOrSimilarInquiry response.\n\nAPI Response Codes\n\nAPIResponseCode | \nDescription | \n\n0 | \nProcessed | \n\n1 | \nRejected | \n\n2 | \nNoFunds (Insufficient Account Balance) | \n\n3 | \nPending (Pending need to get response later) | \n\n4 | \nInvalidRequest (Required Data Missing) | \n\n5 | \nInvalidFormat (data fields / data format is wrong) | \n\n6 | \nLocationError (Location is not configured) | \n\nCMN Response Details\n\nProperty Name | \nData Type | \nDescription | \n\nRequestId | \nlong | \nSame or Similar Request ID. | \n\napiResponseCode | \nint | \nAPI transaction response code. Please see apiResponseCodes section. | \n\napiResponseMessage | \nString | \nAPI transaction response message. | \n\nisDataError | \nboolean | \nTrue - when invalid patient details (Invalid HICN/MBI or Invalid DOB); False - for all valid requests. | \n\nCertificatesCount | \nint | \nNo of certiifcates found in response | \n\nMessage | \nString | \nContains messages other than error messages (No claims found). | \n\nStatus | \nString | \nStatus of transaction (Processed, Rejected or Pending). | \n\nRentalsDescription | \nString | \nOxygen Rentals Description. | \n\nIsVerifiedAllJusrisdiction | \nBoolean | \nTells the transaction is verified in all Jurisdiction or not.If value false then need to get response using same API later. | \n\nVerifiedJurisdcitions | \nString Array | \nContians Verified jurisdictions. | \n\nCertificates | \nList | \n | \n\n | \nContains claim certificates status info. | \n | \n\nCertificate.SubmittedHcpcs | \nString | \nHCPCS Code Submitted in Request | \n\nCertificate.ApprovedHcpcs | \nString | \nHCPCS Code which is approved by Medicare | \n\nCertificate.InitialDate | \nString | \nInitial Date of Billing | \n\nCertificate.RevisedDate | \nString | \nRevised Date for CMN, if any. | \n\nCertificate.LastClaimDate | \nString | \nDate on which Last claim is recorded. | \n\nCertificate.Status | \nString | \nStatus of Certificate. Valid / Open | \n\nCertificate.SupplierName | \nString | \nSupplier Name. | \n\nCertificate.SupplierPhone | \nString | \nSupplier Phone Number | \n\nCertificate.TypeValue | \nString | \nType – Initial, Recert or Revised. | \n\nCertificate.LengthOfNeed | \nString | \nLength for which CMN is approved. | \n\nCertificate.TotalRentalPayments | \nTotal Rental Payments | \n | \n\nCertificate.Message | \nString | \nContains Message like No Certificates are found. |"
      deprecated: true
      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: []
  /PDFReport/CMN/{id}:
    get:
      operationId: getCmnReport
      tags:
      - CMN
      summary: CMN Report
      description: 'This returns a PDF report of the CMN request.


        Note two things:


        The endpoint is premium.pverify.com


        Authentication token is not used, instead pass your API ID and Secret.'
      deprecated: true
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        description: Unique pVerify transaction / request id returned by the matching inquiry call.
      responses:
        '200':
          description: OK
      security:
      - clientApiId: []
        clientSecret: []
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.