• API Overview
  • API Reference
  • C Library
  • Web Application
  • Knowledge Base
  • Back to meteonorm.com
account
    /accountget
climate
    /climate/tmyget/climate/amyget/climate/import/monthlypost
forecast
    /forecast/basicget/forecast/precisionget
observation
    /observation/realtimeget/observation/trainingget/observation/historicalget
horizon
    /horizonget/altitudeget
Schemas
powered by Zudoku
Meteonorm API
Meteonorm API

observation


/observation/realtime

GET
https://api.meteonorm.com/v1
/observation/realtime

Real-time irradiance data for the past 7 days, based on weather satellites. Updated every 15 minutes.

A request costs 1 Meteonorm API token. For details, see Observation pricing.

/observation/realtime › query Parameters

lat
​Latitude · double · min: -90 · max: 90 · required

Latitude in degrees (North is positive).

Example: 47.3768
lon
​Longitude · double · min: -180 · max: 180 · required

Longitude in degrees (East is positive).

Example: 8.5417
parameters
​ObservationParameters

Comma-separated list of parameter names, or the string "all".

Parameters:
• global_horizontal_irradiance
• global_horizontal_irradiance_with_shading
• direct_horizontal_irradiance
• direct_horizontal_irradiance_with_shading
• diffuse_horizontal_irradiance
• diffuse_horizontal_irradiance_with_shading
• direct_normal_irradiance
• direct_normal_irradiance_with_shading
• global_tilted_irradiance
• global_tilted_irradiance_with_shading
• direct_tilted_irradiance
• direct_tilted_irradiance_with_shading
• diffuse_tilted_irradiance
• diffuse_tilted_irradiance_with_shading
• pv_production
• pv_production_with_shading
• global_clear_sky_irradiance
• temperature
• snow_depth

