Collection of articles for working with Multitech devices in LoRaWAN networks.
Date: December 17, 2025
Gateway: MTCAP3 (172.16.33.111)
Firmware: 7.4.0-BETA2-7-g7e2e653f
API Version: 7.2.0-86-g5ae2b66c
During live testing against an MTCAP3 gateway, 19 previously undocumented API endpoints were discovered. All endpoints are accessible via GET /api?fields=<endpoint> and support standard CRUD operations where applicable.
autoReboot - Automatic Reboot SchedulerPurpose: Configure automatic device reboots on a schedule
Example Response:
{
"autoReboot": {
"hour": 0,
"minute": 0,
"interval": 0,
"mode": "DISABLED"
}
}
Fields:
mode: Reboot mode - DISABLED, DAILY, WEEKLY, INTERVALhour: Hour for scheduled reboot (0-23)minute: Minute for scheduled reboot (0-59)interval: Interval in minutes for interval-based rebootsUse Cases:
backOffTimers - Cellular Retry Backoff TimersPurpose: Configure exponential backoff timers for cellular connection retries
Example Response:
{
"backOffTimers": {
"enabled": true,
"timers": [
{
"carrierName": "AT&T",
"data": [60, 60, 60, 60, 600, 900, 1800, 3600],
"dataReset": [60, 60, 60, 60, 600, 900, 1800, 3600],
"modemReset": [300, 300, 300, 300, 600, 1800, 3600],
"sms": [30, 30, 30, 30, 900, 900, 1800, 3600],
"readOnly": true
}
]
}
}
Fields:
enabled: Enable backoff timerstimers[]: Array of carrier-specific timer configurations
carrierName: Carrier name (AT&T, Verizon, Rogers, default)data[]: Data connection retry intervals (seconds)dataReset[]: Data reset retry intervals (seconds)modemReset[]: Modem reset retry intervals (seconds)sms[]: SMS retry intervals (seconds)readOnly: Whether timer is read-onlyUse Cases:
bootloader - Bootloader ConfigurationPurpose: Configure bootloader console access and security
Example Response:
{
"bootloader": {
"console": {
"access": true,
"silent": false
},
"lock": {
"enabled": false,
"supported": false
}
}
}
Fields:
console.access: Allow console access during bootconsole.silent: Silent boot modelock.enabled: Enable bootloader locklock.supported: Whether device supports bootloader lockingUse Cases:
brand - White-Label Branding ConfigurationPurpose: Configure custom branding for OEM/white-label deployments
Example Response:
{
"brand": {
"__v": 2,
"companyName": "",
"address1": "",
"address2": "",
"city": "",
"state": "",
"country": "",
"zipCode": "",
"phoneNumbers": [],
"fax": "",
"website": "",
"logo": "",
"icon": "",
"image": "",
"buttonColor": "",
"buttonFontColor": "",
"buttonHighlightColor": "",
"buttonHighlightFontColor": "",
"showOnDashboard": false,
"links": []
}
}
Fields:
companyName: OEM company nameaddress1, address2, city, state, country, zipCode: Company addressphoneNumbers[]: Contact phone numberswebsite: Company website URLlogo, icon, image: Custom branding images (base64 or URLs)buttonColor, buttonFontColor: UI button customizationbuttonHighlightColor, buttonHighlightFontColor: UI highlight colorsshowOnDashboard: Display branding on dashboardlinks[]: Custom navigation linksUse Cases:
cellTimeSync - Cellular Time SynchronizationPurpose: Synchronize device time from cellular network
Example Response:
{
"cellTimeSync": {
"enabled": false,
"pollingTime": 120
}
}
Fields:
enabled: Enable cellular time syncpollingTime: Polling interval in secondsUse Cases:
ddns - Dynamic DNS ConfigurationPurpose: Configure Dynamic DNS for devices with changing IP addresses
Example Response:
{
"ddns": {
"enabled": false,
"mode": "PROVIDER",
"server": "dyndns.org",
"domain": "",
"authentication": {
"username": "",
"password": ""
},
"updateInterval": 5,
"checkIpPeriod": 15,
"checkIp": {
"enabled": true,
"mode": "DEFAULT",
"custom": {
"server": "checkip.dyndns.org",
"port": 80,
"path": "/",
"ssl": false
}
},
"custom": {
"server": "",
"port": 443,
"path": "/nic/update?hostname=%h",
"ssl": true
}
}
}
Fields:
enabled: Enable DDNSmode: PROVIDER or CUSTOMserver: DDNS provider (dyndns.org, no-ip.com, etc.)domain: Domain name to updateauthentication: Username/password for DDNS serviceupdateInterval: Update interval in minutescheckIpPeriod: IP check period in minutescheckIp: IP detection configurationcustom: Custom DDNS server configurationUse Cases:
ipPassthrough - IP Passthrough ConfigurationPurpose: Configure IP passthrough mode (bridge mode for cellular/WAN IP)
Example Response:
{
"ipPassthrough": {
"ipMode": "IPv4",
"ip": "192.168.2.1",
"mask": "255.255.255.0",
"gateway": "",
"publicIpMask": "255.255.255.255",
"ipv6": {
"ip": "",
"prefixlen": ""
}
}
}
Fields:
ipMode: IPv4, IPv6, or DUAL_STACKip: LAN IP addressmask: LAN subnet maskgateway: Gateway addresspublicIpMask: Public IP mask for passthroughipv6: IPv6 configurationUse Cases:
lldp - Link Layer Discovery ProtocolPurpose: Configure LLDP for network device discovery
Example Response:
{
"lldp": {
"enabled": false,
"sysName": "",
"sysDescr": "",
"txInterval": 30,
"txHold": 4
}
}
Fields:
enabled: Enable LLDPsysName: System name advertised via LLDPsysDescr: System descriptiontxInterval: Transmission interval (seconds)txHold: Hold time multiplierUse Cases:
mdns - Multicast DNS (mDNS/Bonjour)Purpose: Configure mDNS for local network service discovery
Example Response:
{
"mdns": {
"enabled": false,
"allowInterfaces": []
}
}
Fields:
enabled: Enable mDNSallowInterfaces[]: Interfaces allowed for mDNSUse Cases:
radius - RADIUS AuthenticationPurpose: Configure RADIUS server for centralized authentication
Example Response:
{
"radius": {
"authEnabled": false,
"authPort": 1812,
"authType": "PAP",
"acctEnabled": false,
"acctPort": 1813,
"host": "",
"secondaryHost": "",
"secondaryAuthPort": 1812,
"secondaryAcctPort": 1813,
"secret": "",
"timeout": 2,
"retries": 3,
"checkServer": true,
"anonymousEnabled": false,
"anonymousId": "anonymous"
}
}
Fields:
authEnabled: Enable RADIUS authenticationauthPort: Authentication port (default 1812)authType: Authentication type (PAP, CHAP, MSCHAP, MSCHAPv2)acctEnabled: Enable RADIUS accountingacctPort: Accounting port (default 1813)host: Primary RADIUS serversecondaryHost: Secondary RADIUS serversecret: RADIUS shared secrettimeout: Request timeout (seconds)retries: Number of retriesanonymousEnabled: Enable anonymous outer identityanonymousId: Anonymous identity stringUse Cases:
remoteAccess - Remote Access SecurityPurpose: Configure remote access security settings (HTTP, HTTPS, SSH, SNMP)
Example Response:
{
"remoteAccess": {
"__v": 1,
"http": {
"enabled": true,
"port": 80,
"lan": true,
"wan": true,
"redirectToHttps": true
},
"https": {
"enabled": true,
"port": 443,
"lan": true,
"wan": true
},
"ssh": {
"enabled": true,
"port": 22,
"lan": true,
"wan": true,
"passwordAuthentication": true,
"publicKeyAuthentication": true,
"idleTimeoutSeconds": 3600,
"userLockout": {
"enabled": true,
"failAttempts": 3,
"lockoutSeconds": 300
}
},
"snmp": {
"lan": true,
"wan": false
},
"icmp": {
"enabled": true,
"respondToLan": true,
"respondToWan": false
},
"modbusSlave": {
"enabled": false,
"port": 1502,
"lan": true
},
"reverseSsh": {
"enabled": false,
"serverAddress": "",
"serverPort": 22,
"remotePort": 2222,
"username": "",
"password": "",
"privateKey": "",
"authMode": "PASSWORD"
},
"bruteForcePrevention": {
"enabled": true,
"failAttempts": 3,
"lockoutSeconds": 300
},
"dosAttackPrevention": {
"enabled": true,
"limitPerMinute": 60,
"limitBurst": 100
},
"pingLimit": {
"enabled": true,
"limitPerSecond": 10,
"limitBurst": 30
},
"timeoutSeconds": 3000,
"privateWan": false
}
}
Fields:
http: HTTP server configurationhttps: HTTPS server configurationssh: SSH server configuration with lockout protectionsnmp: SNMP access controlicmp: ICMP/ping response settingsmodbusSlave: Modbus slave interfacereverseSsh: Reverse SSH tunnel for remote supportbruteForcePrevention: Brute force attack protectiondosAttackPrevention: DoS attack rate limitingpingLimit: ICMP rate limitingtimeoutSeconds: Session timeoutprivateWan: Treat WAN as private networkUse Cases:
remoteMgmt - Remote Management (Cloud)Purpose: Configure Multi-Tech cloud management integration
Example Response:
{
"remoteMgmt": {
"enabled": true,
"serverName": "api.multitech.com",
"checkInIntervals": {
"enabled": true,
"interval": 14400
},
"checkInDayTime": {
"enabled": false,
"mode": "DAILY",
"dailyTime": "",
"customTime": "",
"customDays": []
},
"allowFirmwareUpgrade": true,
"allowRadioFirmwareUpgrade": true,
"allowConfigurationUpgrade": true,
"allowConfigurationUpload": true
}
}
Fields:
enabled: Enable remote managementserverName: Cloud management servercheckInIntervals: Periodic check-in configurationcheckInDayTime: Scheduled check-in timesallowFirmwareUpgrade: Allow cloud firmware updatesallowRadioFirmwareUpgrade: Allow cloud radio firmware updatesallowConfigurationUpgrade: Allow cloud config updatesallowConfigurationUpload: Allow uploading config to cloudUse Cases:
resetButton - Physical Reset Button ConfigurationPurpose: Configure physical reset button behavior
Example Response:
{
"resetButton": {
"enabled": true,
"resetToFactoryDefault": true,
"resetToUserDefinedDefault": false
}
}
Fields:
enabled: Enable reset buttonresetToFactoryDefault: Reset to factory defaultsresetToUserDefinedDefault: Reset to user-defined defaultsUse Cases:
smtp - SMTP Email ConfigurationPurpose: Configure SMTP for email notifications
Example Response:
{
"smtp": {
"enabled": false,
"serverAddress": "",
"serverPort": 465,
"sourceEmailAddress": "",
"authEnabled": false,
"username": "",
"password": "",
"tls": {
"enabled": true,
"startTls": false,
"certCheck": false
},
"maxNumberOfEntries": 50
}
}
Fields:
enabled: Enable SMTPserverAddress: SMTP server hostname/IPserverPort: SMTP port (25, 465, 587)sourceEmailAddress: From email addressauthEnabled: Enable SMTP authenticationusername, password: SMTP credentialstls: TLS/SSL configurationmaxNumberOfEntries: Max email queue sizeUse Cases:
sntp - SNTP/NTP Time SynchronizationPurpose: Configure NTP time synchronization
Example Response:
{
"sntp": {
"enabled": true,
"servers": ["time.nist.gov"],
"pool": {
"enabled": true,
"server": "north-america.pool.ntp.org"
},
"minpoll": 6,
"maxpoll": 10,
"timeZone": "UTC",
"timeZones": ["Africa/Abidjan", "America/New_York", ...]
}
}
Fields:
enabled: Enable NTPservers[]: NTP server listpool: NTP pool configurationminpoll: Minimum poll interval (2^n seconds)maxpoll: Maximum poll interval (2^n seconds)timeZone: Device timezonetimeZones[]: Available timezones (read-only)Use Cases:
waninfo - WAN Interface StatusPurpose: Get real-time WAN interface status (read-only)
Example Response:
{
"waninfo": {
"wans": [
{
"name": "eth0",
"interface": "eth0",
"type": "ETHERNET",
"enabled": true,
"available": true,
"current": true,
"ip": "172.16.33.111",
"subnet": "255.255.0.0",
"gateway": ""
},
{
"name": "ppp0",
"interface": "ppp0",
"type": "CELLULAR",
"enabled": true,
"available": true,
"current": false,
"ip": "",
"subnet": "",
"gateway": ""
}
]
}
}
Fields:
wans[]: Array of WAN interfaces
name: Interface nameinterface: System interface nametype: ETHERNET, CELLULAR, WIFIenabled: Interface enabledavailable: Interface available/connectedcurrent: Currently active WANip, subnet, gateway: Network configurationUse Cases:
wanmngr - WAN Manager (Failover/Load Balancing)Purpose: Configure WAN failover and load balancing
Example Response:
{
"wanmngr": {
"mode": "FAILOVER",
"wans": [
{
"interface": "eth0",
"priority": 1,
"weight": 1,
"monitor": {
"mode": "ACTIVE",
"checkInterval": 60,
"active": {
"type": "ICMP",
"hostname": "www.google.com",
"icmpCount": 5,
"tcpPort": 80
}
}
}
]
}
}
Fields:
mode: FAILOVER or LOAD_BALANCEwans[]: WAN interface configurations
interface: Interface namepriority: Failover priority (1=highest)weight: Load balancing weightmonitor: Health check configuration
mode: ACTIVE or PASSIVEcheckInterval: Check interval (seconds)active.type: ICMP or TCPactive.hostname: Target hostname/IPactive.icmpCount: Ping countactive.tcpPort: TCP port for checksUse Cases:
ipPipes - IP Pipes (Port Forwarding/Tunneling)Purpose: Configure IP pipe tunnels for advanced routing
Example Response:
{
"ipPipes": []
}
Fields:
Use Cases:
notificationEventGroup - Event Notification GroupsPurpose: Configure event notifications via email, SMS, and SNMP
Example Response:
{
"notificationEventGroup": {
"groups": [],
"eventsGroups": [
{
"eventGroup": "Authentication",
"enabled": false,
"email": false,
"sms": false,
"snmp": false,
"notifyGroup": ""
},
{
"eventGroup": "Chassis",
"enabled": false,
"email": false,
"sms": false,
"snmp": false,
"notifyGroup": ""
},
{
"eventGroup": "Configuration",
"enabled": false,
"email": false,
"sms": false,
"snmp": false,
"notifyGroup": ""
},
{
"eventGroup": "Link",
"enabled": false,
"email": false,
"sms": false,
"snmp": false,
"notifyGroup": ""
},
{
"eventGroup": "Security",
"enabled": false,
"email": false,
"sms": false,
"snmp": false,
"notifyGroup": ""
},
{
"eventGroup": "Wan",
"enabled": false,
"email": false,
"sms": false,
"snmp": false,
"notifyGroup": ""
}
]
}
}
Fields:
groups[]: Notification recipient groupseventsGroups[]: Event group configurations
eventGroup: Event category (Authentication, Chassis, Configuration, Link, Security, Wan)enabled: Enable notifications for this groupemail: Send email notificationssms: Send SMS notificationssnmp: Send SNMP trapsnotifyGroup: Recipient group nameUse Cases:
customAppsConfig - Custom Applications ConfigurationPurpose: Configure custom application installation settings
Example Response:
{
"customAppsConfig": {
"enabled": true,
"allowed": true,
"backupOnInstall": true
}
}
Fields:
enabled: Enable custom appsallowed: Allow custom app installationbackupOnInstall: Backup config before app installUse Cases:
The following endpoints from the manifest were not fully tested but may contain additional functionality:
btCommand - Bluetooth command interfacebtDevices - Bluetooth device managementextIo - External I/O configurationextUsb - External USB configurationlog - System log configurationsaveAndRestore - Save/restore configurationstateIo - State I/O configurationhelp - API help/documentation endpointcloudConnector - Cloud connector configuration (returned null)All discovered endpoints have corresponding JSON schemas in:
/mtsDeviceAPI/json/permissive/<endpoint>.schema.json/mtsDeviceAPI/json/strict/<endpoint>.schema.json/api/command/...)