Managing Projects
This guide explains how to create, update, and delete projects using the Glint Solar API.
Prerequisites
Before working with projects, you need:
- A valid Personal Access Token
- An Organization ID (
orgId) - A Portfolio ID (
portfolioId)
You can retrieve these IDs using the List organizations and List portfolios endpoints.
Understanding Project Properties
Projects in Glint Solar have dynamic properties that vary by organization. Each organization can customize which properties are available for their projects.
Discovering Available Properties
Call the schema endpoint to discover which properties are available:
curl -X GET "https://api.glintsolar.com/projects/v1/schema?orgId=YOUR_ORG_ID" \
-H "X-API-Key: YOUR_PERSONAL_ACCESS_TOKEN"
The response includes all available properties:
{
"properties": [
{
"id": "name",
"name": "Name",
"property_type": "text"
},
{
"id": "prop_eacbXutstHQizrOc",
"name": "Status",
"property_type": "select",
"select": {
"options": [
{ "id": "a1b2c3d4e5f6g7h8", "name": "Planning", "color": "#3498db" },
{ "id": "h8g7f6e5d4c3b2a1", "name": "In Progress", "color": "#f1c40f" },
{ "id": "x9y8z7w6v5u4t3s2", "name": "Completed", "color": "#2ecc71" }
]
}
},
{
"id": "prop_kLmNoPqRsTuVwXyZ",
"name": "Capacity (MW)",
"property_type": "number"
},
{
"id": "prop_AbCdEfGhIjKlMnOp",
"name": "Start Date",
"property_type": "date"
},
{
"id": "prop_QrStUvWxYzAbCdEf",
"name": "Reviewed by",
"property_type": "people"
}
]
}
Each property has:
id— The key to use when setting the propertyname— Human-readable display nameproperty_type— The type of value expectedselect— For select/multi_select types, the available options
Read-Only Properties
The following properties are computed by the system and cannot be set:
location- A GeoJSON point, marking the project location, which is automatically computed when adding objects to the project.
Property Types Reference
Each property type has a specific format. Use the property's id from the schema as the key.
Text Properties
For text, url, and email property types:
{
"name": { "text": "Solar Farm Alpha" },
"prop_wEbSiTeUrLxYz123": { "text": "https://example.com" },
"prop_cOnTaCtEmAiL456": { "text": "contact@example.com" }
}
Number Properties
For number property types:
{
"prop_kLmNoPqRsTuVwXyZ": { "number": 50.5 }
}
Date Properties
For date property types, use ISO 8601 date format (YYYY-MM-DD):
{
"prop_AbCdEfGhIjKlMnOp": {
"date": {
"start": "2026-06-01"
}
}
}
Note that the reason date has a start property is to enable support for more complex dates in the future, for instance intervals. Currently, intervals are not supported.
Select Properties
For select property types, provide an array with a single option ID from the schema:
{
"prop_eacbXutstHQizrOc": {
"select": ["a1b2c3d4e5f6g7h8"]
}
}
Multi-Select Properties
For multi_select property types, provide an array of option IDs:
{
"prop_tAgSmUlTiSeLeCt": {
"select": ["a1b2c3d4e5f6g7h8", "x9y8z7w6v5u4t3s2"]
}
}
People Properties
For people property types, provide an array with a single user ID:
{
"prop_QrStUvWxYzAbCdEf": {
"people": ["usr_a1b2c3d4e5f6"]
}
}
You can get user IDs from the List users endpoint. Note that we currently only support setting a single user ID in people fields.
Creating a Project
To create a project, send a POST request with a properties object. The name property is required.
curl -X POST "https://api.glintsolar.com/projects/v1?orgId=YOUR_ORG_ID&portfolioId=YOUR_PORTFOLIO_ID" \
-H "X-API-Key: YOUR_PERSONAL_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"properties": {
"name": {
"text": "Solar Farm Alpha"
},
"prop_kLmNoPqRsTuVwXyZ": {
"number": 50.5
},
"prop_eacbXutstHQizrOc": {
"select": ["a1b2c3d4e5f6g7h8"]
},
"prop_AbCdEfGhIjKlMnOp": {
"date": { "start": "2026-06-01" }
}
}
}'
Response
A successful request returns the created project:
{
"id": "pro_x1y2z3w4v5u6",
"properties": {
"name": { "text": "Solar Farm Alpha" },
"prop_kLmNoPqRsTuVwXyZ": { "number": 50.5 },
"prop_eacbXutstHQizrOc": { "select": ["a1b2c3d4e5f6g7h8"] },
"prop_AbCdEfGhIjKlMnOp": { "date": { "start": "2026-06-01" } }
},
"created_at": "2026-01-15T10:30:00Z",
"updated_at": "2026-01-15T10:30:00Z"
}
Updating Project Properties
To update a project, send a PUT request with the properties you want to change. Only include the properties you want to update — other properties will remain unchanged.
curl -X PUT "https://api.glintsolar.com/projects/v1/pro_x1y2z3w4v5u6?orgId=YOUR_ORG_ID&portfolioId=YOUR_PORTFOLIO_ID" \
-H "X-API-Key: YOUR_PERSONAL_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"properties": {
"prop_eacbXutstHQizrOc": {
"select": ["h8g7f6e5d4c3b2a1"]
},
"prop_kLmNoPqRsTuVwXyZ": {
"number": 75.0
}
}
}'
Clearing Property Values
To clear a property value, set it to null:
{
"properties": {
"prop_wEbSiTeUrLxYz123": { "text": null },
"prop_kLmNoPqRsTuVwXyZ": { "number": null },
"prop_AbCdEfGhIjKlMnOp": { "date": null },
"prop_eacbXutstHQizrOc": { "select": null },
"prop_QrStUvWxYzAbCdEf": { "people": null }
}
}
Response
A successful update returns the updated project:
{
"id": "pro_x1y2z3w4v5u6",
"properties": {
"name": { "text": "Solar Farm Alpha" },
"prop_kLmNoPqRsTuVwXyZ": { "number": 75.0 },
"prop_eacbXutstHQizrOc": { "select": ["h8g7f6e5d4c3b2a1"] },
"prop_AbCdEfGhIjKlMnOp": { "date": { "start": "2026-06-01" } }
},
"created_at": "2026-01-15T10:30:00Z",
"updated_at": "2026-01-15T14:45:00Z"
}
Deleting a Project
To delete a project, send a DELETE request:
curl -X DELETE "https://api.glintsolar.com/projects/v1/pro_x1y2z3w4v5u6?orgId=YOUR_ORG_ID&portfolioId=YOUR_PORTFOLIO_ID" \
-H "X-API-Key: YOUR_PERSONAL_ACCESS_TOKEN"
A successful deletion returns a 200 status with an empty response body.