Data Collection & Telemetry
Overview / Features
Data Logger
ZENTRA Utility
Location Permissions on iOS and Android
Antenna Extension Install
Sensor Current Drain Check
Update Hardware
Hardware Identification
Modem and SIM Card Install Guides
Enable all LTE-M Cellular Bands in Europe for 4G
Cellular Modem Install for Global H1 Sim
Wi-Fi Modem Install
ZL6 Modem Install for Verizon or AT&T/T-Mobile in the US
Troubleshooting
SIM Cards
Coverage
ZENTRA Cloud 1.0 (Classic)
Quick Start
Organizations
Account
Edit Account Profile
Update Account Password
Lost Password/Password Reset
Set Measurement Unit Preferences
Users
Devices
Device Inventory
Edit Device
Re-provision ZL6 to European Server
Add Device
Remove Device
Time-zone and Location Override
Calibrations
Downloads
Dashboard
Enable Chart Status
Create Custom Charts
Color Picklist
Add Traces to Chart
Chart Stats
Print Charts
Set a Target Range
Lock Chart Axes
Chart Date Range Picker [NEW]
Download Chart Data
Notifications
Models
Daily Light Integral
Ground Water Elevation
Ground Water Depth
Plant Available Water
Daily Light Photoperiod
Chill Hours
Growing Degree Days
Create a Model
Evapotranspiration
Subscriptions
API
US Server API
EU Server API
TAHMO Server API
Push API
R Package
API Troubleshoot
AgWeatherNet & DAS
Manage API Keys
Error Codes
Applications
FAQ
Accessibility
Release Notes
ZENTRA Field
ZENTRA Cloud 2.0 (Beta)
Getting Started
User Account
Setup
Devices
Add Data Logger
Configure Data Logger
Device Map
Data Logger Charts
Download Data Logger
Logs
Archive
Dashboards
Explorer
Data
Projects
Alerts
Environment Models
Groundwater Elevation [2.0]
Groundwater Depth [2.0]
Chill Hours [2.0]
Utah Chill Model [2.0]
Growing Degree Days [2.0]
Heat Index [2.0]
Heat Stress Wet Bulb Globe Temperature WBGT [2.0]
Wind Chill [2.0]
Evapotranspiration [2.0]
Leaf Wetness Amount of Water [2.0]
Daily Light Photoperiod [2.0]
Plant Available Water [2.0]
Daily Light Integral [2.0]
ZENTRA Cloud Beta Release Notes
Accessibility
Feedback
Privacy, Security, Terms & Conditions
Uptime Monitor
Table of Contents
- All Categories
- ZENTRA Cloud 1.0 (Classic)
- API
- TAHMO Server API
TAHMO Server API
Documentation for the ZENTRA Cloud API.
This article details where and how to use the documentation for the TAHMO server API.
TAHMO Server
Swagger https://tahmo.zentracloud.com/api/v4/documentation/
Users are limited to a total of 60 calls per minute(60sec), and each device is limited to 1 call per minute(60sec). One user can make 60 calls to 60 different devices in a 60 second period.
To set the units, log in to your account at zentracloud.com and click the wrench icon from the main menu, and select Measurement Units. Edit your preferred units and click Accept. See the Setting your preferred measurement units article here.
How to start
- Sign up at tahmo.zentracloud.com if you haven't got your ZENTRA API key yet.
- Select API from the main menu.
- On the Keys tab click Copy token.

Run a test
- Navigate to the API v4 Swagger documentation
- Select Authorize.
- Paste your token ID.
- Click Authorize.

GET
To view an example, press the GET readings button.
Parameters
Experiment with different start_date, end_date, or start_mrid and end_mrid query parameters. Only start_date and end_date or start_mrid and end_mrid parameters need to be defined in the request, not both. MRID stands for "Measurement Record ID" and increases as the number of records on the device increases.
device_sn string (query) | The serial number of the device having data requested. |
start_date string ($date) (query) | Start date of time range. Defaults to date of first reading of device. Overrides start_mrid. |
end_date string ($date) (query) | End date of time range. Defaults to date of last reading of device. Overrides end_mrid. |
start_mrid integer (query) | Start mrid of mrid range. Defaults to mrid of first reading from Device. |
end_mrid integer (query) | End mrid of mrid range. Defaults to mrid of last reading from Device. |
output_format string (query) | The data structure of the response content. Defaults to json. Other options include pandas dataframe and csv. |
page_num integer (query) | Page number. Defaults to 1. |
per_page integer (query) | Number of readings per page. Defaults to 500. Max is 2000. |
device_depth boolean (query) | When set to true, the API will return the sensor depth as part of the device metadata payload. |
sort_by string (query) | Sort the readings in ascending or descending order. Defaults to descending. |
Examples
View examples in json, csv or pandas Dataframe.

Example Code Snippet
Copy the code snippet below, then edit the token tok, device serial number sn, and start and end dates start_date , end_date .
import requests # pip install requests
import pandas # pip install pandas
def get_with_credentials(tok, uri, **kwargs):
# just in case we forget to put "Token MyToken"
token = tok if tok.lower().startswith("token") else f"Token {tok}"
headers = {"Authorization": token}
return requests.get(uri, headers=headers, **kwargs)
def get_readings_response(sn, start_date, end_date, **extra_kwargs_for_endpoint):
server = extra_kwargs_for_endpoint.get("server", "https://zentracloud.com")
url = f"{server}/api/v4/get_readings/"
default_args = {
'output_format': "df",
'per_page': 1,
'page_num': 1,
'sort_by': 'desc',
'start_date': start_date,
'end_date': end_date
}
data = {**default_args, **extra_kwargs_for_endpoint, "device_sn": sn}
tok = extra_kwargs_for_endpoint.pop("token", "")
return get_with_credentials(tok, url, params=data)
def get_readings_dataframe(sn,start_date,end_date,**extra_kwargs_for_endpoint):
res = get_readings_response(sn,start_date,end_date,**extra_kwargs_for_endpoint)
if(res.ok):
data = res.json()
return pandas.DataFrame(**json.loads(data["data"]))
return res
#fill in your token, device serial number and start and end dates here.
tok = "Token <Your Token>"
sn="z6-#####"
start_date="2024-04-01 00:00:00"
end_date="2024-04-02 00:00:00"
#specify the server here.
server="https://tahmo.zentracloud.com"
df = get_readings_dataframe(sn, start_date, end_date, token=tok, server=server)
print(df)
How did we do?
EU Server API
Push API