Studio
User-uploaded energy consumption data from CSV imports or smart meters. Enables precise solar optimization based on actual historical usage. See Accuracy — Studio Profile.
List studio profiles
List all studio profiles for the authenticated organization. Returns lightweight metadata (no hourly data). Uses organizationId query param or falls back to personal organization.
Query parameters
- Name
organizationId- Type
- string
- Description
Organization to list profiles for. Defaults to personal organization.
Response
Request
curl -G https://api.enhub.nl/v1/studio-profiles \
-H "Authorization: Bearer {token}"
Response
[
{
"id": "cm5k2l3m4000008l8a1b2c3d4",
"name": "Profiel 1",
"baseProfileType": "template",
"baseProfileName": "Alleenstaand",
"totalKwh": 3200,
"peakKw": 4.2,
"totalExportKwh": 1500,
"peakExportKw": 3.5,
"layerCount": 3,
"hasSolarLayer": false,
"year": 2026,
"updatedAt": "2025-01-15T10:30:00.000Z"
}
]
Create new studio profile
Create a new empty studio profile. The name defaults to "Profiel N" based on the number of existing profiles in the project.
Optional attributes
- Name
organizationId- Type
- string
- Description
Organization ID to associate the profile with
- Name
name- Type
- string
- Description
Display name for the profile
- Name
year- Type
- number
- Description
Profile year
Response
Request
curl -X POST https://api.enhub.nl/v1/studio-profiles \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"organizationId": "string",
"name": "Profiel 1",
"year": 2026
}'
Response (201 Created)
{
"id": "cm5k2l3m4000008l8a1b2c3d4",
"name": "Profiel 1",
"baseProfileType": "template",
"baseProfileName": "Alleenstaand",
"totalKwh": 3200,
"peakKw": 4.2,
"totalExportKwh": 1500,
"peakExportKw": 3.5,
"layerCount": 3,
"hasSolarLayer": false,
"year": 2026,
"userId": "string",
"organizationId": "string",
"createdAt": "2025-01-15T10:30:00.000Z",
"updatedAt": "2025-01-15T10:30:00.000Z"
}
Fetch complete studio profile
Load a studio profile with its full editor state (base profile, layers, result).
Path parameters
- Name
id- Type
- string
- Description
No description available.
Query parameters
- Name
organizationId- Type
- string
- Description
Organization context. Defaults to personal organization.
Response
Request
curl -G https://api.enhub.nl/v1/studio-profiles/{id} \
-H "Authorization: Bearer {token}"
Response
{
"id": "cm5k2l3m4000008l8a1b2c3d4",
"name": "Profiel 1",
"baseProfileType": "template",
"baseProfileName": "Alleenstaand",
"totalKwh": 3200,
"peakKw": 4.2,
"totalExportKwh": 1500,
"peakExportKw": 3.5,
"layerCount": 3,
"hasSolarLayer": false,
"year": 2026,
"userId": "string",
"organizationId": "string",
"createdAt": "2025-01-15T10:30:00.000Z",
"updatedAt": "2025-01-15T10:30:00.000Z",
"studioState": null
}
Duplicate studio profile
Create a copy of a studio profile, including its state file. The name defaults to "{original name} (kopie)".
Path parameters
- Name
id- Type
- string
- Description
No description available.
Optional attributes
- Name
name- Type
- string
- Description
Name for the duplicated profile
Query parameters
- Name
organizationId- Type
- string
- Description
No description available.
Response
Request
curl -X POST https://api.enhub.nl/v1/studio-profiles/{id}/duplicate \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"name": "Profiel 1 (kopie)"
}'
Response (201 Created)
{
"id": "cm5k2l3m4000008l8a1b2c3d4",
"name": "Profiel 1",
"baseProfileType": "template",
"baseProfileName": "Alleenstaand",
"totalKwh": 3200,
"peakKw": 4.2,
"totalExportKwh": 1500,
"peakExportKw": 3.5,
"layerCount": 3,
"hasSolarLayer": false,
"year": 2026,
"userId": "string",
"organizationId": "string",
"createdAt": "2025-01-15T10:30:00.000Z",
"updatedAt": "2025-01-15T10:30:00.000Z"
}
Save studio profile
Full save of the studio profile editor state. Uploads the complete state (base profile, layers with configs + computed data, result array). Also updates DB summary stats and writes the result to the profile JSONB column for scan compatibility.
Path parameters
- Name
id- Type
- string
- Description
No description available.
Required attributes
- Name
studioState- Type
- StudioStateDto
Optional attributes
- Name
year- Type
- number
- Description
Profile year
Query parameters
- Name
organizationId- Type
- string
- Description
No description available.
Response
Request
curl -X PUT https://api.enhub.nl/v1/studio-profiles/{id} \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"studioState": {
"baseProfile": {
"type": "template",
"templateId": "string",
"name": "Alleenstaand",
"description": "string",
"annualKwh": 2500,
"data": [
0
],
"exportData": [
0
],
"originalData": [
0
]
},
"layers": [
{
"id": "string",
"type": "ev_charger",
"name": "Elektrische auto",
"enabled": true,
"config": null,
"data": [
"..."
]
}
],
"result": [
0
],
"exportResult": [
0
],
"productionResult": [
0
]
},
"year": 2026
}'
Response
{
"id": "cm5k2l3m4000008l8a1b2c3d4",
"name": "Profiel 1",
"baseProfileType": "template",
"baseProfileName": "Alleenstaand",
"totalKwh": 3200,
"peakKw": 4.2,
"totalExportKwh": 1500,
"peakExportKw": 3.5,
"layerCount": 3,
"hasSolarLayer": false,
"year": 2026,
"userId": "string",
"organizationId": "string",
"createdAt": "2025-01-15T10:30:00.000Z",
"updatedAt": "2025-01-15T10:30:00.000Z"
}
Rename studio profile
Update the display name of a studio profile.
Path parameters
- Name
id- Type
- string
- Description
No description available.
Required attributes
- Name
name- Type
- string
- Description
Updated display name for the profile
Query parameters
- Name
organizationId- Type
- string
- Description
No description available.
Response
Request
curl -X PATCH https://api.enhub.nl/v1/studio-profiles/{id} \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"name": "Mijn thuisprofiel"
}'
Response
{
"id": "cm5k2l3m4000008l8a1b2c3d4",
"name": "Profiel 1",
"baseProfileType": "template",
"baseProfileName": "Alleenstaand",
"totalKwh": 3200,
"peakKw": 4.2,
"totalExportKwh": 1500,
"peakExportKw": 3.5,
"layerCount": 3,
"hasSolarLayer": false,
"year": 2026,
"userId": "string",
"organizationId": "string",
"createdAt": "2025-01-15T10:30:00.000Z",
"updatedAt": "2025-01-15T10:30:00.000Z"
}
Delete studio profile
Delete a studio profile and state file. If this profile is referenced by any scans, those references will be set to null.
Path parameters
- Name
id- Type
- string
- Description
No description available.
Query parameters
- Name
organizationId- Type
- string
- Description
No description available.
Response
Request
curl -X DELETE https://api.enhub.nl/v1/studio-profiles/{id} \
-H "Authorization: Bearer {token}"