API Reference/Projects

Projects

7 endpoints|Base URL: https://pipe.solar/api/1.1/wf

Retrieve Project Data by ID

GET/fetch_project

This API retrieves project-related data based on the provided Project ID and returns the project details if a matching Lead record exists.

Query Params

idstringqueryrequired

Unique 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"
Response
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

POST/create_project

Body Params

application/json

addressstringrequired
first_namestringrequired
last_namestringrequired
emailstringrequired
phone_numberstringrequired
org_idstringrequired
sales_repstringrequired
setterstringrequired
1curl -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}'
Response
Successful response

Update Project Stage

POST/update_stage

This 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_namestringqueryrequired

The target stage name to be assigned to the project. Must match a valid stage configured in the system.

idstringqueryrequired

Unique 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"
Response
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

POST/project_upload_file

This 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

fileurlarrayrequired

The publicly accessible URL of the file to be uploaded

project_idstringrequired

The unique identifier of the target Project where the file will be stored

folder_idstringrequired

This determines which document type directory the file will be uploaded to. Only supported predefined folder_id values are accepted.

Allowed values (11):

contractutility_billdrivers_licensematerials
1curl -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}'
Response
1{
2 "success": true,
3 "message": "File has been saved successfully"
4}

Fetch All Project (Installer)

GET/fetch_all_project_installer

Query Params

installer_idstringquery
pagenumberquery
1curl -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"
Response
Successful response

Fetch All Project (Org)

GET/fetch_all_project

Query Params

org_idnumberqueryrequired
pagenumberquery
1curl -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"
Response
Successful response

Create Activity Log

POST/create_activity

Body Params

application/json

project_idstringrequired

Project ID for Solar Projects

installer_idstringrequired
notesstringrequired
1curl -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}'
Response
1{
2 "success": true,
3 "message": "Activity created successfully",
4 "data": {
5 "project_id": "12345",
6 "installer_id": "abc"
7 }
8}