pvnode API

Historical


Get historical data for a site

GET
https://api.pvnode.com
/v2/historical/{site_id}

Returns historical PV / weather / irradiance time series for a saved site.

Data is returned at 15-minute resolution using the site's stored location and configuration. Timestamps are in the site's local timezone by default (see timezone in the response); pass ?timezone=utc to receive UTC timestamps ending in Z. Each call consumes one request from your monthly quota and is recomputed fresh — there is no server-side caching.

Get historical data for a site › path Parameters

site_id
​string · required

Get historical data for a site › query Parameters

period
​

Window length relative to yesterday, e.g. 14d, 3m, 1y. Units: d (days), m (30 days), y (365 days). Bare numbers like 30 are rejected — always specify a unit. Cannot be combined with start_date/end_date. Defaults to 14 days (clamped to your plan's maximum) when omitted.

Example: 14d
start_date
​

Inclusive start of the historical window (YYYY-MM-DD, site-local). Must be paired with end_date. Cannot be combined with period. Must be on or after your plan's earliest allowed date.

end_date
​

Inclusive end of the historical window (YYYY-MM-DD, site-local). Must be paired with start_date. Cannot be later than yesterday — historical data only covers up to yesterday.

include
​string[]

Field groups to include in the response. Combine freely (?include=weather&include=irradiance). default = pv_power. Omit default to receive only the requested groups. all returns every available field. strings adds a separate top-level strings array with per-string PV power + tilted irradiance (long format). Historical data has no clearsky reference.

Enum values:
default
all
weather
irradiance
strings
Default: ["default"]
timezone
​string · enum

Timezone of the returned values/strings timestamps. local (default) = naive site-local ISO 8601 (no offset); read the timezone field to interpret them. utc = RFC 3339 UTC ending in Z, and the response timezone field becomes UTC. The requested date window stays site-local. Use utc for clients without an IANA timezone database (e.g. jq-based integrations).

Enum values:
local
utc
Default: local

Get historical data for a site › Headers

Authorization
​string · required

Bearer token. Format: Bearer YOUR_API_KEY

Default: Bearer YOUR_API_KEY

Get historical data for a site › Responses

Successful Response

site_id
​string · required
timezone
​string · required

IANA timezone of the timestamps, e.g. 'Europe/Berlin'. Becomes 'UTC' when ?timezone=utc is requested.

start_date
​string · required

Inclusive start date of the returned window (YYYY-MM-DD, site-local).

end_date
​string · required

Inclusive end date of the returned window (YYYY-MM-DD, site-local).

included
​string[] · required

Groups included in this response — echoes what you requested via include. Requesting all is echoed as ["all"], not expanded.

Example: ["default","weather"]
available
​string[] · required

Every group your current plan is allowed to request on this endpoint — use it to discover what you could ask for beyond what you did. The meta-token all is not listed: it is shorthand for every group here. Historical data has no clear-sky reference and no variability band, so this list is shorter than the forecast one.

Example: ["default","weather","irradiance","strings"]
​HistoricalValue[] · required
​

Per-string PV power and tilted irradiance (gti/gti_shaded) in long format (one row per timestep per string). Present only when include=strings (or all). Each row carries string_index (positional, always present) and, for saved sites, string_id (stable id — use it to correlate with a string's measurements). values is unaffected — total pv_power there is the sum across strings.


Get historical data without a saved site

POST
https://api.pvnode.com
/v2/historical/inline

Returns historical PV / weather / irradiance time series without requiring a saved site.

Provide the location (latitude + longitude) and optionally strings and config inline. Computed fresh on every call and counts against your monthly historical quota.

Get historical data without a saved site › query Parameters

period
​

Window length relative to yesterday, e.g. 14d, 3m, 1y. Cannot be combined with start_date/end_date. See the saved-site endpoint for full rules.

Example: 14d
start_date
​

Inclusive start (YYYY-MM-DD, site-local). Must be paired with end_date; cannot be combined with period.

end_date
​

Inclusive end (YYYY-MM-DD, site-local). Must be paired with start_date; cannot be later than yesterday.

include
​string[]

Field groups to include. See the saved-site endpoint for details.

Enum values:
default
all
weather
irradiance
strings
Default: ["default"]
timezone
​string · enum

Timezone of the returned timestamps: local (default) or utc. See the saved-site endpoint for details.

Enum values:
local
utc
Default: local

Get historical data without a saved site › Headers

Authorization
​string · required

Bearer token. Format: Bearer YOUR_API_KEY

Default: Bearer YOUR_API_KEY

Get historical data without a saved site › Request Body

Historical request without a saved site. Minimum: latitude + longitude. The date window (`period` or `start_date`+`end_date`) and `include` are query params, matching the saved-site historical endpoint.
latitude
​number · min: -89.99 · max: 89.99 · required

Latitude of the site in decimal degrees (WGS84).

Example: 48.8566
longitude
​number · min: -179.99 · max: 179.99 · required

Longitude of the site in decimal degrees (WGS84).

Example: 2.3522
​

PV string definitions. Defaults to a single string (10 kWp, 180° orientation, 30° tilt) if omitted.

​

Site configuration overrides. Omitted fields fall back to current defaults.

Get historical data without a saved site › Responses

Successful Response

site_id
​string · required
timezone
​string · required

IANA timezone of the timestamps, e.g. 'Europe/Berlin'. Becomes 'UTC' when ?timezone=utc is requested.

start_date
​string · required

Inclusive start date of the returned window (YYYY-MM-DD, site-local).

end_date
​string · required

Inclusive end date of the returned window (YYYY-MM-DD, site-local).

included
​string[] · required

Groups included in this response — echoes what you requested via include. Requesting all is echoed as ["all"], not expanded.

Example: ["default","weather"]
available
​string[] · required

Every group your current plan is allowed to request on this endpoint — use it to discover what you could ask for beyond what you did. The meta-token all is not listed: it is shorthand for every group here. Historical data has no clear-sky reference and no variability band, so this list is shorter than the forecast one.

Example: ["default","weather","irradiance","strings"]
​HistoricalValue[] · required
​

Per-string PV power and tilted irradiance (gti/gti_shaded) in long format (one row per timestep per string). Present only when include=strings (or all). Each row carries string_index (positional, always present) and, for saved sites, string_id (stable id — use it to correlate with a string's measurements). values is unaffected — total pv_power there is the sum across strings.