---
title: Use the InfluxDB v1 HTTP query API and InfluxQL to query data
description: Use the InfluxDB v1 HTTP query API to query data in InfluxDB 3 Core with InfluxQL.
url: https://docs.influxdata.com/influxdb3/core/query-data/execute-queries/influxdb-v1-api/
estimated_tokens: 3963
product: InfluxDB 3 Core
version: core
---

# Use the InfluxDB v1 HTTP query API and InfluxQL to query data

-   InfluxQL

Use the InfluxDB v1 HTTP query API to query data in InfluxDB 3 Core with InfluxQL.

The examples below use **cURL** to send HTTP requests to the InfluxDB v1 HTTP API, but you can use any HTTP client.

#### InfluxQL feature support

InfluxQL is being rearchitected to work with the InfluxDB 3 storage engine. This process is ongoing and some InfluxQL features are still being implemented. For information about the current implementation status of InfluxQL features, see [InfluxQL feature support](/influxdb3/core/reference/influxql/feature-support/).

Use the v1 `/query` endpoint and the `GET` request method to query data with InfluxQL:

[GET http://localhost:8181/query](/influxdb3/core/api/query-data/)

## Authenticate API requests

InfluxDB 3 Core requires each API request to be authenticated with a [token](/influxdb3/core/admin/tokens/) . With InfluxDB v1-compatible endpoints in InfluxDB 3, you can use database tokens in InfluxDB 1.x username and password schemes, in the InfluxDB v2 `Authorization: Token` scheme, or in the OAuth `Authorization: Bearer` scheme.

-   [Authenticate with a username and password scheme](#authenticate-with-a-username-and-password-scheme)
-   [Authenticate with a token scheme](#authenticate-with-a-token-scheme)

### Authenticate with a username and password scheme

With InfluxDB v1-compatible endpoints in InfluxDB 3, you can use the InfluxDB 1.x convention of username and password to authenticate database reads by passing a [token](/influxdb3/core/admin/tokens/)

as the `password` credential. When authenticating requests to the v1 API `/query` endpoint, InfluxDB 3 Core checks that the `password` (`p`) value is an authorized [token](/influxdb3/core/admin/tokens/)

. InfluxDB 3 Core ignores the `username` (`u`) parameter in the request.

Use one of the following authentication schemes with clients that support Basic authentication or query parameters:

-   [Basic authentication](#basic-authentication)
-   [Query string authentication](#query-string-authentication)

#### Basic authentication

Use the `Authorization` header with the `Basic` scheme to authenticate v1 API `/query` requests. When authenticating requests, InfluxDB 3 Core checks that the `password` part of the decoded credential is an authorized [token](/influxdb3/core/admin/tokens/)

. InfluxDB 3 Core ignores the `username` part of the decoded credential.

##### Syntax

```http
Authorization: Basic <base64-encoded [USERNAME]:DATABASE_TOKEN>
```

Encode the `[USERNAME]:DATABASE_TOKEN` credential using base64 encoding, and then append the encoded string to the `Authorization: Basic` header.

##### Example

The following example shows how to use cURL with the `Basic` authentication scheme:

```sh
curl --get "https://localhost:8181/query" \
  --user "any:DATABASE_TOKEN" \
  --data-urlencode "db=DATABASE_NAME" \
  --data-urlencode "q=SELECT * FROM home"
```

#### Query string authentication

In the URL, pass the `p` query parameter to authenticate `/query` requests. When authenticating requests, InfluxDB 3 Core checks that the `p` (*password*) value is an authorized [token](/influxdb3/core/admin/tokens/)

and ignores the `u` (*username*) parameter.

##### Syntax

```sh
https://localhost:8181/query/?u=any&p=DATABASE_TOKEN
```

##### Example

The following example shows how to use cURL with query string authentication:

```sh
curl --get "https://localhost:8181/query" \
  --data-urlencode "p=DATABASE_TOKEN" \
  --data-urlencode "db=DATABASE_NAME" \
  --data-urlencode "q=SELECT * FROM home"
```

### Authenticate with a token scheme

Use the `Authorization: Bearer` or the `Authorization: Token` scheme to pass a [token](/influxdb3/core/admin/tokens/)

for authenticating v1 API `/query` requests.

`Bearer` and `Token` are equivalent in InfluxDB 3 Core. The `Token` scheme is used in the InfluxDB 2.x API. `Bearer` is defined by the [OAuth 2.0 Framework](https://www.rfc-editor.org/rfc/rfc6750#page-14). Support for one or the other may vary across InfluxDB API clients.

#### Syntax

```http
Authorization: Bearer DATABASE_TOKEN
```

```http
Authorization: Token DATABASE_TOKEN
```

#### Examples

Use `Bearer` to authenticate a query request:

```sh
curl --get "https://localhost:8181/query" \
  --header "Authorization: Bearer DATABASE_TOKEN" \
  --data-urlencode "db=DATABASE_NAME" \
  --data-urlencode "q=SELECT * FROM home"
```

Use `Token` to authenticate a query request:

```sh
curl --get "https://localhost:8181/query" \
  --header "Authorization: Token DATABASE_TOKEN" \
  --data-urlencode "db=DATABASE_NAME" \
  --data-urlencode "q=SELECT * FROM home"
```

## Query parameters

For InfluxDB 3 Core v1 API `/query` requests, set parameters as listed in the following table:

| Parameter | Allowed in | Ignored | Value |
| --- | --- | --- | --- |
| chunked | Query string | Honored | Returns points in streamed batches instead of in a single response. If set to true, InfluxDB chunks responses by series or by every 10,000 points, whichever occurs first. |
| chunked_size | Query string | Honored | Requires chunked to be set to true. If set to a specific value, InfluxDB chunks responses by series or by this number of points. |
| db * | Query string | Honored | Database name |
| epoch | Query string | Honored | Timestamp precision |
| p | Query string | Honored | For query string authentication, a token |

`pretty` | Query string | Ignored | N/A `q` \* | Query string | Honored | URL-encoded InfluxQL query `rp` | Query string | Honored, but discouraged | Retention policy `u` | Query string | Ignored | For [query string authentication](#query-string-authentication), any arbitrary string `Authorization` | Header | Honored | `Bearer DATABASE_TOKEN`, `Token DATABASE_TOKEN`, or `Basic <base64 [USERNAME]:DATABASE_TOKEN>`

\* = Required

### Timestamp precision

Use one of the following values for timestamp precision:

-   `ns`: nanoseconds
-   `us`: microseconds
-   `ms`: milliseconds
-   `s`: seconds
-   `m`: minutes
-   `h`: hours

Replace the following configuration values:

-   `DATABASE_NAME`: the name of the [database](/influxdb3/core/admin/databases/) to query
-   `DATABASE_TOKEN`: your InfluxDB 3 Core [token](/influxdb3/core/admin/tokens/)

## Return results as JSON or CSV

By default, the `/query` endpoint returns results in **JSON**, but it can also return results in **CSV**. To return results as CSV, include the `Accept` header with the `application/csv` or `text/csv` MIME type:

```sh
curl --get https://localhost:8181/query \
  --header "Authorization: Bearer DATABASE_TOKEN" \
  --header "Accept: application/csv" \
  --data-urlencode "db=DATABASE_NAME" \
  --data-urlencode "q=SELECT * FROM home"
```

#### Related

-   [Use compatibility APIs and client libraries to write data](/influxdb3/core/write-data/http-api/compatibility-apis/)

[query](/influxdb3/core/tags/query/) [influxql](/influxdb3/core/tags/influxql/) [python](/influxdb3/core/tags/python/)
