> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreflux.org/llms.txt
> Use this file to discover all available pages before exploring further.

# InfluxDB

> Client-mode REST API connector for InfluxDB v2 write/query/health and InfluxDB 3 write_lp / query_sql — line protocol from MQTT into org/bucket or database

Technical Preview

## Overview

A client-mode connector for a **curated** slice of [InfluxDB](https://docs.influxdata.com/influxdb/v2/api/v2/) (OSS and Cloud v2) plus [InfluxDB 3](https://docs.influxdata.com/influxdb3/core/write-data/) HTTP write/query:

| Catalog connector event | Entity / path | Notes |
| - | - | - |
| GET health | `GET /health` | Usually unauthenticated on OSS |
| (supporting) ping | `GET /ping` | `204` + version headers |
| POST write?org=\&bucket= | `POST /api/v2/write` | **Line protocol** body — `text/plain` |
| POST query (Flux) | `POST /api/v2/query` | Flux body — `application/vnd.flux`, Accept CSV |
| (supporting) buckets / orgs | `GET /api/v2/buckets`, `GET /api/v2/orgs` | Auth smoke / discovery |
| (v3) write\_lp | `POST /api/v3/write_lp?db=` | InfluxDB 3 line protocol |
| (v3) query\_sql | `POST /api/v3/query_sql` | JSON `{"db","q"}` |

Default `BASE_ADDRESS` is `https://YOUR_INFLUXDB_HOST` (no trailing slash). Cloud example: `https://{region}.cloud2.influxdata.com`. OSS often `http://host:8086` — set `USE_SSL "false"` when not TLS. Topics use `data/influxdb/<object>/<verb>`.

See the base guide: [REST API Connectors](/latest/lot-language/routes/rest-api-routes).

> [!NOTE]
>
> **Auth scheme:** use `Authorization: Token &lt;token&gt;` — **not** Bearer. Prefer Hub secrets (`GET SECRET "INFLUXDB_TOKEN"` or `"INFLUX_TOKEN"`).

> [!NOTE]
>
> **Line protocol:** `PostWrite` and `PostWriteLpV3` send the MQTT payload as the HTTP body with `Content-Type: text/plain; charset=utf-8`. Build measurement lines upstream (Telegraf MQTT consumer, LoT action, or edge agent).

> [!NOTE]
>
> Factory live smoke used ephemeral local `influxdb:2.7` (`PostWrite` → 204, Flux `PostQuery` → 200). Point `BASE_ADDRESS` at your Cloud or OSS host before production use.

## Basic Syntax

```lot wrap theme={"theme":"css-variables","languages":{"custom":["/languages/lot.json"]}}
# Coreflux REST_API template — InfluxDB v2 / v3
# Auth: Authorization: Token {value.json.api_token}
# BASE_ADDRESS: https://YOUR_INFLUXDB_HOST

DEFINE ROUTE InfluxdbRestApi WITH TYPE REST_API
    ADD REST_API_CONFIG
        WITH BASE_ADDRESS "https://YOUR_INFLUXDB_HOST"
        WITH ENABLE_CLIENT "true"
        WITH USE_SSL "true"
        WITH REQUEST_TIMEOUT '60'
        WITH DEFAULT_CONTENT_TYPE "application/json"
    ADD EVENT GetHealth
        WITH SOURCE_TOPIC "data/influxdb/health"
        WITH DESTINATION_TOPIC "data/influxdb/health/response"
        WITH METHOD "GET"
        WITH ENDPOINT "/health"
        WITH HEADERS
            ADD "Accept" "application/json"
    ADD EVENT PostWrite
        WITH SOURCE_TOPIC "data/influxdb/write"
        WITH DESTINATION_TOPIC "data/influxdb/write/response"
        WITH METHOD "POST"
        WITH ENDPOINT "/api/v2/write?org={value.json.org}&bucket={value.json.bucket}&precision={value.json.precision}"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "Content-Type" "text/plain; charset=utf-8"
            ADD "Authorization" "Token {value.json.api_token}"
        WITH BODY "{payload}"
    ADD EVENT PostQuery
        WITH SOURCE_TOPIC "data/influxdb/query"
        WITH DESTINATION_TOPIC "data/influxdb/query/response"
        WITH METHOD "POST"
        WITH ENDPOINT "/api/v2/query?org={value.json.org}"
        WITH HEADERS
            ADD "Accept" "application/csv"
            ADD "Content-Type" "application/vnd.flux"
            ADD "Authorization" "Token {value.json.api_token}"
        WITH BODY "{payload}"
```

Full template (ping, buckets, orgs, v3 write\_lp / query\_sql): see the package `InfluxdbRestApi.lot` under the broker templates tree after you push `feat/rest-api-route-influxdb`.

## Auth and placeholders

| Placeholder | Meaning |
| - | - |
| `{value.json.api_token}` | InfluxDB API token → `Authorization: Token …` |
| `{value.json.org}` | v2 org name or id |
| `{value.json.bucket}` | v2 bucket name |
| `{value.json.precision}` | `ns` / `us` / `ms` / `s` |
| `{value.json.db}` | InfluxDB 3 database name |
| `{payload}` | Line protocol string (write) or Flux script / SQL JSON (query) |

## Template reference

Generated from the shipped broker template `influxdb` (`-routeCode INFLUXDB`). It lists every event the template defines.

### Auth

Authorization: Token \{value.json.api\_token} (InfluxDB API token / operator token). Prefer GET SECRET INFLUXDB\_TOKEN or INFLUX\_TOKEN. Never commit real credentials. Not Bearer.

Auth headers used by the template: `Authorization: Token {value.json.api_token}`.

### Template parameters

| Placeholder | Type | Description | Required |
| - | - | - | - |
| `RouteName` | string | Name of the InfluxDB connector | no |
| `BaseUrl` | string | InfluxDB base URL without trailing slash (e.g. https\://YOUR\_INFLUXDB\_HOST) | yes |

`BASE_ADDRESS` default: `https://YOUR_INFLUXDB_HOST`.

### Events

| Event | Method | Endpoint | Request topic | Response topic | Payload fields |
| - | - | - | - | - | - |
| `GetHealth` | GET | `/health` | `data/influxdb/health` | `data/influxdb/health/response` | none |
| `GetPing` | GET | `/ping` | `data/influxdb/ping` | `data/influxdb/ping/response` | none |
| `PostWrite` | POST | `/api/v2/write?org={value.json.org}&bucket={value.json.bucket}&precision={value.json.precision}` | `data/influxdb/write` | `data/influxdb/write/response` | `api_token`, `body`, `bucket`, `org`, `precision` |
| `PostQuery` | POST | `/api/v2/query?org={value.json.org}` | `data/influxdb/query` | `data/influxdb/query/response` | `api_token`, `body`, `org` |
| `GetBuckets` | GET | `/api/v2/buckets?org={value.json.org}` | `data/influxdb/buckets` | `data/influxdb/buckets/response` | `api_token`, `org` |
| `GetOrgs` | GET | `/api/v2/orgs` | `data/influxdb/orgs` | `data/influxdb/orgs/response` | `api_token` |
| `PostWriteLpV3` | POST | `/api/v3/write_lp?db={value.json.db}&precision={value.json.precision}` | `data/influxdb/v3/write` | `data/influxdb/v3/write/response` | `api_token`, `body`, `db`, `precision` |
| `PostQuerySqlV3` | POST | `/api/v3/query_sql` | `data/influxdb/v3/query-sql` | `data/influxdb/v3/query-sql/response` | `api_token`, `body` |

### Deploy

Get the template card (JSON with `template` and `metadata`) from the broker, then deploy the connector:

```bash theme={"theme":"css-variables","languages":{"custom":["/languages/lot.json"]}}
mosquitto_pub -t '$SYS/Coreflux/Command' -m "-routeCode INFLUXDB"
```

The deployable connector from the REST API app, with `BASE_ADDRESS` already filled in:

```lot theme={"theme":"css-variables","languages":{"custom":["/languages/lot.json"]}}
DEFINE ROUTE InfluxdbRestApi WITH TYPE REST_API
    ADD REST_API_CONFIG
        WITH BASE_ADDRESS "https://YOUR_INFLUXDB_HOST"
        WITH ENABLE_CLIENT "true"
        WITH USE_SSL "true"
        WITH REQUEST_TIMEOUT '60'
        WITH DEFAULT_CONTENT_TYPE "application/json"
    ADD EVENT GetHealth
        WITH SOURCE_TOPIC "data/influxdb/health"
        WITH DESTINATION_TOPIC "data/influxdb/health/response"
        WITH METHOD "GET"
        WITH ENDPOINT "/health"
        WITH HEADERS
            ADD "Accept" "application/json"
    ADD EVENT GetPing
        WITH SOURCE_TOPIC "data/influxdb/ping"
        WITH DESTINATION_TOPIC "data/influxdb/ping/response"
        WITH METHOD "GET"
        WITH ENDPOINT "/ping"
        WITH HEADERS
            ADD "Accept" "application/json"
    ADD EVENT PostWrite
        WITH SOURCE_TOPIC "data/influxdb/write"
        WITH DESTINATION_TOPIC "data/influxdb/write/response"
        WITH METHOD "POST"
        WITH ENDPOINT "/api/v2/write?org={value.json.org}&bucket={value.json.bucket}&precision={value.json.precision}"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "Content-Type" "text/plain; charset=utf-8"
            ADD "Authorization" "Token {value.json.api_token}"
        WITH BODY "{value.json.body}"
    ADD EVENT PostQuery
        WITH SOURCE_TOPIC "data/influxdb/query"
        WITH DESTINATION_TOPIC "data/influxdb/query/response"
        WITH METHOD "POST"
        WITH ENDPOINT "/api/v2/query?org={value.json.org}"
        WITH HEADERS
            ADD "Accept" "application/csv"
            ADD "Content-Type" "application/vnd.flux"
            ADD "Authorization" "Token {value.json.api_token}"
        WITH BODY "{value.json.body}"
    ADD EVENT GetBuckets
        WITH SOURCE_TOPIC "data/influxdb/buckets"
        WITH DESTINATION_TOPIC "data/influxdb/buckets/response"
        WITH METHOD "GET"
        WITH ENDPOINT "/api/v2/buckets?org={value.json.org}"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "Authorization" "Token {value.json.api_token}"
    ADD EVENT GetOrgs
        WITH SOURCE_TOPIC "data/influxdb/orgs"
        WITH DESTINATION_TOPIC "data/influxdb/orgs/response"
        WITH METHOD "GET"
        WITH ENDPOINT "/api/v2/orgs"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "Authorization" "Token {value.json.api_token}"
    ADD EVENT PostWriteLpV3
        WITH SOURCE_TOPIC "data/influxdb/v3/write"
        WITH DESTINATION_TOPIC "data/influxdb/v3/write/response"
        WITH METHOD "POST"
        WITH ENDPOINT "/api/v3/write_lp?db={value.json.db}&precision={value.json.precision}"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "Content-Type" "text/plain; charset=utf-8"
            ADD "Authorization" "Token {value.json.api_token}"
        WITH BODY "{value.json.body}"
    ADD EVENT PostQuerySqlV3
        WITH SOURCE_TOPIC "data/influxdb/v3/query-sql"
        WITH DESTINATION_TOPIC "data/influxdb/v3/query-sql/response"
        WITH METHOD "POST"
        WITH ENDPOINT "/api/v3/query_sql"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "Content-Type" "application/json"
            ADD "Authorization" "Token {value.json.api_token}"
        WITH BODY "{value.json.body}"
```

Deploy it with `-addRoute` (do not include `ADD METADATA`).

### Usage example

Call `GetHealth` by publishing a JSON payload to its request topic, and read the reply on the response topic:

```bash theme={"theme":"css-variables","languages":{"custom":["/languages/lot.json"]}}
mosquitto_sub -t 'data/influxdb/health/response' &
mosquitto_pub -t 'data/influxdb/health' -m '{}'
```

## Related

* [REST API Connectors](/latest/lot-language/routes/rest-api-routes)
* [REST API Apps catalog](/latest/lot-language/routes/rest-api-apps)
* [InfluxDB v2 API](https://docs.influxdata.com/influxdb/v2/api/v2/)
* [Write with the API](https://docs.influxdata.com/influxdb/v2/write-data/developer-tools/api/)
* [Query with the API](https://docs.influxdata.com/influxdb/v2/query-data/execute-queries/influx-api/)
* [InfluxDB 3 write data](https://docs.influxdata.com/influxdb3/core/write-data/)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.