Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Base URL: https://api.wx.spire.com

Authentication

All API requests require the spire-api-key header:

curl 'https://api.wx.spire.com/soil-moisture/region?product=d-mssm' \
  -H 'spire-api-key: ${SPIRE_API_KEY}'

Error responses

StatusDescription
401Unauthorized — invalid or missing API key
403Forbidden — key does not have access to this product
412Precondition Failed — invalid product/region combination for your token
422Validation Error — malformed parameters

GET /soil-moisture/region

List available regional soil moisture files for the past 180 days.

Region query parameters

ParameterRequiredDescriptionAllowed values
productNoSoil moisture productd-mssm, d-essm, d-hssm, d-mssm-nrt, d-essm-nrt, d-hssm-nrt, d-mssm-anom, d-essm-anom, d-mssm-nrt-anom, d-essm-nrt-anom
dateNoFilter by date (returns files around this date)ISO 8601 (YYYY-MM-DD)
regionNoGeographical domainglobal, africa, asia, atlantic, europe, north-america_central-america_caribbean, south-america, south-west_pacific, or custom region
formatNoData formatnetcdf, geotiff
anom_typeNoAnomaly type (required for anomaly products)diff, prank
clim_refNoClimatological reference (required for anomaly products)10y, 30y
clim_windowNoAggregation window (required for anomaly products)r7day, r30day

Region response

{
  "meta": {
    "count": 5,
    "message": null
  },
  "files": [
    "smi.20260210.t12z.6000m.d-mssm.global.v0201.nc",
    "smi.20260211.t12z.6000m.d-mssm.global.v0201.nc"
  ]
}

Region examples

List global D-MSSM netCDF files:

curl 'https://api.wx.spire.com/soil-moisture/region?product=d-mssm&region=global&format=netcdf' \
  -H 'spire-api-key: ${SPIRE_API_KEY}'

List D-MSSM anomaly files for a specific date:

curl 'https://api.wx.spire.com/soil-moisture/region?product=d-mssm-anom&date=2026-02-10&region=global&format=netcdf&anom_type=diff&clim_ref=30y&clim_window=r7day' \
  -H 'spire-api-key: ${SPIRE_API_KEY}'

GET /soil-moisture/region/{file_id}

Download a specific regional file by its file ID (as returned by the listing endpoint).

Region file parameters

ParameterRequiredDescription
file_id (path)YesFile name from the listing response

Region file response

Returns a 303 redirect to a pre-signed download URL.

Region file example

curl -OJL 'https://api.wx.spire.com/soil-moisture/region/smi.20260210.t12z.6000m.d-mssm.global.v0201.nc' \
  -H 'spire-api-key: ${SPIRE_API_KEY}'

The -OJL flags tell curl to follow the redirect (-L), save the file with its server-provided name (-J), and write to a file (-O).


GET /soil-moisture/point

Retrieve a point time series (synchronous, up to 180 days).

Point query parameters

ParameterRequiredDescriptionAllowed values
productNoSoil moisture product (supports + syntax for combined queries)d-mssm, d-essm, d-hssm, d-mssm-nrt, d-essm-nrt, d-hssm-nrt, d-mssm-fc, d-essm-fc, d-mssm-anom, d-essm-anom, d-mssm-nrt-anom, d-essm-nrt-anom, d-mssm-fc-anom, d-essm-fc-anom, or combined (e.g. d-mssm+d-mssm-nrt+d-mssm-fc)
start_dateYesStart of time windowISO 8601 (YYYY-MM-DD)
end_dateYesEnd of time windowISO 8601 (YYYY-MM-DD)
latYesLatitude-90 to 90 (decimal degrees)
lonYesLongitude-180 to 180 or 0 to 360 (decimal degrees)
formatNoResponse format (default: JSON)JSON, CSV
anom_typeNoAnomaly typediff, prank
clim_refNoClimatological reference10y, 30y
clim_windowNoAggregation windowr7day, r30day

Point response schemas by product type

D-MSSM values: d_mssm, pflag, qflag, data_source_am, data_source_pm, dai, lat, lon, aflag, feed

D-ESSM values: d_essm, eflag, qflag, lat, lon, aflag, feed

D-HSSM values: d_hssm, eflag, qflag, lat, lon, aflag, feed

Forecast products: Same as above plus issuance_time, model, update; feed = "fc"