Example: global_horizontal_irradiance,global_tilted_irradiance,temperature
Default: global_horizontal_irradiance,temperature
start
​string · pattern: ^now|[-\+]\d+(hours|…

Start time (UTC) of observation/realtime time series.

Either an ISO 8601 date-time string in the format YYYY-mm-ddTHH:MMZ or YYYY-mm-ddTHH:MM:SSZ, or a relative date/time string (relative with respect to the current time).

Examples:

now
-24hours
-5days
2025-05-15T12:00Z
2025-05-15T12:00:00Z

Example: 2025-01-15T12:00Z
Default: -24hours
end
​string · pattern: ^now|[-\+]\d+(hours|…

End time (UTC) of observation/realtime time series. The end time is exclusive.

Either an ISO 8601 date-time string in the format YYYY-mm-ddTHH:MMZ or YYYY-mm-ddTHH:MM:SSZ, or a relative date/time string (relative with respect to the current time).

Examples:

now
-3hours
-1days
2025-05-15T12:00Z
2025-05-15T12:00:00Z

Example: 2025-01-15T12:00Z
Default: now
frequency
​string · enum

Temporal resolution of the resulting time series.

Time series frequency

Enum values:
1_minute
15_minutes
1_hour
Default: 15_minutes
response_format
​ObscastResponseFormat · enum

Response data format.

Enum values:
json
csv
Default: json
surface_azimuth
​SurfaceAzimuth · double · min: 0 · max: 360

Azimuth angle of the panel surface.

• 0° = oriented towards the north
• 90° = oriented towards the east
• 180° = oriented towards the south
• 270° = oriented towards the west

Example: 186
Default: 0
surface_tilt
​SurfaceTilt · double · min: 0 · max: 90

Tilt angle of the panel surface.

• 0° = horizontal
• 90° = vertical

Default: 0
tracking_mode
​TrackingMode · enum

Panel tracking mode for tilted irradiance calculations.

• none: No axis tracking. Fixed surface orientation (uses surface_azimuth and surface_tilt parameters).
• 1_axis: Single-axis tracking. In this mode, parameters surface_azimuth and surface_tilt are ignored. The solar panels are mounted on a rotational axis parallel to the ground along a North-South line, tilting dynamically East-to-West to follow the sun's trajectory throughout the day. Backtracking is applied: the tracking angle does not follow the sun in a naïve way. Instead, for low sun angles, it moves backwards to its ideal position to prevent row-to-row shading in PV arrays. The maximum tilt angle is 45° and a ground coverage ratio (GCR) of 0.3 is assumed.

Enum values:
none
1_axis
Default: none
horizon
​Horizon · pattern: ^(auto|flat|[0-9]+(,…

360° horizon line of the requested location.

• flat: Flat horizon (all values are 0°).
• auto: Horizon is determined automatically using a global 30m digital elevation model.
• [comma-separated values]: provide 360 integer values representing elevation angles (in degrees) of the horizon in 360 directions. Elevation angles must be ≥0° and <90°. List indices 0–359 correspond to azimuth:
Index 0 = 0° (North)
Index 90 = 90° (East)
Index 180 = 180° (South)
Index 270 = 270° (West)
Each value indicates the elevation angle at the corresponding azimuth.

Example: 0,0,0,2,4,4,6,10,...,9,7,8,6,5,3,0
Default: flat

/observation/realtime › Responses

Response

API response containing a time series, with the start and end times expressed in UTC.
ObservationResponse
start_times
​string[] · required

Start or end ISO 8601 date-time strings of each time series interval.

end_times
​string[] · required

Start or end ISO 8601 date-time strings of each time series interval.

​ValuesObservation · required

Time series of an observation response.

​Metadata · required
GET/observation/realtime
curl 'https://api.meteonorm.com/v1/observation/realtime?lat=<number>&lon=<number>' \ --header 'Authorization: Bearer <token>'
Example Responses
{ "start_times": [ "2024-08-25T15:00:00Z" ], "end_times": [ "2024-08-25T15:00:00Z" ], "values": { "global_horizontal_irradiance": [ 0 ], "global_horizontal_irradiance_with_shading": [ 0 ], "direct_horizontal_irradiance": [ 0 ], "direct_horizontal_irradiance_with_shading": [ 0 ], "diffuse_horizontal_irradiance": [ 0 ], "diffuse_horizontal_irradiance_with_shading": [ 0 ], "direct_normal_irradiance": [ 0 ], "direct_normal_irradiance_with_shading": [ 0 ], "global_tilted_irradiance": [ 0 ], "global_tilted_irradiance_with_shading": [ 0 ], "direct_tilted_irradiance": [ 0 ], "direct_tilted_irradiance_with_shading": [ 0 ], "diffuse_tilted_irradiance": [ 0 ], "diffuse_tilted_irradiance_with_shading": [ 0 ], "pv_production": [ 0 ], "pv_production_with_shading": [ 0 ], "global_clear_sky_irradiance": [ 0 ], "temperature": [ 0 ], "snow_depth": [ 0 ], "surface_azimuth": [ 0 ], "surface_tilt": [ 0 ] }, "meta": { "version": "9.0.0", "commit": "a1b2c3d4", "frequency": "1_minute", "parameters": [ { "description": "Global horizontal irradiance", "name": "global_horizontal_irradiance", "unit": { "name": "W/m**2", "description": "Watt per square meter" }, "aggregation_method": "average" } ], "lat": 47.3768, "lon": 8.5417, "altitude": 0, "surface_azimuth": 0, "surface_tilt": 0, "time_zone": 0 } }
json

/observation/training

GET
https://api.meteonorm.com/v1
/observation/training

Available time period: the current year excluding the last 7 days, plus the latest two full calendar years.

A request costs 200 Meteonorm API tokens for a period of one year (calculated proportionally). For details, see Observation pricing.

/observation/training › query Parameters

lat
​Latitude · double · min: -90 · max: 90 · required

Latitude in degrees (North is positive).

Example: 47.3768
lon
​Longitude · double · min: -180 · max: 180 · required

Longitude in degrees (East is positive).

Example: 8.5417
parameters
​ObservationParameters

Comma-separated list of parameter names, or the string "all".

Parameters:
• global_horizontal_irradiance
• global_horizontal_irradiance_with_shading
• direct_horizontal_irradiance
• direct_horizontal_irradiance_with_shading
• diffuse_horizontal_irradiance
• diffuse_horizontal_irradiance_with_shading
• direct_normal_irradiance
• direct_normal_irradiance_with_shading
• global_tilted_irradiance
• global_tilted_irradiance_with_shading
• direct_tilted_irradiance
• direct_tilted_irradiance_with_shading
• diffuse_tilted_irradiance
• diffuse_tilted_irradiance_with_shading
• pv_production
• pv_production_with_shading
• global_clear_sky_irradiance
• temperature
• snow_depth

Example: global_horizontal_irradiance,global_tilted_irradiance,temperature
Default: global_horizontal_irradiance,temperature
start
​string · pattern: ^now|[-\+]\d+(hours|…

Start time (UTC) of observation/training time series.

Either an ISO 8601 date-time string in the format YYYY-mm-ddTHH:MMZ or YYYY-mm-ddTHH:MM:SSZ, or a relative date/time string (relative with respect to the current time).

Examples:

2025-05-15T12:00Z
2025-05-15T12:00:00Z
-200days

Example: 2025-01-15T12:00Z
Default: -365days
response_format
​ObscastResponseFormat · enum

Response data format.

Enum values:
json
csv
Default: json
end
​string · pattern: ^now|[-\+]\d+(hours|…

End time (UTC) of observation/training time series. The end time is exclusive.

Either an ISO 8601 date-time string in the format YYYY-mm-ddTHH:MMZ or YYYY-mm-ddTHH:MM:SSZ, or a relative date/time string (relative with respect to the current time).

Examples:

2025-05-15T12:00Z
2025-05-15T12:00:00Z
-200days

Example: 2025-01-15T12:00Z
Default: -7days
frequency
​string · enum

Temporal resolution of the resulting time series.

Time series frequency

Enum values:
1_minute
15_minutes
1_hour
Default: 15_minutes
surface_azimuth
​SurfaceAzimuth · double · min: 0 · max: 360

Azimuth angle of the panel surface.

• 0° = oriented towards the north
• 90° = oriented towards the east
• 180° = oriented towards the south
• 270° = oriented towards the west

Example: 186
Default: 0
surface_tilt
​SurfaceTilt · double · min: 0 · max: 90

Tilt angle of the panel surface.

• 0° = horizontal
• 90° = vertical

Default: 0
tracking_mode
​TrackingMode · enum

Panel tracking mode for tilted irradiance calculations.

• none: No axis tracking. Fixed surface orientation (uses surface_azimuth and surface_tilt parameters).
• 1_axis: Single-axis tracking. In this mode, parameters surface_azimuth and surface_tilt are ignored. The solar panels are mounted on a rotational axis parallel to the ground along a North-South line, tilting dynamically East-to-West to follow the sun's trajectory throughout the day. Backtracking is applied: the tracking angle does not follow the sun in a naïve way. Instead, for low sun angles, it moves backwards to its ideal position to prevent row-to-row shading in PV arrays. The maximum tilt angle is 45° and a ground coverage ratio (GCR) of 0.3 is assumed.

Enum values:
none
1_axis
Default: none
horizon
​Horizon · pattern: ^(auto|flat|[0-9]+(,…

360° horizon line of the requested location.

• flat: Flat horizon (all values are 0°).
• auto: Horizon is determined automatically using a global 30m digital elevation model.
• [comma-separated values]: provide 360 integer values representing elevation angles (in degrees) of the horizon in 360 directions. Elevation angles must be ≥0° and <90°. List indices 0–359 correspond to azimuth:
Index 0 = 0° (North)
Index 90 = 90° (East)
Index 180 = 180° (South)
Index 270 = 270° (West)
Each value indicates the elevation angle at the corresponding azimuth.

Example: 0,0,0,2,4,4,6,10,...,9,7,8,6,5,3,0
Default: flat

/observation/training › Responses

Response

API response containing a time series, with the start and end times expressed in UTC.
ObservationResponse
start_times
​string[] · required

Start or end ISO 8601 date-time strings of each time series interval.

end_times
​string[] · required

Start or end ISO 8601 date-time strings of each time series interval.

​ValuesObservation · required

Time series of an observation response.

​Metadata · required
GET/observation/training
curl 'https://api.meteonorm.com/v1/observation/training?lat=<number>&lon=<number>' \ --header 'Authorization: Bearer <token>'
Example Responses
{ "start_times": [ "2024-08-25T15:00:00Z" ], "end_times": [ "2024-08-25T15:00:00Z" ], "values": { "global_horizontal_irradiance": [ 0 ], "global_horizontal_irradiance_with_shading": [ 0 ], "direct_horizontal_irradiance": [ 0 ], "direct_horizontal_irradiance_with_shading": [ 0 ], "diffuse_horizontal_irradiance": [ 0 ], "diffuse_horizontal_irradiance_with_shading": [ 0 ], "direct_normal_irradiance": [ 0 ], "direct_normal_irradiance_with_shading": [ 0 ], "global_tilted_irradiance": [ 0 ], "global_tilted_irradiance_with_shading": [ 0 ], "direct_tilted_irradiance": [ 0 ], "direct_tilted_irradiance_with_shading": [ 0 ], "diffuse_tilted_irradiance": [ 0 ], "diffuse_tilted_irradiance_with_shading": [ 0 ], "pv_production": [ 0 ], "pv_production_with_shading": [ 0 ], "global_clear_sky_irradiance": [ 0 ], "temperature": [ 0 ], "snow_depth": [ 0 ], "surface_azimuth": [ 0 ], "surface_tilt": [ 0 ] }, "meta": { "version": "9.0.0", "commit": "a1b2c3d4", "frequency": "1_minute", "parameters": [ { "description": "Global horizontal irradiance", "name": "global_horizontal_irradiance", "unit": { "name": "W/m**2", "description": "Watt per square meter" }, "aggregation_method": "average" } ], "lat": 47.3768, "lon": 8.5417, "altitude": 0, "surface_azimuth": 0, "surface_tilt": 0, "time_zone": 0 } }
json

/observation/historical

GET
https://api.meteonorm.com/v1
/observation/historical

Historical irradiance based on weather satellites and re-analysis products. Available time period: from 2020 onwards, excluding the last 7 days.

A request costs 200 Meteonorm API tokens for a period of one year (calculated proportionally). For details, see Observation pricing.

/observation/historical › query Parameters

lat
​Latitude · double · min: -90 · max: 90 · required

Latitude in degrees (North is positive).

Example: 47.3768
lon
​Longitude · double · min: -180 · max: 180 · required

Longitude in degrees (East is positive).

Example: 8.5417
start
​string · pattern: ^now|[-\+]\d+(hours|… · required

Start time (UTC) of observation/historical time series.

Either an ISO 8601 date-time string in the format YYYY-mm-ddTHH:MMZ or YYYY-mm-ddTHH:MM:SSZ, or a relative date/time string (relative with respect to the current time).

Examples:

2025-05-15T12:00Z
2025-05-15T12:00:00Z
-200days

Example: 2020-01-15T12:00Z
end
​string · pattern: ^now|[-\+]\d+(hours|… · required

End time (UTC) of observation/historical time series. The end time is exclusive.

Either an ISO 8601 date-time string in the format YYYY-mm-ddTHH:MMZ or YYYY-mm-ddTHH:MM:SSZ, or a relative date/time string (relative with respect to the current time).

Examples:

2025-05-15T12:00Z
2025-05-15T12:00:00Z
-200days

Example: 2025-01-15T12:00Z
parameters
​ObservationParameters

Comma-separated list of parameter names, or the string "all".

Parameters:
• global_horizontal_irradiance
• global_horizontal_irradiance_with_shading
• direct_horizontal_irradiance
• direct_horizontal_irradiance_with_shading
• diffuse_horizontal_irradiance
• diffuse_horizontal_irradiance_with_shading
• direct_normal_irradiance
• direct_normal_irradiance_with_shading
• global_tilted_irradiance
• global_tilted_irradiance_with_shading
• direct_tilted_irradiance
• direct_tilted_irradiance_with_shading
• diffuse_tilted_irradiance
• diffuse_tilted_irradiance_with_shading
• pv_production
• pv_production_with_shading
• global_clear_sky_irradiance
• temperature
• snow_depth

Example: global_horizontal_irradiance,global_tilted_irradiance,temperature
Default: global_horizontal_irradiance,temperature
frequency
​string · enum

Temporal resolution of the resulting time series.

Time series frequency

Enum values:
1_minute
15_minutes
1_hour
Default: 15_minutes
response_format
​ObscastResponseFormat · enum

Response data format.

Enum values:
json
csv
Default: json
surface_azimuth
​SurfaceAzimuth · double · min: 0 · max: 360

Azimuth angle of the panel surface.

• 0° = oriented towards the north
• 90° = oriented towards the east
• 180° = oriented towards the south
• 270° = oriented towards the west

Example: 186
Default: 0
surface_tilt
​SurfaceTilt · double · min: 0 · max: 90

Tilt angle of the panel surface.

• 0° = horizontal
• 90° = vertical

Default: 0
tracking_mode
​TrackingMode · enum

Panel tracking mode for tilted irradiance calculations.

• none: No axis tracking. Fixed surface orientation (uses surface_azimuth and surface_tilt parameters).
• 1_axis: Single-axis tracking. In this mode, parameters surface_azimuth and surface_tilt are ignored. The solar panels are mounted on a rotational axis parallel to the ground along a North-South line, tilting dynamically East-to-West to follow the sun's trajectory throughout the day. Backtracking is applied: the tracking angle does not follow the sun in a naïve way. Instead, for low sun angles, it moves backwards to its ideal position to prevent row-to-row shading in PV arrays. The maximum tilt angle is 45° and a ground coverage ratio (GCR) of 0.3 is assumed.

Enum values:
none
1_axis
Default: none
horizon
​Horizon · pattern: ^(auto|flat|[0-9]+(,…

360° horizon line of the requested location.

• flat: Flat horizon (all values are 0°).
• auto: Horizon is determined automatically using a global 30m digital elevation model.
• [comma-separated values]: provide 360 integer values representing elevation angles (in degrees) of the horizon in 360 directions. Elevation angles must be ≥0° and <90°. List indices 0–359 correspond to azimuth:
Index 0 = 0° (North)
Index 90 = 90° (East)
Index 180 = 180° (South)
Index 270 = 270° (West)
Each value indicates the elevation angle at the corresponding azimuth.

Example: 0,0,0,2,4,4,6,10,...,9,7,8,6,5,3,0
Default: flat

/observation/historical › Responses

Response

API response containing a time series, with the start and end times expressed in UTC.
ObservationResponse
start_times
​string[] · required

Start or end ISO 8601 date-time strings of each time series interval.

end_times
​string[] · required

Start or end ISO 8601 date-time strings of each time series interval.

​ValuesObservation · required

Time series of an observation response.

​Metadata · required
GET/observation/historical
curl 'https://api.meteonorm.com/v1/observation/historical?lat=<number>&lon=<number>&start=<string>&end=<string>' \ --header 'Authorization: Bearer <token>'
Example Responses
{ "start_times": [ "2024-08-25T15:00:00Z" ], "end_times": [ "2024-08-25T15:00:00Z" ], "values": { "global_horizontal_irradiance": [ 0 ], "global_horizontal_irradiance_with_shading": [ 0 ], "direct_horizontal_irradiance": [ 0 ], "direct_horizontal_irradiance_with_shading": [ 0 ], "diffuse_horizontal_irradiance": [ 0 ], "diffuse_horizontal_irradiance_with_shading": [ 0 ], "direct_normal_irradiance": [ 0 ], "direct_normal_irradiance_with_shading": [ 0 ], "global_tilted_irradiance": [ 0 ], "global_tilted_irradiance_with_shading": [ 0 ], "direct_tilted_irradiance": [ 0 ], "direct_tilted_irradiance_with_shading": [ 0 ], "diffuse_tilted_irradiance": [ 0 ], "diffuse_tilted_irradiance_with_shading": [ 0 ], "pv_production": [ 0 ], "pv_production_with_shading": [ 0 ], "global_clear_sky_irradiance": [ 0 ], "temperature": [ 0 ], "snow_depth": [ 0 ], "surface_azimuth": [ 0 ], "surface_tilt": [ 0 ] }, "meta": { "version": "9.0.0", "commit": "a1b2c3d4", "frequency": "1_minute", "parameters": [ { "description": "Global horizontal irradiance", "name": "global_horizontal_irradiance", "unit": { "name": "W/m**2", "description": "Watt per square meter" }, "aggregation_method": "average" } ], "lat": 47.3768, "lon": 8.5417, "altitude": 0, "surface_azimuth": 0, "surface_tilt": 0, "time_zone": 0 } }
json

forecasthorizon