Create a new module component

Creates a module component. For integration-created modules, set source to userCreated.

When source is userCreated, Scanifly automatically creates a company component-library entry for the new module and stores any optional metadata on that entry.

Module Library API

Use the Module Library API to create and manage user-created module components and add those modules to a company's component library.

Base URL

https://api.portal.scanifly.com

All endpoints are versioned under /api/v1.

Authentication

Send your Scanifly API token on each request:

x-api-token: YOUR_API_TOKEN

Main Workflow

  1. Create a user-created module component. Scanifly automatically creates the company library entry when source is userCreated.
  2. Read the company module library to confirm the module is available.
  3. Update entry metadata such as nickname, tags, notes, favorite status, or texture override.
  4. Add an existing component to the library directly only when you already have a component ID and need to create the library entry separately.

Endpoints

MethodEndpointPurpose
GET/api/v1/component/moduleList module components
POST/api/v1/component/moduleCreate a user-created module component
PUT/api/v1/component/module/{componentId}Update an existing module component
GET/api/v1/component/library/moduleList module library entries
POST/api/v1/component/libraryAdd a component to the library
PUT/api/v1/component/library/{componentLibraryEntryId}Update library entry metadata
DELETE/api/v1/component/library/{componentLibraryEntryId}Delete a library entry

Create a Module and Library Entry

POST /api/v1/component/module

The source for integration-created modules should be userCreated. When source is userCreated, Scanifly creates the module component and automatically adds it to the authenticated user's company library. Optional metadata is stored on that auto-created library entry.

{
  "model": "ABC-450",
  "manufacturer": "Example Solar",
  "source": "userCreated",
  "maxPowerOutput": 450,
  "maxPowerVoltage": 41.2,
  "maxPowerCurrent": 10.92,
  "openCircuitVoltage": 49.8,
  "shortCircuitCurrent": 11.45,
  "dimensions": {
    "length": 1900,
    "width": 1134
  },
  "cellQuantity": 144,
  "tempCoefficientMaxPower": -0.35,
  "tempCoefficientOpenCircuit": -0.28,
  "tempCoefficientShortCircuit": 0.05,
  "cellType": "monoSi",
  "defaultTexture": "module-monocrystalline",
  "metadata": {
    "nickname": "Example 450W",
    "tags": ["preferred", "residential"],
    "isFavorite": true
  }
}

Required Module Fields

FieldNotes
modelModule model name, maximum 100 characters
manufacturerManufacturer name, maximum 100 characters
sourceUse userCreated for integration-created modules
maxPowerOutputMaximum output
maxPowerVoltageMaximum power voltage, Vmp/V
maxPowerCurrentMaximum power current, Imp/A
openCircuitVoltageOpen circuit voltage in volts
shortCircuitCurrentShort circuit current in amps
dimensions.lengthModule length in millimeters, greater than 0
dimensions.widthModule width in millimeters, greater than 0
cellQuantityQuantity of cells
tempCoefficientMaxPowerTemperature coefficient of max power, %/C
tempCoefficientOpenCircuitTemperature coefficient of open circuit voltage, %/C
tempCoefficientShortCircuitTemperature coefficient of short circuit current, %/C
cellTypeOne of the supported module cell type enum values
defaultTextureOne of the supported module texture enum values

Some electrical fields may not be available in every partner system. When building an integration, confirm whether the source system stores these values directly, derives them from a product catalog, or needs a fallback product-data lookup before sending the module to Scanifly.

Add an Existing Module to the Library

POST /api/v1/component/library

Use this endpoint when a module component already exists and you need to create a library entry for it separately.

{
  "componentType": "module",
  "componentId": "MODULE_COMPONENT_ID",
  "metadata": {
    "nickname": "Example 450W",
    "tags": ["preferred", "residential"],
    "isFavorite": true
  }
}

Metadata is optional and can include:

FieldPurpose
nicknameCompany-specific display name
notesUser notes
internalSkuCompany-specific SKU
tagsSearch/filter labels
textureOverrideCustom 3D scene texture identifier
isFavoriteMarks the module as a favorite

Filtering and Sorting

GET /api/v1/component/module

filterBy[source][0]=userCreated
filterBy[cellType]=monoSi
filterBy[defaultTexture]=module-monocrystalline
sortBy[model]=asc
sortBy[updatedAt]=desc

GET /api/v1/component/library/module

filterBy[componentType]=module
filterBy[componentId]=MODULE_COMPONENT_ID
filterBy[searchText]=example

Supported Enum Values

cellType

  • monoSi
  • multiSi
  • polySi
  • cis
  • cigs
  • cdte
  • amorphous

defaultTexture

  • module-monocrystalline
  • module-polycrystalline
  • module-lg-neon
  • module-monocrystalline-black
  • module-sunpower-x
  • module-sunpower-x-black
  • module-polycrystalline-2
  • module-monocrystalline-3
  • module-monocrystalline-black-4
  • module-monocrystalline-black-5
Query Params
string

Optional admin override: create the component under this company instead of the authenticated user's company

Body Params
string
required
length ≤ 100

Model type

string
required
length ≤ 100

Manufacturer

string
enum
required

Source of where this module was created

Allowed:
sourceMetadata

Metadata on module. Required for adminImport and cec; ignored for userCreated.

number
required
≥ 0

Maximum output

number
required
≥ 0

Maximum Power Voltage (Vmp/V)

number
required
≥ 0

Maximum Power Current (Imp/A)

number
required
≥ 0

Open circuit voltage. Unit is volts (V)

number
required
≥ 0

Short circuit current. Unit is amps (A)

number
0 to 100

Efficiency percentage

dimensions
object
required

Physical dimensions of the module (in millimeters)

number
≥ 0

Weight in kilograms

number
0 to 100

The amount of additional power gain from the rear side of the module. Only applies to bifacial modules.

string

Only applies to BIPV modules. Reference to BIPV system object.

number
required
≥ 0

Quantity of cells

number
required

Temperature Coefficient of maxPower (%/℃)

number
required

Temperature Coefficient of openCircuitVoltage (%/℃)

number
required

Temperature Coefficient of shortCircuitCurrent (%/℃)

string
enum
required

Type of cell

Allowed:
string

Description

string
enum
required

Default texture image

metadata
object

Optional metadata to store on the auto-created library entry.

Responses

401
403
404
Language
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json