Skip to content

Quickstart

This guide takes you from credentials to your first data response.

  • API credentials from the SolarSENS team — see Get access if you don’t have them yet.
  • Requests must come from an IP address registered with your account; calls from other addresses are rejected.

All endpoints live under the base URL:

https://www.public.solarsens.co:8443/ava/public/api/v1

Exchange your username and password for a token pair. The request is form-encoded, not JSON.

Terminal window
curl -X POST "https://www.public.solarsens.co:8443/ava/public/api/v1/login/access-token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "username=your_username&password=your_password"

The response contains both tokens:

{
"access_token": "eyJhbGciOiJIUzI1NiIsInR...",
"token_type": "bearer",
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR..."
}

The access token is valid for 1 hour; refresh it with the refresh token rather than logging in again. For long-running integrations there is also a non-expiring token option. Both are covered in Authentication and access.

Every data request carries the access token as a Bearer header. Start with the plant list — it returns the plants your account can query, including each plant’s id (used in every other plant request) and time zone.

Terminal window
curl "https://www.public.solarsens.co:8443/ava/public/api/v1/data/plant/list" \
-H "Authorization: Bearer $ACCESS_TOKEN"
[
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "DEMO-P001-Plant-1",
"label": "DEMO-P001-Plant-1",
"tz_offset": "+07:00",
"country": "Vietnam",
"plant_biz_model": "PPA Rooftop Zero Export",
"plant_type": null,
"string_count_per_scb": null
}
]

Attributes that are not configured for a plant come through as null.

Ask for specific KPIs by name. Here: today’s active power and daily yield for one plant.

Terminal window
curl -X POST "https://www.public.solarsens.co:8443/ava/public/api/v1/data/plant/daily" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"plant_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"kpis": ["real_time_plant_active_power", "real_time_plant_daily_yield"]
}'
[
{
"plant_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"date": "2025-03-17",
"tz_offset": "+07:00",
"data": {
"real_time_plant_active_power": [
{ "ts": "1742976300000", "value": "57.753" }
],
"real_time_plant_daily_yield": [
{ "ts": "1742974200000", "value": "936.61" }
]
}
}
]

Read the response by date and tz_offset: the day window is computed in the plant’s own time zone. A KPI with no data for the day comes back as an empty list, which is also what an offline plant returns.