REST API Overview
TheREST_API connector 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
Basic Syntax
How REST API Connectors Work
A REST API connector 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
Client Settings
Client Settings
Server Settings
Server Settings
SSL/Security
SSL/Security
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
Trigger & Routing
Trigger & Routing
Placeholder Support
Use placeholders in endpoints and bodies to insert dynamic values from the MQTT message:
A placeholder in
ENDPOINT stays on the connector’s BASE_ADDRESS. A value that points at another host, such as /evil.example/x or https://evil.example/x, is refused, and the reply topic gets a RequestRejected error. An ENDPOINT you write as a full URL still uses that URL.
Client Examples
- GET Request
- POST Request
- With Authentication
Fetch data from an external API when an MQTT message arrives:When a message like
{"city": "London", "apikey": "abc123"} arrives at weather/request, the connector 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.Why Use Server Mode?
Server Event Configuration
Endpoint & Method
Endpoint & Method
MQTT Routing
MQTT Routing
string
MQTT topic where incoming HTTP data is published.
Server Examples
- Accept Sensor Data
- Multiple Endpoints
- Webhook Receiver
- CORS for Web Apps
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 connector can operate in both modes—accepting HTTP requests AND calling external APIs:Complete Examples
- IoT Dashboard API
- Third-Party Integration
Full API for a web dashboard to read sensor data and send commands:
Troubleshooting
Connection Timeout
Connection Timeout
- Verify BASE_ADDRESS is correct
- Check firewall allows outbound connections
- Increase REQUEST_TIMEOUT if API is slow
- Verify network connectivity
SSL/TLS Errors
SSL/TLS Errors
- Ensure USE_SSL matches the API requirements
- For self-signed certificates, set IGNORE_CERT_ERRORS (not recommended for production)
- Verify certificate chain is complete
Authentication Failed
Authentication Failed
- Verify USERNAME and PASSWORD are correct
- Check Authorization header format
- Ensure API key is valid and not expired
CORS Errors
CORS Errors
- Enable CORS on the server:
WITH ENABLE_CORS "true" - Configure specific allowed origins
- Check browser console for specific CORS error messages
No Response Published
No Response Published
- Verify DESTINATION_TOPIC is configured
- Check MQTT broker connectivity
- Monitor broker logs for errors
Best Practices
Use HTTPS in Production
Use HTTPS in Production
Always use SSL/TLS for external API connections:
Set Appropriate Timeouts
Set Appropriate Timeouts
Configure timeouts based on expected API response times:
Handle Errors Gracefully
Handle Errors Gracefully
Subscribe to response topics to monitor API call results and handle failures in your Actions.
Secure Server Endpoints
Secure Server Endpoints
When exposing HTTP server endpoints:
- Use authentication where needed
- Limit CORS origins to specific domains
- Consider rate limiting at the network level
Use Environment-Specific Base URLs
Use Environment-Specific Base URLs
Configure different base URLs for development and production environments.
REST API app templates
Ready-made client connectors (public test APIs, weather, Slack, GitHub, and planned enterprise systems such as SAP HANA and Salesforce) are listed in the REST API Apps catalog. Each app page shows the LoT connector definition, the event table, and how auth is passed.That catalog does not include competitor brokers (HiveMQ, EMQX, ThingWorx) or OEM device connectors.
Discover templates and REST API apps: -listTemplates and -connectorCode
The broker ships every REST API app on this catalog as a template, keyed by its app code. Two broker commands, published to$SYS/Coreflux/Command, expose them (defined in Commands/Commands.cs):
An app with one connector is keyed by its folder name, upper-cased with every non-alphanumeric run turned into
_ (sap-s4hana-cloud becomes SAP_S4HANA_CLOUD). An app with several connectors keys each one by its connector name without the RestApi suffix (GeminiApiRestApi becomes GEMINI_API). The catalog lists every app code.
Each card has this shape (from RouteHandler.BuildTemplatePayload):
statusisbetafor every app today: the broker accepts no other value. The docs call this technical preview.licenseiscommunitywhen a Community broker can deploy the template, otherwiselicensed.minimumTierisCommunity,GrowthorEnterprise,actionSlotsis the number of actions the connector registers, andavailableOnThisBrokersays whether the current license can deploy it.requiredSecretslists the broker secrets the template reads (GET SECRETor{secret.NAME}). Create them before you deploy.connectoristrueandbaseTypeisREST_APIfor every REST API app. For built-in connector templatesconnectorisfalseandbaseTypeequalstype. The field keeps the nameconnectorfor compatibility; it marks a REST API app.- An app code is not a connector type: deploy the
templatewithWITH TYPE REST_API, notWITH TYPE AIRTABLE. templateis the deployable connector code only. TheADD METADATAblock is split off intometadata, because-addConnectorrejects it.#Name,type,description,regex,required#markers are Hub placeholders (for example#RouteName#and#BaseUrl#). Replace them with real values before you deploy with-addConnector(-addRouteremains a supported alias).
Next Steps
Streaming Connectors
Stream MQTT messages through Kafka.
Connector Examples
See complete connector configuration examples.

