Glint Solar API

Managing Projects

This guide explains how to create, update, and delete projects using the Glint Solar API.

Prerequisites

Before working with projects, you need:

  1. A valid Personal Access Token
  2. An Organization ID (orgId)
  3. 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:

Read-Only Properties

The following properties are computed by the system and cannot be set:

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.