# Verification Methods To comply with the **Contact Lens Rule (CLR)**, you must verify a patient's prescription through one of two primary methods: reviewing a digital copy of the prescription or contacting the patient's doctor directly. The Visibly API facilitates both methods. Before you can initiate a verification request in Step 3, you must use this step to gather the necessary data (either a `fileId` or a `doctorId`). ### Flow A: Prescription Upload Use this flow when a patient wants to provide a copy of their prescription. You will first request a secure upload location from Visibly, upload the file, and then reference that file in your final verification request. #### 1. Generate Upload URL The `uploadFile` mutation generates a unique `fileId` and a temporary S3 presigned URL. [Click here to see the uploadFile GraphQL reference](/reference/visibly-api/mutations/uploadFile) #### 2. Upload the File Perform a standard **HTTP PUT** request to the `uploadUrl` provided in the response. - Method: `PUT` - Body: The binary file data. - Success Criteria: A `200 OK` response from the storage server. ### Flow B: Doctor Database Search Use this flow when a patient does not have their prescription and needs you to contact their doctor for verification. #### Search for a Doctor The doctors query allows you to search Visibly’s comprehensive database using a flexible `searchString` (which checks name, practice, and address) or specific matching criteria. [Click here to see the doctors GraphQL reference](/reference/visibly-api/queries/doctors) #### Handling Search Results - If a Match is Found: Capture the id from the results to use as the `doctorId` in the next step. - If No Match is Found: Proceed to Flow C (Manual Entry) in the next section, where you will provide the doctor's name, practice, and phone number manually. ### Implementation Checklist - Successfully retrieved a `fileId` after an Rx upload. - Successfully performed a doctor search and captured a `doctorId`. - Handled pagination using `pageInfo` if the search results exceed one page.