---
title: /query 1.x compatibility API
description: The /query 1.x compatibility endpoint queries InfluxDB Cloud and InfluxDB OSS 2.x using InfluxQL.
url: https://docs.influxdata.com/influxdb/v2/api-guide/influxdb-1x/query/
estimated_tokens: 1758
product: InfluxDB OSS v2
version: v2
publisher: InfluxData
canonical: https://docs.influxdata.com/influxdb/v2/api-guide/influxdb-1x/query/
date: '2026-05-15T15:46:14-06:00'
lastmod: '2026-05-15T15:46:14-06:00'
---

This page documents an earlier version of InfluxDB OSS.[InfluxDB 3 Core](/influxdb3/core/) is the latest stable version.

#### API token hashing is enabled by default in InfluxDB OSS 2.9.0

Stronger token security: tokens are stored as hashes on disk, so a
copy of the database file doesn’t expose usable tokens. Existing
tokens are hashed on first startup and the original strings can’t
be recovered afterward — **capture any plaintext tokens you still
need before you upgrade**.

For more information, see [Token hashing](/influxdb/v2/admin/tokens/#token-hashing).

The `/query` 1.x compatibility endpoint queries InfluxDB 2.9 using **InfluxQL**.
Send an InfluxQL query in an HTTP `GET` or `POST` request to query data from the `/query` endpoint.

The `/query` compatibility endpoint uses the **database** and **retention policy**specified in the query request to map the request to an InfluxDB bucket.
For more information, see [Database and retention policy mapping](/influxdb/v2/reference/api/influxdb-1x/dbrp).

## Authentication

Use one of the following authentication methods:

* the 2.x `Authorization: Token` scheme in the header
* the v1-compatible `u` and `p` query string parameters
* the v1-compatible `Basic` authentication scheme in the header

For more information, see [Authentication for the 1.x compatibility API](/influxdb/v2/api-guide/influxdb-1x/).

## Query string parameters

### u

(Optional) The 1.x **username** to authenticate the request.
If you provide an API token as the password, `u` is required, but can be any value.*See [query string authentication](/influxdb/v2/reference/api/influxdb-1x/#query-string-authentication).*

### p

(Optional) The 1.x **password** or the 2.x API token to authenticate the request.*See [query string authentication](/influxdb/v2/reference/api/influxdb-1x/#query-string-authentication).*

### db

(Required) The **database** to query data from.
This is mapped to an InfluxDB [bucket](/influxdb/v2/reference/glossary/#bucket).*See [Database and retention policy mapping](/influxdb/v2/reference/api/influxdb-1x/dbrp/).*

### rp

The **retention policy** to query data from.
This is mapped to an InfluxDB [bucket](/influxdb/v2/reference/glossary/#bucket).*See [Database and retention policy mapping](/influxdb/v2/reference/api/influxdb-1x/dbrp/).*

### q

(Required) The **InfluxQL** query to execute.
To execute multiple queries, delimit queries with a semicolon (`;`).

### epoch

Return results with [Unix timestamps](/influxdb/v2/reference/glossary/#unix-timestamp)(also known as epoch timestamps) in the specified precision instead of[RFC3339 timestamps](/influxdb/v2/reference/glossary/#rfc3339-timestamp) with nanosecond precision.
The following precisions are available:

* `ns` - nanoseconds
* `u` or `µ` - microseconds
* `ms` - milliseconds
* `s` - seconds
* `m` - minutes
* `h` - hours

## Query examples

* [Query using basic authentication](#query-using-basic-authentication)
* [Query a non-default retention policy](#query-a-non-default-retention-policy)
* [Execute multiple queries](#execute-multiple-queries)
* [Return query results with millisecond Unix timestamps](#return-query-results-with-millisecond-unix-timestamps)
* [Execute InfluxQL queries from a file](#execute-influxql-queries-from-a-file)

##### Query using basic authentication

The following example:

* sends a `GET` request to the `/query` endpoint
* uses the `Authorization` header with the `Basic` scheme (compatible with InfluxDB 1.x) to provide username and password credentials
* uses the default retention policy for the database

```sh
##############################################################################
# Use Basic authentication with an
# InfluxDB v1-compatible username and password
# to query the InfluxDB 1.x compatibility API.
#
# INFLUX_USERNAME: your v1-compatible username.
# INFLUX_PASSWORD_OR_TOKEN: your API token or v1-compatible password.
##############################################################################

curl --get "http://localhost:8086/query" \
  --user "INFLUX_USERNAME:INFLUX_PASSWORD_OR_TOKEN" \
  --data-urlencode "db=BUCKET_NAME" \
  --data-urlencode "q=SELECT * FROM cpu_usage"
```

##### Query using an HTTP POST request

```bash
curl \
  --request POST \
  "http://localhost:8086/query?db=DATABASE_NAME&rp=RETENTION_POLICY" \
  --user "INFLUX_USERNAME:INFLUX_PASSWORD_OR_TOKEN" \
  --header "Content-type: application/vnd.influxql" \
  --data "SELECT * FROM cpu_usage WHERE time > now() - 1h"
```

##### Query a non-default retention policy

The following example:

* sends a `GET` request to the `/query` endpoint
* uses the `Authorization` header with the `Token` scheme (compatible with InfluxDB 2.x) to provide the API token
* queries a custom retention policy mapped for the database

```sh
curl --get http://localhost:8086/query \
  --header "Authorization: Token API_TOKEN" \
  --data-urlencode "db=DATABASE_NAME" \
  --data-urlencode "rp=RETENTION_POLICY_NAME" \
  --data-urlencode "q=SELECT used_percent FROM mem WHERE host=host1"
```

##### Execute multiple queries

```sh
curl --get http://localhost:8086/query \
  --header "Authorization: Token API_TOKEN" \
  --data-urlencode "db=DATABASE_NAME" \
  --data-urlencode "q=SELECT * FROM mem WHERE host=host1;SELECT mean(used_percent) FROM mem WHERE host=host1 GROUP BY time(10m)"
```

##### Return query results with millisecond Unix timestamps

```sh
curl --get http://localhost:8086/query \
  --header "Authorization: Token API_TOKEN" \
  --data-urlencode "db=DATABASE_NAME" \
  --data-urlencode "rp=RETENTION_POLICY_NAME" \
  --data-urlencode "q=SELECT used_percent FROM mem WHERE host=host1" \
  --data-urlencode "epoch=ms"
```

##### Execute InfluxQL queries from a file

```sh
curl --get http://localhost:8086/query \
  --header "Authorization: Token API_TOKEN" \
  --data-urlencode "db=DATABASE_NAME" \
  --data-urlencode "q@path/to/influxql.txt"
```

##### Return a gzip-compressed response

```sh
curl --get http://localhost:8086/query \
  --header 'Accept-Encoding: gzip' \
  --header "Authorization: Token API_TOKEN" \
  --data-urlencode "db=DATABASE_NAME" \
  --data-urlencode "q=SELECT used_percent FROM mem WHERE host=host1"
```

Replace the following:

* `API_TOKEN`: your InfluxDB [API token](/influxdb/v2/admin/tokens/)
* `DATABASE_NAME`: the name of the database to query.
  In InfluxDB 2.x, databases and retention policies map to [buckets](/influxdb/v2/admin/buckets/).
* `RETENTION_POLICY_NAME`: the name of the retention policy to query.
  In InfluxDB 2.x, databases and retention policies map to [buckets](/influxdb/v2/admin/buckets/).

*For more information about the database and retention policy mapping, see [Database and retention policy mapping](/influxdb/v2/reference/api/influxdb-1x/dbrp).*

#### Related

* [Query with the InfluxDB API](/influxdb/v2/query-data/execute-queries/influx-api/)
* [Query data with InfluxQL](/influxdb/v2/query-data/influxql/)

[influxql](/influxdb/v2/tags/influxql/)[query](/influxdb/v2/tags/query/)
