Query with the InfluxDB API
The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. To query InfluxDB 2.7, do one of the following:
- Send a Flux query request to the /api/v2/query endpoint.
- Send an InfluxQL query request to the /query 1.x compatibility API.
In your request, set the following:
- Your organization via the
orgororgIDURL parameters. Authorizationheader toToken+ your API token.Acceptheader toapplication/csv.Content-typeheader toapplication/vnd.flux(Flux only) orapplication/json(Flux or InfluxQL).- Query in Flux or InfluxQL with the request’s raw data.
Use gzip to compress the query response
To compress the query response, set the Accept-Encoding header to gzip. This saves network bandwidth, but increases server-side load.
We recommend only using gzip compression on responses that are larger than 1.4 KB. If the response is smaller than 1.4 KB, gzip encoding will always return a 1.4 KB response, despite the uncompressed response size. 1500 bytes (~1.4 KB) is the maximum transmission unit (MTU) size for the public network and is the largest packet size allowed at the network layer.
Flux - Example query request
Below is an example curl request that sends a Flux query to InfluxDB 2.7:
Without compression With compression
1. curl --request POST \
2. http://localhost:8086/api/v2/query?orgID=INFLUX_ORG_ID \
3. --header 'Authorization: Token INFLUX_TOKEN' \
4. --header 'Accept: application/csv' \
5. --header 'Content-type: application/vnd.flux' \
6. --data 'from(bucket:"example-bucket")
7. |> range(start: -12h)
8. |> filter(fn: (r) => r._measurement == "example-measurement")
9. |> aggregateWindow(every: 1h, fn: mean)'
1. curl --request POST \
2. http://localhost:8086/api/v2/query?orgID=INFLUX_ORG_ID \
3. --header 'Authorization: Token INFLUX_TOKEN' \
4. --header 'Accept: application/csv' \
5. --header 'Content-type: application/vnd.flux' \
6. --header 'Accept-Encoding: gzip' \
7. --data 'from(bucket:"example-bucket")
8. |> range(start: -12h)
9. |> filter(fn: (r) => r._measurement == "example-measurement")
10. |> aggregateWindow(every: 1h, fn: mean)'
InfluxQL - Example query request
Below is an example curl request that sends an InfluxQL query to InfluxDB 2.7:
Without compression With compression
1. curl --request -G http://localhost:8086/query?orgID=INFLUX_ORG_ID&database=MyDB&retention_policy=MyRP \
2. --header 'Authorization: Token INFLUX_TOKEN' \
3. --header 'Accept: application/csv' \
4. --header 'Content-type: application/json' \
5. --data-urlencode "q=SELECT used_percent FROM example-db.example-rp.example-measurement WHERE host=host1"
1. curl --request -G http://localhost:8086/query?orgID=INFLUX_ORG_ID&database=MyDB&retention_policy=MyRP \
2. --header 'Authorization: Token INFLUX_TOKEN' \
3. --header 'Accept: application/csv' \
4. --header 'Content-type: application/json' \
5. --header 'Accept-Encoding: gzip' \
6. --data-urlencode "q=SELECT used_percent FROM example-db.example-rp.example-measurement WHERE host=host1"
InfluxDB returns the query results in annotated CSV.
