REST API · v1

Read your sensors from anywhere

The Hydrosight API gives you read access to your soil sensor data — moisture, temperature and salinity, current and historical — over plain HTTPS. Pull it into your own dashboard, BMS, or reporting tool.

Getting an API key

  1. Sign in to the Hydrosight Portal
  2. Go to Account → Settings → API Key
  3. Click Generate API Key
  4. To replace it later, click Generate New Key on the same page

Your key gives read access to Hydrosight API data for resources you own or have been shared with you as a viewer, matching your access in the Portal.

One key per account. Generating a new key immediately disables the current one. Keep it secret: anyone with it can read your Hydrosight data.

Base URL

EnvironmentBase URL
Productionhttps://api.hydrosight.au/v1

Authentication

Send your API key on every request as an HTTP header:

x-api-key: YOUR_API_KEY

Requests without a valid key return 403 Forbidden.

Rate limits

The Default usage plan applies the following limits to each API key:

LimitValue
Request rate100 requests per second
Burst capacityUp to 200 requests
Monthly quota500,000 requests

The API may return 429 Too Many Requests when the request rate, burst capacity, or monthly quota is exceeded. Your integration should retry throttled requests with backoff.

Expecting to exceed these limits? Get in touch before you integrate.

All responses are application/json. List endpoints return { "items": [...] }. Errors return { "message", "errorCode" } with a 4xx/5xx status.

Sensors

GET/sensors

Query parameters

ParamRequiredDescription
locationIdNoFilter to sensors at a single location
Example request
curl https://api.hydrosight.au/v1/sensors -H "x-api-key: YOUR_API_KEY"
Example response
{
  "items": [
    {
      "sensorId": "b3f1a2c4-7d9e-4f6b-8a3c-1e5d9b7c2f4a",
      "name": "Fairway 4 — East",
      "locationId": "a91c8e5d-3f6b-4a2c-b8d9-7e4f1a3c6b8d",
      "coordinates": { "latitude": -33.8688, "longitude": 151.2093 },
      "lastReadings": {
        "dateTime": "2026-08-17T09:30:00+10:00",
        "temperature": 18.4,
        "moisture": 22.1,
        "salinity": 0.6
      }
    }
  ]
}
GET/sensors/{sensorId}

Returns the same object shape as one item above. 404 if the sensor doesn't exist, 403 if it isn't yours.

Example request
curl https://api.hydrosight.au/v1/sensors/b3f1a2c4-7d9e-4f6b-8a3c-1e5d9b7c2f4a -H "x-api-key: YOUR_API_KEY"
GET/sensors/{sensorId}/data

Returns a fixed-interval time series ending now, with the previous reading carried forward into any gaps — last-observation-carried-forward, not raw readings and not an average.

periodTypeWindowInterval
DayLast 24 hours30 minutes
WeekLast 7 days4 hours
MonthLast 31 days12 hours
Example request
curl "https://api.hydrosight.au/v1/sensors/b3f1a2c4-7d9e-4f6b-8a3c-1e5d9b7c2f4a/data?periodType=Day" -H "x-api-key: YOUR_API_KEY"
Example response — ?periodType=Day
{
  "items": [
    { "dateTime": "2026-08-17T08:00:00+10:00", "temperature": 18.1, "moisture": 21.8, "salinity": 0.6 },
    { "dateTime": "2026-08-17T08:30:00+10:00", "temperature": 18.3, "moisture": 21.9, "salinity": 0.6 }
  ]
}
GET/sensors/{sensorId}/rawdata

Query parameters

ParamRequiredDescription
startDateTimeYesISO 8601, window start
endDateTimeYesISO 8601, window end — max 90 days after start

Unprocessed readings exactly as recorded by the sensor — no interpolation. temperatureDecimal / moistureDecimal carry extra precision beyond the rounded values.

Example request
curl "https://api.hydrosight.au/v1/sensors/b3f1a2c4-7d9e-4f6b-8a3c-1e5d9b7c2f4a/rawdata?startDateTime=2026-08-01T00:00:00Z&endDateTime=2026-08-08T00:00:00Z" -H "x-api-key: YOUR_API_KEY"
Example response
{
  "items": [
    {
      "dateTime": "2026-08-01T00:04:12.000Z",
      "temperature": 18,
      "temperatureDecimal": 18.37,
      "moisture": 22,
      "moistureDecimal": 21.94,
      "salinity": 0.6
    }
  ]
}

Locations

GET/locations
Example request
curl https://api.hydrosight.au/v1/locations -H "x-api-key: YOUR_API_KEY"
Example response
{
  "items": [
    { "locationId": "a91c8e5d-3f6b-4a2c-b8d9-7e4f1a3c6b8d", "name": "Riverside Golf Club", "owner": "Riverside Golf Club Pty Ltd" }
  ]
}
GET/locations/{locationId}

Returns the same object shape as one item above. 404 if the location doesn't exist, 403 if it isn't yours.

Example request
curl https://api.hydrosight.au/v1/locations/a91c8e5d-3f6b-4a2c-b8d9-7e4f1a3c6b8d -H "x-api-key: YOUR_API_KEY"
GET/locations/{locationId}/weather/observational

Returns observed weather for the location's weather station over a fixed window.

ParamRequiredDescription
periodTypeYesWindow to return: Day, Week, or Month
Example request
curl "https://api.hydrosight.au/v1/locations/a91c8e5d-3f6b-4a2c-b8d9-7e4f1a3c6b8d/weather/observational?periodType=Day" -H "x-api-key: YOUR_API_KEY"
Example response
{
  "items": [
    { "dateTime": "2026-08-17T09:00:00+10:00", "temperature": 18.2, "rainfall": 0.0, "precisCode": "8-1" }
  ]
}

404 if the location doesn't exist, 400 if periodType is missing or invalid.

GET/locations/{locationId}/weather/forecast

Returns a multi-day forecast for the location's weather station. The location must have at least one sensor with coordinates.

Example request
curl https://api.hydrosight.au/v1/locations/a91c8e5d-3f6b-4a2c-b8d9-7e4f1a3c6b8d/weather/forecast -H "x-api-key: YOUR_API_KEY"
Example response
{
  "stationName": "Riverside",
  "items": [
    {
      "dateTime": "2026-08-18T00:00:00+10:00",
      "temperatureMin": 12.1,
      "temperatureMax": 20.4,
      "temperatureUnits": "°C",
      "rainfallAmount": "10mm",
      "rainfallAverage": 12.3,
      "rainfallAmountUnits": "mm",
      "rainfallProbability": 40,
      "rainfallProbabilityUnits": "%",
      "precisCode": "8-1"
    }
  ]
}

404 if the location doesn't exist, 422 if the location has no sensors, 403 if the sensors have no coordinates.

Field reference

FieldTypeUnitNotes
sensorId / locationIdstring (UUID)
namestringDisplay name
coordinates.latitude / .longitudenumberdecimal degreesOmitted if not set
temperaturenumber°CSoil temperature
moisturenumber%Soil moisture
salinitynumberdS/mElectrical conductivity
dateTimestringISO 8601 + UTC offset
ownerstringOwning organisation's display name

Errors

StatusMeaning
400Missing or invalid query parameter — message explains which one
403Missing/invalid API key, or the resource isn't yours
404Sensor or location not found
500Internal error — retry, or contact support with the requestId from the response