content/shared/influxdb-v2/query-data/execute-queries/influx-api.md
The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. To query InfluxDB {{< current-version >}}, do one of the following:
Send a Flux query request to the following endpoint:
{{% api-endpoint method="POST" endpoint="/api/v2/query" api-ref="/influxdb/version/api/#operation/PostQueryAnalyze" %}}
In your request, set the following:
org or orgID URL parametersAuthorization: Token <API_TOKEN>Accept: application/csvContent-type: application/vnd.flux[!Note]
Use gzip to compress a large query response
To compress the query response, set the
Accept-Encodingheader togzip. 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.
The following example shows how to use cURL to send a Flux query to InfluxDB {{< current-version >}}:
{{% code-placeholders "ORG_ID|API_TOKEN|BUCKET_NAME" %}}
{{< code-tabs-wrapper >}} {{% code-tabs %}} Without compression With compression {{% /code-tabs %}} {{% code-tab-content %}}
curl \
--request POST \
http://{{< influxdb/host >}}/api/v2/query?orgID=ORG_ID \
--header 'Authorization: Token API_TOKEN' \
--header 'Accept: application/csv' \
--header 'Content-type: application/vnd.flux' \
--data 'from(bucket:"BUCKET_NAME")
|> range(start: -12h)
|> filter(fn: (r) => r._measurement == "example-measurement")
|> aggregateWindow(every: 1h, fn: mean)'
{{% /code-tab-content %}} {{% code-tab-content %}}
curl \
--request POST \
http://{{< influxdb/host >}}/api/v2/query?orgID=ORG_ID \
--header 'Authorization: Token API_TOKEN' \
--header 'Accept: application/csv' \
--header 'Content-type: application/vnd.flux' \
--header 'Accept-Encoding: gzip' \
--data 'from(bucket:"BUCKET_NAME")
|> range(start: -12h)
|> filter(fn: (r) => r._measurement == "example-measurement")
|> aggregateWindow(every: 1h, fn: mean)'
{{% /code-tab-content %}} {{< /code-tabs-wrapper >}}
{{% /code-placeholders %}}
Replace the following with your values:
ORG_ID{{% /code-placeholder-key %}} - the ID of the organization that owns the bucket.API_TOKEN{{% /code-placeholder-key %}} - your token.BUCKET_NAME{{% /code-placeholder-key %}} - the name of the bucket to query.To query InfluxDB {{< current-version >}} using the InfluxQL query language, send a request to the v1-compatible API endpoint:
{{% api-endpoint method="GET" endpoint="/query" api-ref="/influxdb/v2/api/v2/#operation/GetLegacyQuery" %}}
{{% api-endpoint method="POST" endpoint="/query" api-ref="/influxdb/v2/api/v2/#operation/PostQueryV1" %}}
In your request, set the following:
Accept: application/csv or Accept: application/jsonContent-type: application/vnd.influxql[!Note] If you have an existing bucket that doesn't follow the database/retention-policy naming convention, you must manually create a database and retention policy mapping to query that bucket with the
/querycompatibility API. Use thedbandrpquery parameters to specify the database and retention policy for the bucket you want to query.
The following example shows how to use cURL to send an InfluxQL query to InfluxDB {{< current-version >}} using v1-compatible authentication:
{{% code-placeholders "API_TOKEN|BUCKET_NAME" %}}
{{< code-tabs-wrapper >}} {{% code-tabs %}} HTTP POST HTTP GET {{% /code-tabs %}}
{{% code-tab-content %}}
# 1.x compatible POST request using Basic authentication and InfluxQL
curl --request POST \
"http://{{< influxdb/host >}}/query?db=BUCKET_NAME&p=API_TOKEN&u=ignored" \
--header "Content-type: application/vnd.influxql" \
--data "SELECT * FROM home WHERE time > now() - 1h"
{{% /code-tab-content %}} {{% code-tab-content %}}
# 1.x compatible GET request using Basic authentication and InfluxQL
curl --get "http://{{< influxdb/host >}}/query" \
--header "Accept: application/json" \
--data-urlencode "q=SELECT * FROM home WHERE time > now() - 1h" \
--data-urlencode "db=BUCKET_NAME" \
--data-urlencode "u=ignored" \
--data-urlencode "p=API_TOKEN"
{{% /code-tab-content %}} {{< /code-tabs-wrapper >}}
{{% /code-placeholders %}}
Replace the following with your values:
API_TOKEN{{% /code-placeholder-key %}} - your token.BUCKET_NAME{{% /code-placeholder-key %}} - the name of the bucket to query.{{% code-placeholders "ORG_ID|API_TOKEN|BUCKET_NAME" %}}
{{< code-tabs-wrapper >}} {{% code-tabs %}} Without compression With compression {{% /code-tabs %}}
{{% code-tab-content %}}
curl --get "http://{{< influxdb/host >}}/query" \
--header 'Accept: application/csv' \
--header 'Content-type: application/json' \
--data-urlencode "db=BUCKET_NAME" \
--data-urlencode "p=API_TOKEN" \
--data-urlencode "u=ignored" \
--data-urlencode "q=SELECT used_percent FROM example-db.example-rp.example-measurement WHERE host=host1"
{{% /code-tab-content %}} {{% code-tab-content %}}
curl --get "http://{{< influxdb/host >}}/query" \
--header 'Accept: application/csv' \
--header 'Content-type: application/json' \
--header 'Accept-Encoding: gzip' \
--data-urlencode "db=BUCKET_NAME" \
--data-urlencode "p=API_TOKEN" \
--data-urlencode "u=ignored" \
--data-urlencode "q=SELECT used_percent FROM example-db.example-rp.example-measurement WHERE host=host1"
{{% /code-tab-content %}} {{< /code-tabs-wrapper >}}
{{% /code-placeholders %}}
Replace the following with your values:
API_TOKEN{{% /code-placeholder-key %}} - your token.BUCKET_NAME{{% /code-placeholder-key %}} - the name of the bucket to query.InfluxDB returns the query results in annotated CSV.