Skip to main content

REST API Overview

The REST_API route enables HTTP communication in both directions:
  • Client Mode - Make HTTP requests to external APIs triggered by MQTT messages
  • Server Mode - Expose HTTP endpoints that accept data and publish it to MQTT topics
REST API routes are ideal for integrating with web services, webhooks, cloud APIs, and creating HTTP-to-MQTT bridges.

Basic Syntax


How REST API Routes Work

A REST API route bridges the HTTP and MQTT worlds. It contains events that define what happens when data flows through—either from MQTT to HTTP (client mode) or from HTTP to MQTT (server mode).

REST API Configuration

REST_API_CONFIG Parameters

BASE_ADDRESS
string
required
Base URL for HTTP requests (e.g., https://api.example.com).
ENABLE_CLIENT
boolean
Enable HTTP client functionality. Default: false.
REQUEST_TIMEOUT
integer
Request timeout in seconds. Default: 30.
DEFAULT_CONTENT_TYPE
string
Default content type. Default: application/json.
ENABLE_SERVER
boolean
Enable HTTP server functionality. Default: false.
SERVER_PORT
integer
HTTP server port. Default: 8080.
USERNAME
string
Basic authentication username.
PASSWORD
string
Basic authentication password.
USE_SSL
boolean
Enable SSL/TLS. Default: false.
IGNORE_CERT_ERRORS
boolean
Ignore certificate validation errors. Default: false.
ENABLE_CORS
boolean
Enable CORS headers. Default: false.
CORS_ORIGINS
string
Allowed CORS origins. Default: * (all).

Client Mode

Use client mode when your broker needs to call external APIs. An MQTT message triggers the HTTP request, and the response is published back to MQTT.

Event Configuration

SOURCE_TOPIC
string
MQTT topic that triggers the HTTP request.
DESTINATION_TOPIC
string
MQTT topic to publish HTTP response.
METHOD
string
HTTP method: GET, POST, PUT, DELETE, PATCH.
ENDPOINT
string
API endpoint path (supports placeholders).
BODY
string
Request body for POST/PUT (supports placeholders).

Placeholder Support

Use placeholders in endpoints and bodies to insert dynamic values from the MQTT message:

Client Examples

Fetch data from an external API when an MQTT message arrives:
When a message like {"city": "London", "apikey": "abc123"} arrives at weather/request, the route calls the API and publishes the weather data to weather/response.

Server Mode

Use server mode when external systems need to send data to your broker via HTTP. The broker exposes an HTTP endpoint that accepts requests and publishes the data to MQTT topics.
Common use case: Your web application, mobile app, or third-party service needs to push data into the MQTT broker without implementing an MQTT client.

Why Use Server Mode?

Server Event Configuration

ENDPOINT
string
The HTTP path to expose (e.g., /api/sensors).
METHOD
string
HTTP method to accept: GET, POST, PUT, DELETE.
DESTINATION_TOPIC
string
MQTT topic where incoming HTTP data is published.

Server Examples

Expose an endpoint for devices to submit readings via HTTP:
Usage: Send sensor data with a simple HTTP POST:
The data is published to sensors/from/http and available to all MQTT subscribers.

Combined Client and Server

A single route can operate in both modes—accepting HTTP requests AND calling external APIs:

Complete Examples

Full API for a web dashboard to read sensor data and send commands:

Troubleshooting

  • Verify BASE_ADDRESS is correct
  • Check firewall allows outbound connections
  • Increase REQUEST_TIMEOUT if API is slow
  • Verify network connectivity
  • Ensure USE_SSL matches the API requirements
  • For self-signed certificates, set IGNORE_CERT_ERRORS (not recommended for production)
  • Verify certificate chain is complete
  • Verify USERNAME and PASSWORD are correct
  • Check Authorization header format
  • Ensure API key is valid and not expired
  • Enable CORS on the server: WITH ENABLE_CORS "true"
  • Configure specific allowed origins
  • Check browser console for specific CORS error messages
  • Verify DESTINATION_TOPIC is configured
  • Check MQTT broker connectivity
  • Monitor broker logs for errors

Best Practices

Always use SSL/TLS for external API connections:
Configure timeouts based on expected API response times:
Subscribe to response topics to monitor API call results and handle failures in your Actions.
When exposing HTTP server endpoints:
  • Use authentication where needed
  • Limit CORS origins to specific domains
  • Consider rate limiting at the network level
Configure different base URLs for development and production environments.

Next Steps

Data Pipeline Routes

MQTT bridges and email notifications.

Route Examples

See complete route configuration examples.
Last modified on May 22, 2026