Anomaly products: lat, lon, diff (or prank), feed

Point examples

D-MSSM JSON time series:

curl 'https://api.wx.spire.com/soil-moisture/point?product=d-mssm&start_date=2026-02-01&end_date=2026-02-14&lat=14&lon=100.5&format=JSON' \
  -H 'spire-api-key: ${SPIRE_API_KEY}'

Combined seamless time series:

curl 'https://api.wx.spire.com/soil-moisture/point?product=d-mssm%2Bd-mssm-nrt%2Bd-mssm-fc&start_date=2026-02-01&end_date=2026-02-28&lat=14&lon=100.5&format=JSON' \
  -H 'spire-api-key: ${SPIRE_API_KEY}'

POST /soil-moisture/historical/region

Request historical regional data for dates older than 180 days (asynchronous).

Historical region parameters

ParameterRequiredDescriptionAllowed values
productNoSoil moisture productd-mssm, d-essm, d-hssm, d-mssm-anom, d-essm-anom
dateYesTarget dateISO 8601 (YYYY-MM-DD)
regionYesGeographical domainglobal, africa, asia, atlantic, europe, north-america_central-america_caribbean, south-america, south-west_pacific, or custom region
formatNoData formatnetcdf, geotiff
anom_typeNoAnomaly typediff, prank
clim_refNoClimatological reference10y, 30y
clim_windowNoAggregation windowr7day, r30day

Historical region response

{
  "job_uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "job_status": "CREATED"
}

Historical region example

curl -X POST 'https://api.wx.spire.com/soil-moisture/historical/region?product=d-mssm&region=global&date=2024-01-01&format=netcdf' \
  -H 'spire-api-key: ${SPIRE_API_KEY}'

POST /soil-moisture/historical/point

Request historical point data for dates older than 180 days (asynchronous).

Historical point parameters

ParameterRequiredDescriptionAllowed values
productNoSoil moisture productd-mssm, d-essm, d-hssm, d-mssm-anom, d-essm-anom
start_dateYesStart of time windowISO 8601 (YYYY-MM-DD)
end_dateYesEnd of time windowISO 8601 (YYYY-MM-DD)
latYesLatitude-90 to 90
lonYesLongitude-180 to 180 or 0 to 360
formatNoResponse formatJSON, CSV
anom_typeNoAnomaly typediff, prank
clim_refNoClimatological reference10y, 30y
clim_windowNoAggregation windowr7day, r30day

Historical point response

{
  "job_uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "job_status": "CREATED"
}

Historical point example

curl -X POST 'https://api.wx.spire.com/soil-moisture/historical/point?product=d-mssm&start_date=2023-01-01&end_date=2023-06-30&lat=14&lon=100.5&format=JSON' \
  -H 'spire-api-key: ${SPIRE_API_KEY}'

GET /soil-moisture/historical/status/{job_uuid}

Check the status of an asynchronous historical data request.

Historical status parameters

ParameterRequiredDescription
job_uuid (path)YesJob identifier returned by the historical request endpoint

Historical status response

{
  "job_uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "job_status": "PROCESSING"
}

Job status values

StatusDescription
CREATEDJob has been created and is queued
RESTORING_FILESArchived data files are being restored from cold storage
RESTORE_COMPLETEDFile restoration is complete
INITIATEDProcessing has been initiated
PROCESSINGData is being processed
COMPLETEDJob is complete and data is ready for download
FAILEDJob failed (check error details)
UNKNOWNJob status cannot be determined

Historical status example

curl 'https://api.wx.spire.com/soil-moisture/historical/status/a1b2c3d4-e5f6-7890-abcd-ef1234567890' \
  -H 'spire-api-key: ${SPIRE_API_KEY}'

GET /soil-moisture/historical/download/{job_uuid}

Download the results of a completed historical data request.

Historical download parameters

ParameterRequiredDescription
job_uuid (path)YesJob identifier for a completed job

Historical download response

Historical download examples

# Region data — follow redirect and save file
curl -OJL 'https://api.wx.spire.com/soil-moisture/historical/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890' \
  -H 'spire-api-key: ${SPIRE_API_KEY}'

# Point data — returns inline JSON/CSV
curl 'https://api.wx.spire.com/soil-moisture/historical/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890' \
  -H 'spire-api-key: ${SPIRE_API_KEY}'