Service Requests

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.


Reference Link

POST https://api.portal.scanifly.com/api/v1/serviceRequests?access_token={access_token}

Request Body

FieldTypeRequiredDescription
projectIdStringYesProject ID that the service request is associated with
statusStringYesInitial status of the service request, "ordered"
tierLevelStringYesRequested service tier (e.g., "maxFill")
formObjectYesObject containing design parameters and requirements. See below
upgradeBooleanYesIndicates if this is an upgrade request. Set to true or false
isExpeditedBooleanYesIndicates 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.

FieldTypeDescription
idStringThe unique identifier for the newly created service request.
companyNameStringName of the company associated with the request.
projectDesignObjectContains the id (String) of the associated project design artifact.
userInfoObjectInformation about the user who created the request (id, firstName, lastName, email).
statusStringThe current status of the service request (e.g., "ordered").
tierLevelStringThe tier level assigned to the request (e.g., "maxFill").
addOnsArrayList of any add-ons associated with the request (potentially objects).
formObjectAn echo of the form object submitted in the request.
designServiceProviderIdStringIdentifier for the design service provider assigned to this request.
designServiceProviderNameStringName of the assigned design service provider.
isExpeditedBooleanIndicates if the request is marked as expedited.
isAutomatedBooleanIndicates if the request processing was (or will be) automated.
createdAtStringISO 8601 timestamp indicating when the request was created.
updatedAtStringISO 8601 timestamp indicating when the request was last updated.
projectObjectDetails of the associated project (id, name, status, mode)
companyObjectContains the id (String) of the associated company.
modelRevisionCountStringRevision count for the associated model (starts at "0")

Example Success Response Body



Error Responses

Status CodeReason
400 Bad RequestThe request body is malformed, missing required fields, or contains invalid data types. The response body might contain details about the specific validation errors.
401 UnauthorizedAuthentication failed. The Authorization header is missing, invalid, or expired.
404 Not FoundThe specified projectId does not exist.
500 Internal Server ErrorAn unexpected error occurred on the server side while processing the request.