The Service Request calls provides a way for you to communicate with the Scanifly Design Services team. You are able to place an order for a new design as well as check the status on existing orders.
POST https://api.portal.scanifly.com/api/v1/serviceRequests?access_token={access_token}
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| projectId | String | Yes | Project ID that the service request is associated with |
| status | String | Yes | Initial status of the service request, "ordered" |
| tierLevel | String | Yes | Requested service tier (e.g., "maxFill") |
| form | Object | Yes | Object containing design parameters and requirements. See below |
| upgrade | Boolean | Yes | Indicates if this is an upgrade request. Set to true or false |
| isExpedited | Boolean | Yes | Indicates if expedited processing is required. Set to true or false. |
form Object Details
Field | Type | Required | Description |
|---|---|---|---|
sizedForCategory | String | Yes | Specifies the criteria for sizing the system (e.g., "consumption", "production", “systemSize”). |
sizedForValue | String | Yes | The numerical value associated with sizedForCategory (e.g., 105 could mean 105% offset or 105 kWh depending on the category). |
fireSetbacks | Object | Yes | Defines setback requirements for fire safety. Contains keys like ridge, eave, rake, valley, hip. Values would be numbers or "undefined" for defaults.\ ridge = NYC: 3’ LI/WcCO: 18” Eave = NYC/LI/WcCO: 8” Rake = NYC: 8” LI/WcCo: 22” Valley = NYC/LI/WcCO: 6” Hip = NYC: 8” LI/WcCO: 22” |
obstructionSetbacks | Object | Yes | Defines setback requirements around obstructions. Contains keys like vents, exhaust, skylights, parapet, general. Values might be numbers or "undefined".\ vents, exhaust, skylights,general = 5” Parapet = 1’ |
projectAddress | String | Yes | The full street address for the project location. |
homeownerName | String | Yes | The name of the homeowner associated with the project. |
designOneModule | String | Yes | Specifies the primary solar module type to be used in the design (e.g., "SunPower X21 Black").\ Based on the picklist selection |
moduleOrientation | String | Yes | The default orientation for modules (e.g., "portrait", "landscape").\ Default = portrait |
mixedOrientation | String | Yes | Whether modules can have mixed orientations ("yes" or "no").\ Default = “yes” |
moduleSpacingLong | String | Yes | Required spacing along the longer edge of the module (Units assumed, e.g., inches. The value is provided as a string). Default 1 inch |
moduleSpacingShort | String | Yes | Required spacing along the shorter edge of the module (Units assumed, e.g., inches. The value is provided as a string). |
azimuthRangeStart | String | Yes | The minimum acceptable roof surface azimuth (degrees, e.g., "90" for East. The value is provided as a string).\ Azimuth Start = 0 |
azimuthRangeEnd | String | Yes | The maximum acceptable roof surface azimuth (degrees, e.g., "270" for West. The value is provided as a string).\ Azimuth End = 360 |
newBuildPlansRequired | Boolean | Yes | Indicates if plans for a new construction are required. |
isCommercialZone | Boolean | Yes | Indicates if the project location is in a commercial zone. |
negativeTolerance | Number | Null | No |
positiveTolerance | Number | Null | No |
Example Request Body
Response
Response will be returned in the form of a JSON object containing the details of the newly created Service Request.
| Field | Type | Description |
|---|---|---|
| id | String | The unique identifier for the newly created service request. |
| companyName | String | Name of the company associated with the request. |
| projectDesign | Object | Contains the id (String) of the associated project design artifact. |
| userInfo | Object | Information about the user who created the request (id, firstName, lastName, email). |
| status | String | The current status of the service request (e.g., "ordered"). |
| tierLevel | String | The tier level assigned to the request (e.g., "maxFill"). |
| addOns | Array | List of any add-ons associated with the request (potentially objects). |
| form | Object | An echo of the form object submitted in the request. |
| designServiceProviderId | String | Identifier for the design service provider assigned to this request. |
| designServiceProviderName | String | Name of the assigned design service provider. |
| isExpedited | Boolean | Indicates if the request is marked as expedited. |
| isAutomated | Boolean | Indicates if the request processing was (or will be) automated. |
| createdAt | String | ISO 8601 timestamp indicating when the request was created. |
| updatedAt | String | ISO 8601 timestamp indicating when the request was last updated. |
| project | Object | Details of the associated project (id, name, status, mode) |
| company | Object | Contains the id (String) of the associated company. |
| modelRevisionCount | String | Revision count for the associated model (starts at "0") |
Example Success Response Body
Error Responses
| Status Code | Reason |
|---|---|
| 400 Bad Request | The request body is malformed, missing required fields, or contains invalid data types. The response body might contain details about the specific validation errors. |
| 401 Unauthorized | Authentication failed. The Authorization header is missing, invalid, or expired. |
| 404 Not Found | The specified projectId does not exist. |
| 500 Internal Server Error | An unexpected error occurred on the server side while processing the request. |
