Synthefy Forecasting
Your time series data already holds the patterns that predict what comes next. The Synthefy Forecasting Plugin puts AI-powered forecasting directly inside the InfluxDB 3 Processing Engine, no external ML pipelines, no data shuttling. Powered by Synthefy’s Mixture-of-Experts forecasting model, it runs on a schedule or on-demand via HTTP trigger and writes predictions back into InfluxDB where they’re instantly queryable alongside your live data. Forecasting that lives where your data already lives.
Configuration
Plugin parameters may be specified as key-value pairs in the --trigger-arguments flag (CLI) or in the trigger_arguments field (API) when creating a trigger, and/or in the JSON body of each HTTP request. Body values override trigger arguments.
Plugin metadata
This plugin includes a JSON metadata schema in its docstring that defines supported trigger types and configuration parameters. This metadata enables the InfluxDB 3 Explorer UI to display and configure the plugin.
Authentication for the Synthefy API
The Synthefy API key is never read from trigger arguments or the request body. It must be provided via either of:
- HTTP request header:
X-Synthefy-Api-Key: <your-key> - Environment variable:
SYNTHEFY_API_KEY
If both are set, the header takes precedence.
Request body parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
measurement |
string | required | Source measurement (table) containing historical data |
field |
string | “value” | Field name to forecast |
tags |
string | dict | ”” | Tag filters. Trigger args: dot-separated string key:[email protected]:val3. Request body: JSON object mapping tag name to a string or list of strings. |
time_range |
string | “30d” | Historical window. Format: <number><unit>. Units: s, min, h, d, w, m, q, y (m/q/y are approximate). |
forecast_horizon |
string | “7d” | Forecast duration. Format: <number><unit> (same units as time_range) or <number> points. |
model |
string | “sfm-tabular” | Synthefy model identifier (e.g., sfm-tabular, Migas-latest) |
output_measurement |
string | “{measurement}_forecast” | Destination measurement for forecast results |
metadata_fields |
string | list | ”” | Trigger args: space-separated list of field names ("humidity pressure"). Request body: JSON list of strings. Used as covariates. |
database |
string | ”” | Optional override database for writes only. If unset, forecasts are written to the trigger’s database. Reads always go to the trigger’s database. |
Tag filter format
The plugin supports multi-value tag filters that are translated to tag IN ('a', 'b', ...) in SQL.
Trigger arguments (string form) — based on the downsampler convention:
.separateskey:valuepairs:separates the tag name from its value(s)@separates multiple values for the same tag- Quote a value with
'...'or"..."if it contains special characters such as:,@,.or'
Examples:
tags="room:Bedroom"
tags="room:[email protected]:Hall"
tags="room:'Some other room'@Bedroom.device:sensor1"
Request body (JSON form):
json
{ "tags": { "room": ["Bedroom", "Kitchen"], "location": "Hall" } }
Forecast points and tags
When a tag filter has a single value, that value is added as a tag on every forecast point. When it has multiple values (an IN (...) filter), no value is written for that tag — the response covers several tag values at once.
Ready to get started?
Download InfluxDB 3 and have running in minutes.