Endpoints
Retrieve Project Data by ID
/fetch_projectThis API retrieves project-related data based on the provided Project ID and returns the project details if a matching Lead record exists.
Query Params
idstringqueryrequiredUnique identifier of the Project used to retrieve the associated project data.
1curl -X GET "https://pipe.solar/api/1.1/wf/fetch_project?id=D4YR1VSK7K" \2 -H "Authorization: Bearer ps_live_..." \3 -H "Content-Type: application/json"1{2 "data": {3 "customerFirstName": "John",4 "customerLastName": "Doe",5 "customerPhoneNumber": "555-123-9876",6 "customerEmail": "john.doe@example.com",7 "customerAddress": "123 Solar St, Suite 100",8 "customerStreet": "123 Solar St",9 "customerCity": "Sunville",10 "customerState": "CA",11 "customerZip": "90210",12 "secondaryCustomerFirstName": "Jane",13 "secondaryCustomerLastName": "Doe",14 "secondaryCustomerPhoneNumber": "555-222-1111",15 "secondaryCustomerEmail": "jane.doe@example.com",16 "projectStatus": "Contract Signed",17 "contractSignedDate": "11/14/2025",18 "submittedDate": "11/14/2025",19 "projectSiteId": "3423523",20 "contractURL": "https://example.com/contract.pdf",21 "allFilesURL": {22 "surveyFiles": "https://example.com/files/survey_photos",23 "personalFiles": "https://example.com/files/personal",24 "utilityBills": "https://example.com/files/utility_bills",25 "insuranceFiles": "https://example.com/files/insurance_docs",26 "driverLicense": "https://example.com/files/license",27 "installationPhotos": "https://example.com/files/installation",28 "plansets": "https://example.com/files/plans",29 "materials": "https://example.com/files/materials",30 "otherDocuments": "https://example.com/files/other_docs",31 "interconnection": "https://example.com/files/interconnection",32 "permits": "https://example.com/files/permits",33 "internalDocuments": "https://example.com/files/internal_docs"34 },35 "proposalURL": "https://example.com/proposal?id=12345",36 "projectURL": "https://example.com/project_dashboard?id=12345",37 "systemSize": "8.5",38 "estProduction": "15584.44",39 "numberOfPanel": "20",40 "panelModel": "QCells 400W",41 "numberOfInverter": "1",42 "inverterName": "Enphase IQ8 Microinverter",43 "contractPrice": "18,450.01",44 "numberOfBattery": "1",45 "batteryName": "Tesla Powerwall 3",46 "financeCompany": "GoodLeap",47 "financeAmount": "18,450.01",48 "financeAPR": "3.99",49 "financeTerm": "20",50 "financeType": "Loan",51 "basePPW": "2.15",52 "finalPPW": "2.35",53 "adders": [54 "Main panel upgrade",55 "Roof work"56 ],57 "addersCost": "1,028.58",58 "salesRepName": "Michael Scott",59 "salesRepEmail": "michael.scott@pipesolar.com",60 "salesRepPhone": "555-789-4561",61 "setterName": "Dwight Schrute",62 "setterEmail": "dwight.schrute@pipesolar.com",63 "setterPhone": "555-777-1212",64 "siteSurveyorName": "dwight.schrute@pipesolar.com",65 "subContractorName": "555-777-1212"66 },67 "id": "D4YR1VSK7K"68}Create Project
/create_projectBody Params
application/json
addressstringrequiredfirst_namestringrequiredlast_namestringrequiredemailstringrequiredphone_numberstringrequiredorg_idstringrequiredsales_repstringrequiredsetterstringrequired1curl -X POST "https://pipe.solar/api/1.1/wf/create_project" \2 -H "Authorization: Bearer ps_live_..." \3 -H "Content-Type: application/json" \4 -d '{5 "address": "example",6 "first_name": "example",7 "last_name": "example",8 "email": "example",9 "phone_number": "example",10 "org_id": "example",11 "sales_rep": "example",12 "setter": "example",13 "system_size": 1,14 "annual_production": 1,15 "consumption": 1,16 "system_cost": 1,17 "final_ppw": 1,18 "base_ppw": 1,19 "adder_ppw": 1,20 "financing_type": "example",21 "term_years": "example",22 "apr": 1,23 "project_stage": "example",24 "panel_profile_id": "example",25 "panel_count": "example",26 "inverter_profile_id": "example",27 "inverter_count": "example",28 "lease_ppa_rate": "example",29 "pre_itc_payment": "example",30 "escalator_rate": "example",31 "site_survey_photos": [32 ""33 ],34 "adders": [35 ""36 ]37}'Update Project Stage
/update_stageThis endpoint updates the stage of an existing project. When the API is invoked, it searches for the project using the provided id and updates the project’s stage to the specified project_stage_name. The change is then reflected across the related project and deal records.
Query Params
project_stage_namestringqueryrequiredThe target stage name to be assigned to the project. Must match a valid stage configured in the system.
idstringqueryrequiredUnique identifier of the Project record whose stage needs to be updated.
1curl -X POST "https://pipe.solar/api/1.1/wf/update_stage?project_stage_name=NTP&id=U7X5R0UG12" \2 -H "Authorization: Bearer ps_live_..." \3 -H "Content-Type: application/json"1{2 "success": true,3 "message": "Project status updated successfully.",4 "data": {5 "project_id": "U7X5R0UG12",6 "new_status": "NTP"7 }8}Upload File to Project
/project_upload_fileThis API endpoint uploads and stores a file in the correct directory based on the provided folder_id within a specific project.
Body Params
application/json
fileurlarrayrequiredThe publicly accessible URL of the file to be uploaded
project_idstringrequiredThe unique identifier of the target Project where the file will be stored
folder_idstringrequiredThis determines which document type directory the file will be uploaded to. Only supported predefined folder_id values are accepted.
Allowed values (11):
contractutility_billdrivers_licensematerials1curl -X POST "https://pipe.solar/api/1.1/wf/project_upload_file" \2 -H "Authorization: Bearer ps_live_..." \3 -H "Content-Type: application/json" \4 -d '{5 "fileurl": [6 ""7 ],8 "project_id": "U7X5R0UG12",9 "folder_id": "installation_photos"10}'1{2 "success": true,3 "message": "File has been saved successfully"4}Fetch All Project (Installer)
/fetch_all_project_installerQuery Params
installer_idstringquerypagenumberquery1curl -X GET "https://pipe.solar/api/1.1/wf/fetch_all_project_installer" \2 -H "Authorization: Bearer ps_live_..." \3 -H "Content-Type: application/json"Fetch All Project (Org)
/fetch_all_projectQuery Params
org_idnumberqueryrequiredpagenumberquery1curl -X GET "https://pipe.solar/api/1.1/wf/fetch_all_project?org_id=value" \2 -H "Authorization: Bearer ps_live_..." \3 -H "Content-Type: application/json"Create Activity Log
/create_activityBody Params
application/json
project_idstringrequiredProject ID for Solar Projects
installer_idstringrequirednotesstringrequired1curl -X POST "https://pipe.solar/api/1.1/wf/create_activity" \2 -H "Authorization: Bearer ps_live_..." \3 -H "Content-Type: application/json" \4 -d '{5 "project_id": "example",6 "installer_id": "example",7 "notes": "example"8}'1{2 "success": true,3 "message": "Activity created successfully",4 "data": {5 "project_id": "12345",6 "installer_id": "abc"7 }8}