---
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: 4238
product: InfluxDB OSS v2
version: v2
---

# /query 1.x compatibility API

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/)
