Overview¶
The API supports querying multiple product variants in a single request using the + syntax. This creates a seamless time series that spans standard, NRT, and forecast data, automatically selecting the best available data for each date.
Syntax¶
Combine product names with + in the product parameter:
product=d-mssm+d-mssm-nrt+d-mssm-fcThe API stitches the data seamlessly: historical dates return standard data, recent dates return NRT data, and future dates return forecasts. The feed field in each data point identifies which tier provided that value.
Available combinations¶
| Combination | Description |
|---|---|
d-mssm+d-mssm-nrt | Standard + NRT (seamless recent history) |
d-mssm+d-mssm-nrt+d-mssm-fc | Standard + NRT + Forecast (full seamless time series) |
d-essm+d-essm-nrt | Enhanced standard + NRT |
d-essm+d-essm-nrt+d-essm-fc | Enhanced standard + NRT + Forecast |
d-hssm+d-hssm-nrt | High-resolution standard + NRT |
d-hssm+d-hssm-nrt+d-hssm-fc | High-resolution standard + NRT + Forecast |
Worked example¶
Query a seamless D-MSSM time series spanning standard, NRT, and forecast:
curl 'https://api.wx.spire.com/soil-moisture/point?product=d-mssm%2Bd-mssm-nrt%2Bd-mssm-fc&start_date=2026-02-10&end_date=2026-02-20&lat=14&lon=100.5&format=JSON' \
-H 'spire-api-key: ${SPIRE_API_KEY}'The response contains data points where the feed field transitions across tiers:
{
"data": [
{
"times": { "valid_time": "2026-02-10 12:00:00" },
"values": { "d_mssm": 0.325, "pflag": 0.0, "qflag": 0.0, "aflag": 0, "feed": "standard" }
},
{
"times": { "valid_time": "2026-02-11 12:00:00" },
"values": { "d_mssm": 0.270, "pflag": 0.0, "qflag": 0.0, "aflag": 0, "feed": "standard" }
},
{
"times": { "valid_time": "2026-02-14 12:00:00" },
"values": { "d_mssm": 0.290, "pflag": 0.0, "qflag": 0.0, "aflag": 0, "feed": "nrt" }
},
{
"times": { "valid_time": "2026-02-17 12:00:00" },
"values": { "d_mssm": 0.285, "pflag": 0.0, "qflag": 0.0, "aflag": 0, "issuance_time": "i20260216.t12z", "model": "sof-d", "update": "u1", "feed": "fc" }
}
],
"meta": { "message": null }
}