---
title: Enterprise
description: 'Endpoints available only in InfluxDB 3 Enterprise. Operations carrying this tag also set x-enterprise-only: true for programmatic detection.'
url: https://docs.influxdata.com/influxdb3/enterprise/api/enterprise/
estimated_tokens: 11578
product: InfluxDB 3 Enterprise
version: enterprise
publisher: InfluxData
canonical: https://docs.influxdata.com/influxdb3/enterprise/api/enterprise/
---

[Download InfluxDB 3 Enterprise API Spec](/openapi/influxdb3-enterprise-openapi.yml)

Endpoints available only in InfluxDB 3 Enterprise. Operations carrying this tag also set `x-enterprise-only: true` for programmatic detection.

POST`/api/v3/authorize`

### 

#### Request bodyrequired

Content-Type:`application/json`

Example request[Ask AI about this](#)

```sh
curl --request POST \
  "https://localhost:8181/api/v3/authorize" \
  --header "Authorization: Bearer INFLUX_TOKEN" \
  --header "Content-Type: application/json"
```

#### Responses

200Success

POST`/api/v3/authorize/refresh`

### 

#### Request bodyrequired

Content-Type:`application/json`

Example request[Ask AI about this](#)

```sh
curl --request POST \
  "https://localhost:8181/api/v3/authorize/refresh" \
  --header "Authorization: Bearer INFLUX_TOKEN" \
  --header "Content-Type: application/json"
```

#### Responses

200Success

POST`/api/v3/authorize/reset-password`

### 

#### Request bodyrequired

Content-Type:`application/json`

Example request[Ask AI about this](#)

```sh
curl --request POST \
  "https://localhost:8181/api/v3/authorize/reset-password" \
  --header "Authorization: Bearer INFLUX_TOKEN" \
  --header "Content-Type: application/json"
```

#### Responses

200Success

GET`/api/v3/configure/query_concurrency_limit`

### Get the query concurrency limit

Returns the current runtime limit on the maximum number of queries that can run concurrently. When the limit is set to the maximum allowed value, `maxConcurrentQueries` is omitted from the response.

This endpoint is only available in InfluxDB 3 Enterprise.

Example request[Ask AI about this](#)

```sh
curl --request GET \
  "https://localhost:8181/api/v3/configure/query_concurrency_limit" \
  --header "Authorization: Bearer INFLUX_TOKEN"
```

#### Responses

200Success. Returns the current query concurrency limit.

`max_concurrent_queries`integer

The maximum number of queries that can run concurrently. Omitted when the limit is set to the maximum allowed value.

Example request body

```json
{
  "max_concurrent_queries": 32
}
```

401Unauthorized access.

`data`object

`error`string

403Access denied.

`data`object

`error`string

PUT`/api/v3/configure/query_concurrency_limit`

### Set the query concurrency limit

Sets the runtime limit on the maximum number of queries that can run concurrently. Omit `max_concurrent_queries` (or set it to `null`) to restore the limit configured at server startup.

Values below 16 are rejected unless `force=true` is set in the query string. A value of `0` is invalid, and values above the maximum allowed limit are rejected.

This endpoint is only available in InfluxDB 3 Enterprise.

#### Parameters

##### Query parameters

`force`boolean

Set to `true` to allow setting `max_concurrent_queries` to a value below the minimum of 16.

#### Request bodyrequired

Content-Type:`application/json`

`max_concurrent_queries`integer

The maximum number of queries that can run concurrently. Set to `null` (or omit) to restore the limit configured at server startup. Must be a positive integer; values below 16 require `force=true`.

Example request body

```json
{
  "max_concurrent_queries": 32
}
```

Example request[Ask AI about this](#)

```sh
curl --request PUT \
  "https://localhost:8181/api/v3/configure/query_concurrency_limit" \
  --header "Authorization: Bearer INFLUX_TOKEN" \
  --header "Content-Type: application/json" \
  --data-raw '{"max_concurrent_queries":32}'
```

#### Responses

204No content. The query concurrency limit was updated.

400

Request failed. Possible reasons:

* Invalid database name
* Malformed request body
* Invalid timestamp precision

`data`object

`error`string

401Unauthorized access.

`data`object

`error`string

403Access denied.

`data`object

`error`string

DELETE`/api/v3/configure/query_concurrency_limit`

### Reset the query concurrency limit

Resets the runtime query concurrency limit to the value configured at server startup.

This endpoint is only available in InfluxDB 3 Enterprise.

Example request[Ask AI about this](#)

```sh
curl --request DELETE \
  "https://localhost:8181/api/v3/configure/query_concurrency_limit" \
  --header "Authorization: Bearer INFLUX_TOKEN"
```

#### Responses

204No content. The query concurrency limit was reset.

401Unauthorized access.

`data`object

`error`string

403Access denied.

`data`object

`error`string

PUT`/api/v3/configure/table`

### Update a table

Updates table configuration, such as retention period.

#### Request bodyrequired

Content-Type:`application/json`

`db`requiredstring

The name of the database containing the table.

`retention_period`string

The retention period for the table. Specifies how long data in this table should be retained.
Use duration format (for example, “1d”, “1h”, “30m”, “7d”).

Example:`"30d"`

`table`requiredstring

The name of the table to update.

Example request[Ask AI about this](#)

```sh
curl --request PUT \
  "https://localhost:8181/api/v3/configure/table" \
  --header "Authorization: Bearer INFLUX_TOKEN" \
  --header "Content-Type: application/json" \
  --data-raw '{
  "db": "DB",
  "retention_period": "30d",
  "table": "TABLE"
}'
```

#### Responses

200Success. The table has been updated.

400Bad request.

401Unauthorized access.

`data`object

`error`string

404Table not found.

POST`/api/v3/configure/user`

### 

#### Request bodyrequired

Content-Type:`application/json`

Example request[Ask AI about this](#)

```sh
curl --request POST \
  "https://localhost:8181/api/v3/configure/user" \
  --header "Authorization: Bearer INFLUX_TOKEN" \
  --header "Content-Type: application/json"
```

#### Responses

200Success

GET`/api/v3/enterprise/backup`

### List backups

Lists all full backups.

Requires an admin (operator) token. Requires the upgraded storage engine (enabled with the `--use-pacha-tree` flag) present on a compactor node; otherwise the endpoint returns `503 Service Unavailable`.

This endpoint is only available in InfluxDB 3 Enterprise.

Example request[Ask AI about this](#)

```sh
curl --request GET \
  "https://localhost:8181/api/v3/enterprise/backup" \
  --header "Authorization: Bearer INFLUX_TOKEN"
```

#### Responses

200Success. Returns the list of backups.

`backups`requiredobject[]

All full backups.

401Unauthorized access.

`data`object

`error`string

403Access denied.

`data`object

`error`string

500Internal server error. Listing backups failed.

`data`object

`error`string

503Service unavailable. The backup engine is not present on this node (not a compactor node).

`data`object

`error`string

POST`/api/v3/enterprise/backup`

### Start a backup

Registers and asynchronously starts a full backup. Returns immediately with the resolved backup name and an in-progress acknowledgement.

Backups run asynchronously. Poll [List backups](#operation/GetEnterpriseBackup) or [Get a backup](#operation/GetEnterpriseBackupByName) to track progress.

Requires an admin (operator) token. Requires the upgraded storage engine (enabled with the `--use-pacha-tree` flag) present on a compactor node; otherwise the endpoint returns `503 Service Unavailable`.

This endpoint is only available in InfluxDB 3 Enterprise.

#### Request bodyrequired

Content-Type:`application/json`

`force`boolean

Overwrite an existing backup of the same name.

`name`string

The backup name. Defaults to a generated name when omitted.

`type`requiredstring

The backup type. Only `full` backups are supported.

Allowed:`full`

Example request body

```json
{
  "force": false,
  "name": "nightly-backup",
  "type": "full"
}
```

Example request[Ask AI about this](#)

```sh
curl --request POST \
  "https://localhost:8181/api/v3/enterprise/backup" \
  --header "Authorization: Bearer INFLUX_TOKEN" \
  --header "Content-Type: application/json" \
  --data-raw '{"force":false,"name":"nightly-backup","type":"full"}'
```

#### Responses

202Accepted. The backup has started.

`backup_name`requiredstring

The resolved backup name.

`status`requiredstring

Example request body

```json
{
  "backup_name": "nightly-backup",
  "status": "in_progress"
}
```

400

Request failed. Possible reasons:

* Invalid database name
* Malformed request body
* Invalid timestamp precision

`data`object

`error`string

401Unauthorized access.

`data`object

`error`string

403Access denied.

`data`object

`error`string

409Conflict. A backup with that name already exists and `force` is `false`, or a duplicate backup job is already in flight.

`data`object

`error`string

503Service unavailable. The backup engine is not present on this node (not a compactor node).

`data`object

`error`string

DELETE`/api/v3/enterprise/backup`

### Cancel a running backup

Cancels an in-progress backup job by name.

Requires an admin (operator) token or admin user. Requires the upgraded storage engine (enabled with the `--use-pacha-tree` flag) present on a compactor node; otherwise the endpoint returns `503 Service Unavailable`.

This endpoint is only available in InfluxDB 3 Enterprise.

#### Request bodyrequired

Content-Type:`application/json`

`name`requiredstring

The name of the backup job to cancel.

Example request body

```json
{
  "name": "nightly-backup"
}
```

Example request[Ask AI about this](#)

```sh
curl --request DELETE \
  "https://localhost:8181/api/v3/enterprise/backup" \
  --header "Authorization: Bearer INFLUX_TOKEN" \
  --header "Content-Type: application/json" \
  --data-raw '{"name":"nightly-backup"}'
```

#### Responses

200Success. The cancellation has been accepted.

`backup_name`requiredstring

The cancelled backup name.

Example request body

```json
{
  "backup_name": "nightly-backup"
}
```

400

Request failed. Possible reasons:

* Invalid database name
* Malformed request body
* Invalid timestamp precision

`data`object

`error`string

401Unauthorized access.

`data`object

`error`string

403Access denied.

`data`object

`error`string

404Not found. No backup is running with that name.

`data`object

`error`string

503Service unavailable. The backup engine is not present on this node (not a compactor node).

`data`object

`error`string

GET`/api/v3/enterprise/backup/{name}`

### Get a backup

Returns a single backup’s manifest.

Requires an admin (operator) token or admin user. Requires the upgraded storage engine (enabled with the `--use-pacha-tree` flag) present on a compactor node; otherwise the endpoint returns `503 Service Unavailable`.

This endpoint is only available in InfluxDB 3 Enterprise.

#### Parameters

##### Path parameters

`name`requiredstring

The backup name. URL-encoded names are decoded by the server.

Example request[Ask AI about this](#)

```sh
curl --request GET \
  "https://localhost:8181/api/v3/enterprise/backup/{name}" \
  --header "Authorization: Bearer INFLUX_TOKEN"
```

#### Responses

200Success. Returns the backup manifest.

401Unauthorized access.

`data`object

`error`string

403Access denied.

`data`object

`error`string

404Not found. No backup exists with that name.

`data`object

`error`string

503Service unavailable. The backup engine is not present on this node (not a compactor node).

`data`object

`error`string

DELETE`/api/v3/enterprise/backup/{name}`

### Delete a backup

Deletes a backup by name.

Requires an admin (operator) token or admin user. Requires the upgraded storage engine (enabled with the `--use-pacha-tree` flag) present on a compactor node; otherwise the endpoint returns `503 Service Unavailable`.

This endpoint is only available in InfluxDB 3 Enterprise.

#### Parameters

##### Path parameters

`name`requiredstring

The backup name. URL-encoded names are decoded by the server.

Example request[Ask AI about this](#)

```sh
curl --request DELETE \
  "https://localhost:8181/api/v3/enterprise/backup/{name}" \
  --header "Authorization: Bearer INFLUX_TOKEN"
```

#### Responses

200Success. The backup has been deleted.

`backup_name`requiredstring

The deleted backup name.

`type`requiredstring

Example request body

```json
{
  "backup_name": "nightly-backup",
  "type": "full"
}
```

401Unauthorized access.

`data`object

`error`string

403Access denied.

`data`object

`error`string

404Not found. No backup exists with that name.

`data`object

`error`string

409Conflict. The backup is in progress and cannot be deleted, or the backup chain is in a conflicting state.

`data`object

`error`string

503Service unavailable. The backup engine is not present on this node (not a compactor node).

`data`object

`error`string

POST`/api/v3/enterprise/configure/file_index`

### Create a file index

Creates a file index for a database or table.

A file index improves query performance by indexing data files based on specified columns, enabling the query engine to skip irrelevant files during query execution.

This endpoint is only available in InfluxDB 3 Enterprise.

#### Request bodyrequired

Content-Type:`application/json`

`columns`requiredstring[]

The columns to use for the file index.

`db`requiredstring

The database name.

`table`string

The table name. If omitted, the file index applies to the database.

Example request body

```json
{
  "columns": [
    "tag1",
    "tag2"
  ],
  "db": "mydb",
  "table": "mytable"
}
```

Example request[Ask AI about this](#)

```sh
curl --request POST \
  "https://localhost:8181/api/v3/enterprise/configure/file_index" \
  --header "Authorization: Bearer INFLUX_TOKEN" \
  --header "Content-Type: application/json" \
  --data-raw '{"columns":["tag1","tag2"],"db":"mydb","table":"mytable"}'
```

#### Responses

200Success. The file index has been created.

400Bad request.

401Unauthorized access.

`data`object

`error`string

404Database or table not found.

DELETE`/api/v3/enterprise/configure/file_index`

### Delete a file index

Deletes a file index from a database or table.

This endpoint is only available in InfluxDB 3 Enterprise.

#### Request bodyrequired

Content-Type:`application/json`

`db`requiredstring

The database name.

`table`string

The table name. If omitted, deletes the database-level file index.

Example request body

```json
{
  "db": "mydb",
  "table": "mytable"
}
```

Example request[Ask AI about this](#)

```sh
curl --request DELETE \
  "https://localhost:8181/api/v3/enterprise/configure/file_index" \
  --header "Authorization: Bearer INFLUX_TOKEN" \
  --header "Content-Type: application/json" \
  --data-raw '{"db":"mydb","table":"mytable"}'
```

#### Responses

200Success. The file index has been deleted.

400Bad request.

401Unauthorized access.

`data`object

`error`string

404Database, table, or file index not found.

POST`/api/v3/enterprise/configure/node/stop`

### Mark a node as stopped

Marks a node as stopped in the catalog, freeing up the licensed cores it was using for other nodes.

Use this endpoint after you have already stopped the physical instance (for example, using `kill` or stopping the container). This endpoint does not shut down the running process — you must stop the instance first.

When the node is marked as stopped:

1. Licensed cores from the stopped node are freed for reuse
2. Other nodes in the cluster see the update after their catalog sync interval

This endpoint is only available in InfluxDB 3 Enterprise.

#### Related

* [influxdb3 stop node](/influxdb3/enterprise/reference/cli/influxdb3/stop/node/)

#### Request bodyrequired

Content-Type:`application/json`

`node_id`requiredstring

The ID of the node to mark as stopped.

Example request body

```json
{
  "node_id": "node-1"
}
```

Example request[Ask AI about this](#)

```sh
curl --request POST \
  "https://localhost:8181/api/v3/enterprise/configure/node/stop" \
  --header "Authorization: Bearer INFLUX_TOKEN" \
  --header "Content-Type: application/json" \
  --data-raw '{"node_id":"node-1"}'
```

#### Responses

200Success. The node has been marked as stopped.

401Unauthorized access.

`data`object

`error`string

404Node not found.

POST`/api/v3/enterprise/configure/table/retention_period`

### Set table retention period

Sets or updates the retention period for a specific table.

Use this endpoint to control how long data in a table is retained independently of the database-level retention period.

This endpoint is only available in InfluxDB 3 Enterprise.

#### Related

* [influxdb3 update table](/influxdb3/enterprise/reference/cli/influxdb3/update/table/)

#### Parameters

##### Query parameters

`db`requiredstring

The database name.

`table`requiredstring

The table name.

`duration`requiredstring

The retention period as a human-readable duration (for example, “30d”, “24h”, “1y”).

Example request[Ask AI about this](#)

```sh
curl --request POST \
  "https://localhost:8181/api/v3/enterprise/configure/table/retention_period?db=DB&table=TABLE&duration=DURATION" \
  --header "Authorization: Bearer INFLUX_TOKEN"
```

#### Responses

204Success. The table retention period has been set.

400Bad request. Invalid duration format.

401Unauthorized access.

`data`object

`error`string

404Database or table not found.

DELETE`/api/v3/enterprise/configure/table/retention_period`

### Clear table retention period

Removes the retention period from a specific table, reverting to the database-level retention period (or infinite retention if no database-level retention is set).

This endpoint is only available in InfluxDB 3 Enterprise.

#### Related

* [influxdb3 update table](/influxdb3/enterprise/reference/cli/influxdb3/update/table/)

#### Parameters

##### Query parameters

`db`requiredstring

The database name.

`table`requiredstring

The table name.

Example request[Ask AI about this](#)

```sh
curl --request DELETE \
  "https://localhost:8181/api/v3/enterprise/configure/table/retention_period?db=DB&table=TABLE" \
  --header "Authorization: Bearer INFLUX_TOKEN"
```

#### Responses

204Success. The table retention period has been cleared.

401Unauthorized access.

`data`object

`error`string

404Database or table not found.

POST`/api/v3/enterprise/configure/token`

### Create a resource token

Creates a resource (fine-grained permissions) token.
A resource token is a token that has access to specific resources in the system.

This endpoint is only available in InfluxDB 3 Enterprise.

#### Request bodyrequired

Content-Type:`application/json`

`expiry_secs`integer

Optional expiration time in seconds.

`permissions`requiredobject[]

List of permissions to grant to the token.

`token_name`requiredstring

The name for the resource token.

Example request[Ask AI about this](#)

```sh
curl --request POST \
  "https://localhost:8181/api/v3/enterprise/configure/token" \
  --header "Authorization: Bearer INFLUX_TOKEN" \
  --header "Content-Type: application/json" \
  --data-raw '{
  "expiry_secs": 0,
  "permissions": [],
  "token_name": "TOKEN_NAME"
}'
```

#### Responses

201Success. The resource token has been created.
The response body contains the token string and metadata.

`expiry_secs`integer

The expiration time in seconds.

`permissions`object[]

`actions`string[]

`resource_names`string[]

List of resource names. Use “\*” for all resources.

`resource_type`string

Allowed:`system`, `db`

`token_name`string

Example request body

```json
{
  "expiry_secs": 300000,
  "permissions": [
    {
      "actions": [
        "read"
      ],
      "resource_names": [
        "*"
      ],
      "resource_type": "system"
    }
  ],
  "token_name": "All system information"
}
```

401Unauthorized access.

`data`object

`error`string

GET`/api/v3/enterprise/import`

### List bulk import statuses

Lists the status of all uploaded bulk import jobs.

Requires an admin (operator) token. Requires the upgraded storage engine (enabled with the `--use-pacha-tree` flag).

This endpoint is only available in InfluxDB 3 Enterprise.

Example request[Ask AI about this](#)

```sh
curl --request GET \
  "https://localhost:8181/api/v3/enterprise/import" \
  --header "Authorization: Bearer INFLUX_TOKEN"
```

#### Responses

200Success. Returns the list of bulk import statuses.

401Unauthorized access.

`data`object

`error`string

403Access denied.

`data`object

`error`string

500Internal server error. Object store or read failure.

`data`object

`error`string

POST`/api/v3/enterprise/import`

### Upload a Parquet file for bulk import

Uploads a Parquet file, and optional column metadata, for bulk import into an existing table. The compactor node asynchronously picks up and imports the file. Returns the staged import job info synchronously after the upload is staged.

Requires an admin (operator) token. Requires the upgraded storage engine (enabled with the `--use-pacha-tree` flag); the compactor node runs the bulk import scheduler that completes the import.

This endpoint is only available in InfluxDB 3 Enterprise.

#### Request bodyrequired

Content-Type:`application/json`

Example request[Ask AI about this](#)

```sh
curl --request POST \
  "https://localhost:8181/api/v3/enterprise/import" \
  --header "Authorization: Bearer INFLUX_TOKEN" \
  --header "Content-Type: multipart/form-data"
```

#### Responses

200Success. The upload has been staged for import.

`column_metadata`string

`completed_at`integer \<int64\>

When the import completed, in nanoseconds since the Unix epoch.

`created_at`requiredinteger \<int64\>

When the uploaded file was ready for import, in nanoseconds since the Unix epoch.

`db_id`requiredinteger

The ID of the database resolved from the supplied name.

`filename`requiredstring

The filename of the uploaded Parquet data file.

`iox_parquet`requiredboolean

Whether the file was written by IOx (richer embedded metadata).

`last_message`string

The last error message if the job has errored.

`last_updated_at`integer \<int64\>

When this info last changed, in nanoseconds since the Unix epoch.

`max_timestamp_ns`requiredinteger \<int64\>

The maximum timestamp in the file (nanoseconds), from column statistics.

`min_timestamp_ns`requiredinteger \<int64\>

The minimum timestamp in the file (nanoseconds), from column statistics.

`row_count`requiredinteger \<int64\>

The row count from Parquet metadata.

`size_bytes`requiredinteger \<int64\>

The total size of the uploaded Parquet file in bytes.

`started_at`integer \<int64\>

When the import began, in nanoseconds since the Unix epoch.

`status`requiredstring

`table_id`requiredinteger

The ID of the table resolved from the supplied name.

`upload_uuid`requiredstring

The UUID of the upload.

400Bad request. Possible reasons: missing multipart boundary; missing `file_bytes`, `database`, or `table`; unparseable multipart; invalid or empty Parquet; malformed `column_metadata`; column type or mapping mismatch; or a missing time column.

`data`object

`error`string

401Unauthorized access.

`data`object

`error`string

403Access denied.

`data`object

`error`string

404Not found. The target database or table does not exist.

`data`object

`error`string

500Internal server error. Object store, status write, or catalog failure.

`data`object

`error`string

GET`/api/v3/enterprise/restore`

### List restores

Lists every restore for the cluster, newest first, including in-flight and completed restores.

Requires an admin (operator) token or admin user. Requires the upgraded storage engine (enabled with the `--use-pacha-tree` flag) present on a compactor node; otherwise the endpoint returns `503 Service Unavailable`.

This endpoint is only available in InfluxDB 3 Enterprise.

Example request[Ask AI about this](#)

```sh
curl --request GET \
  "https://localhost:8181/api/v3/enterprise/restore" \
  --header "Authorization: Bearer INFLUX_TOKEN"
```

#### Responses

200Success. Returns the list of restores.

`restores`requiredobject[]

All restores, newest first.

401Unauthorized access.

`data`object

`error`string

403Access denied.

`data`object

`error`string

500Internal server error. Listing restores failed.

`data`object

`error`string

503Service unavailable. The restore engine is not present on this node.

`data`object

`error`string

POST`/api/v3/enterprise/restore`

### Start a restore

Registers and asynchronously starts a restore from a named backup. Returns a `restore_id` handle for tracking and cancellation.

Restores run asynchronously. Poll [Get a restore](#operation/GetEnterpriseRestoreById) to track progress. Only one restore can run cluster-wide at a time; if a restore is already running, this endpoint returns `409 Conflict`.

Requires an admin (operator) token. Requires the upgraded storage engine (enabled with the `--use-pacha-tree` flag) present on a compactor node; otherwise the endpoint returns `503 Service Unavailable`.

This endpoint is only available in InfluxDB 3 Enterprise.

#### Request bodyrequired

Content-Type:`application/json`

`backup_name`requiredstring

The name of the backup to restore from. Must not be empty.

Example request body

```json
{
  "backup_name": "nightly-backup"
}
```

Example request[Ask AI about this](#)

```sh
curl --request POST \
  "https://localhost:8181/api/v3/enterprise/restore" \
  --header "Authorization: Bearer INFLUX_TOKEN" \
  --header "Content-Type: application/json" \
  --data-raw '{"backup_name":"nightly-backup"}'
```

#### Responses

202Accepted. The restore has started.

`restore_id`requiredstring

The handle used to track or cancel the restore.

`status`requiredstring

Example request body

```json
{
  "restore_id": "01J8X9Z0ABCDEF",
  "status": "in_progress"
}
```

400Bad request. `backup_name` is empty.

`data`object

`error`string

401Unauthorized access.

`data`object

`error`string

403Access denied.

`data`object

`error`string

409Conflict. A restore is already running. Only one restore can run at a time.

`data`object

`error`string

503Service unavailable. The restore engine is not present on this node, or the restore lease could not be acquired.

`data`object

`error`string

GET`/api/v3/enterprise/restore/{id}`

### Get a restore

Reports a restore’s state by `restore_id`. Reads the persisted manifest, so it works for in-flight and completed restores.

Requires an admin (operator) token or admin user. Requires the upgraded storage engine (enabled with the `--use-pacha-tree` flag) present on a compactor node; otherwise the endpoint returns `503 Service Unavailable`.

This endpoint is only available in InfluxDB 3 Enterprise.

#### Parameters

##### Path parameters

`id`requiredstring

The `restore_id` returned when the restore started.

Example request[Ask AI about this](#)

```sh
curl --request GET \
  "https://localhost:8181/api/v3/enterprise/restore/{id}" \
  --header "Authorization: Bearer INFLUX_TOKEN"
```

#### Responses

200Success. Returns the restore status.

`backup_name`requiredstring

The source backup name.

`completed_at`string \<date-time\>

The completion timestamp. Null when the restore is not complete.

`created_at`requiredstring \<date-time\>

When the restore started.

`restore_id`requiredstring

The restore handle.

`status`requiredstring

`total_files`requiredinteger \<int64\>

The number of files.

`total_size_bytes`requiredinteger \<int64\>

The total size in bytes.

Example request body

```json
{
  "backup_name": "nightly-backup",
  "completed_at": null,
  "created_at": "2025-06-16T03:00:00Z",
  "restore_id": "01J8X9Z0ABCDEF",
  "status": "in_progress",
  "total_files": 128,
  "total_size_bytes": 524288000
}
```

401Unauthorized access.

`data`object

`error`string

403Access denied.

`data`object

`error`string

404Not found. No restore exists with that ID.

`data`object

`error`string

503Service unavailable. The restore engine is not present on this node.

`data`object

`error`string

DELETE`/api/v3/enterprise/restore/{id}`

### Cancel a running restore

Cancels an in-flight restore by `restore_id`.

Requires an admin (operator) token or admin user. Requires the upgraded storage engine (enabled with the `--use-pacha-tree` flag) present on a compactor node.

This endpoint is only available in InfluxDB 3 Enterprise.

#### Parameters

##### Path parameters

`id`requiredstring

The `restore_id` returned when the restore started.

Example request[Ask AI about this](#)

```sh
curl --request DELETE \
  "https://localhost:8181/api/v3/enterprise/restore/{id}" \
  --header "Authorization: Bearer INFLUX_TOKEN"
```

#### Responses

204No content. The cancellation has been accepted.

401Unauthorized access.

`data`object

`error`string

403Access denied.

`data`object

`error`string

404Not found. No restore exists with that ID, the restore is already completed, or the restore engine is not present on this node.

`data`object

`error`string

GET`/api/v3/export/databases`

### List databases available for export (beta)

Returns a list of databases that have compacted data available for Parquet export.

>
>
> **Beta**: This endpoint requires the [performance upgrade preview](/influxdb3/enterprise/performance-preview/)(`--use-pacha-tree` flag). The performance upgrade preview is a beta feature
> and **should not be used for production workloads**.
>
>

Example request[Ask AI about this](#)

```sh
curl --request GET \
  "https://localhost:8181/api/v3/export/databases" \
  --header "Authorization: Bearer INFLUX_TOKEN"
```

#### Responses

200Success. Returns a list of database names.

401Unauthorized access.

`data`object

`error`string

GET`/api/v3/export/tables`

### List tables available for export (beta)

Returns a list of tables in a database that have compacted data available for Parquet export.

>
>
> **Beta**: This endpoint requires the [performance upgrade preview](/influxdb3/enterprise/performance-preview/)(`--use-pacha-tree` flag). The performance upgrade preview is a beta feature
> and **should not be used for production workloads**.
>
>

#### Parameters

##### Query parameters

`db`requiredstring

The name of the database.

Example request[Ask AI about this](#)

```sh
curl --request GET \
  "https://localhost:8181/api/v3/export/tables?db=DB" \
  --header "Authorization: Bearer INFLUX_TOKEN"
```

#### Responses

200Success. Returns a list of table names.

401Unauthorized access.

`data`object

`error`string

404Database not found.

GET`/api/v3/export/window_data`

### Export window data as Parquet (beta)

Downloads compacted data for the specified windows as a tar archive containing Parquet files.

>
>
> **Beta**: This endpoint requires the [performance upgrade preview](/influxdb3/enterprise/performance-preview/)(`--use-pacha-tree` flag). The performance upgrade preview is a beta feature
> and **should not be used for production workloads**.
>
>

#### Parameters

##### Query parameters

`db`requiredstring

The name of the database.

`table`requiredstring

The table name.

`windows`string

Comma-separated list of window dates to export (for example, `2026-01-15,2026-01-16`).
If omitted, exports all available windows.

Example request[Ask AI about this](#)

```sh
curl --request GET \
  "https://localhost:8181/api/v3/export/window_data?db=DB&table=TABLE" \
  --header "Authorization: Bearer INFLUX_TOKEN"
```

#### Responses

200Success. Returns a tar archive containing Parquet files.

401Unauthorized access.

`data`object

`error`string

404Database, table, or window not found.

GET`/api/v3/export/windows`

### List compacted windows for a table (beta)

Returns a list of compacted 24-hour UTC windows for a table.
Each window represents a time range of compacted data that can be exported as Parquet.

>
>
> **Beta**: This endpoint requires the [performance upgrade preview](/influxdb3/enterprise/performance-preview/)(`--use-pacha-tree` flag). The performance upgrade preview is a beta feature
> and **should not be used for production workloads**.
>
>

#### Parameters

##### Query parameters

`db`requiredstring

The name of the database.

`table`requiredstring

The table name.

Example request[Ask AI about this](#)

```sh
curl --request GET \
  "https://localhost:8181/api/v3/export/windows?db=DB&table=TABLE" \
  --header "Authorization: Bearer INFLUX_TOKEN"
```

#### Responses

200Success. Returns a list of compacted 24-hour windows.

401Unauthorized access.

`data`object

`error`string

404Database or table not found.

GET`/api/v3/roles`

### 

Example request[Ask AI about this](#)

```sh
curl --request GET \
  "https://localhost:8181/api/v3/roles" \
  --header "Authorization: Bearer INFLUX_TOKEN"
```

#### Responses

200Success

GET`/api/v3/roles_by_name/{roleName}`

### Get a role by name

Returns the role with the specified name.

Requires a token or user with permission to read roles.

This endpoint is only available in InfluxDB 3 Enterprise. User authentication is a preview feature enabled by setting `--without-user-auth false`.

#### Parameters

##### Path parameters

`roleName`requiredstring

The name of the role to retrieve.

Example request[Ask AI about this](#)

```sh
curl --request GET \
  "https://localhost:8181/api/v3/roles_by_name/{roleName}" \
  --header "Authorization: Bearer INFLUX_TOKEN"
```

#### Responses

200Success. Returns the matching role.

`createdAt`requiredinteger \<int64\>

The Unix timestamp (seconds) when the role was created.

`description`string

The role description.

`id`requiredinteger \<int64\>

The numeric ID of the role.

`isRequiredRole`requiredboolean

Whether the role is a required role.

`name`requiredstring

The role name.

`updatedAt`requiredinteger \<int64\>

The Unix timestamp (seconds) when the role was last updated.

Example request body

```json
{
  "createdAt": 1717000000,
  "id": 1,
  "isRequiredRole": false,
  "name": "read-write",
  "updatedAt": 1717000000
}
```

401Unauthorized access.

`data`object

`error`string

403Access denied.

`data`object

`error`string

404Not found. No role exists with the specified name.

`data`object

`error`string

GET`/api/v3/roles/{id}/permissions`

### Get a role's permissions

Returns the permissions granted to the role with the specified ID.

Requires a token or user with permission to read roles.

This endpoint is only available in InfluxDB 3 Enterprise. User authentication is a preview feature enabled by setting `--without-user-auth false`.

#### Parameters

##### Path parameters

`id`requiredinteger \<int64\>

The ID of the role.

Example request[Ask AI about this](#)

```sh
curl --request GET \
  "https://localhost:8181/api/v3/roles/{id}/permissions" \
  --header "Authorization: Bearer INFLUX_TOKEN"
```

#### Responses

200Success. Returns the role’s permissions.

`permissions`requiredobject[]

The permissions granted to the role.

401Unauthorized access.

`data`object

`error`string

403Access denied.

`data`object

`error`string

404Not found. No role exists with the specified ID.

`data`object

`error`string

GET`/api/v3/row_delete_requests`

### 

#### Parameters

##### Query parameters

`db`string

`table`string

`disposition`string

`min_sequence`integer

`max_sequence`integer

`include_progress`boolean

Default: (default)

Example request[Ask AI about this](#)

```sh
curl --request GET \
  "https://localhost:8181/api/v3/row_delete_requests" \
  --header "Authorization: Bearer INFLUX_TOKEN"
```

#### Responses

200Success

POST`/api/v3/row_delete_requests`

### 

Example request[Ask AI about this](#)

```sh
curl --request POST \
  "https://localhost:8181/api/v3/row_delete_requests" \
  --header "Authorization: Bearer INFLUX_TOKEN"
```

#### Responses

200Success

POST`/api/v3/row_delete_requests/{seq}/abort`

### Abort a pending row-delete request

Aborts a pending row-delete request identified by its sequence number. Returns the updated request with a disposition of `aborted`.

Requires a token or user with `delete` permission on the database that the row-delete request targets.

This endpoint is only available in InfluxDB 3 Enterprise.

#### Parameters

##### Path parameters

`seq`requiredinteger \<int64\>

The sequence number of the row-delete request to abort.

#### Request bodyrequired

Content-Type:`application/json`

`reason`requiredstring

The reason for aborting the row-delete request.

Example request body

```json
{
  "reason": "Predicate was too broad"
}
```

Example request[Ask AI about this](#)

```sh
curl --request POST \
  "https://localhost:8181/api/v3/row_delete_requests/{seq}/abort" \
  --header "Authorization: Bearer INFLUX_TOKEN" \
  --header "Content-Type: application/json" \
  --data-raw '{"reason":"Predicate was too broad"}'
```

#### Responses

200Success. Returns the aborted row-delete request.

`abort_reason`string

The reason the request was aborted. Present only for aborted requests.

`aborted_at`integer \<int64\>

The Unix timestamp (seconds) when the request was aborted. Present only for aborted requests.

`completed_at`integer \<int64\>

The Unix timestamp (seconds) when the request completed. Present only for completed requests.

`created_at`requiredinteger \<int64\>

The Unix timestamp (seconds) when the request was created.

`db_id`requiredinteger \<int64\>

The numeric ID of the target database.

`db_name`requiredstring

The name of the target database.

`db_name_stale`requiredboolean

Whether the database name no longer matches the current catalog state for the stored database ID.

`delete_predicate`requiredstring

The predicate that selects rows to delete.

`disposition`requiredstring

The current disposition of the request: `pending`, `completed`, or `aborted`.

`max_time`integer \<int64\>

The maximum timestamp (nanoseconds) of the delete range.

`min_time`integer \<int64\>

The minimum timestamp (nanoseconds) of the delete range.

`progress`string

`sequence`requiredinteger \<int64\>

The sequence number of the row-delete request.

`table_id`requiredinteger \<int64\>

The numeric ID of the target table.

`table_name`requiredstring

The name of the target table.

`table_name_stale`requiredboolean

Whether the table name no longer matches the current catalog state for the stored table ID.

Example request body

```json
{
  "abort_reason": "Predicate was too broad",
  "aborted_at": 1717000100,
  "created_at": 1717000000,
  "db_id": 1,
  "db_name": "sensors",
  "db_name_stale": false,
  "delete_predicate": "room = 'kitchen'",
  "disposition": "aborted",
  "sequence": 42,
  "table_id": 3,
  "table_name": "home",
  "table_name_stale": false
}
```

400

Request failed. Possible reasons:

* Invalid database name
* Malformed request body
* Invalid timestamp precision

`data`object

`error`string

401Unauthorized access.

`data`object

`error`string

403Access denied.

`data`object

`error`string

404Not found. No row-delete request exists with the specified sequence number.

`data`object

`error`string

GET`/api/v3/users`

### 

Example request[Ask AI about this](#)

```sh
curl --request GET \
  "https://localhost:8181/api/v3/users" \
  --header "Authorization: Bearer INFLUX_TOKEN"
```

#### Responses

200Success

POST`/api/v3/users`

### 

#### Request bodyrequired

Content-Type:`application/json`

Example request[Ask AI about this](#)

```sh
curl --request POST \
  "https://localhost:8181/api/v3/users" \
  --header "Authorization: Bearer INFLUX_TOKEN" \
  --header "Content-Type: application/json"
```

#### Responses

200Success

GET`/api/v3/users_by_oauth_id/{oauth_id}`

### Get a user by OAuth identity-provider ID

Returns the user associated with the specified OAuth identity-provider ID. Requires the server to be configured with an OAuth validator.

Requires a token or user with permission to read users.

This endpoint is only available in InfluxDB 3 Enterprise. User authentication is a preview feature enabled by setting `--without-user-auth false`.

#### Parameters

##### Path parameters

`oauth_id`requiredstring

The OAuth identity-provider ID of the user.

Example request[Ask AI about this](#)

```sh
curl --request GET \
  "https://localhost:8181/api/v3/users_by_oauth_id/{oauth_id}" \
  --header "Authorization: Bearer INFLUX_TOKEN"
```

#### Responses

200Success. Returns the matching user.

`createdAt`requiredinteger \<int64\>

The Unix timestamp (seconds) when the user was created.

`deletedAt`integer \<int64\>

The Unix timestamp (seconds) when the user was deleted. Present only for deleted users.

`displayName`string

The user’s display name.

`oauthId`string

The user’s OAuth identity-provider ID. Present when the user has an OAuth login identity.

`operatorToken`string

The operator token. Returned only when creating the initial user.

`requiresPasswordReset`boolean

Whether the user must reset their password on next login. Present when the user has a username and password login identity.

`updatedAt`requiredinteger \<int64\>

The Unix timestamp (seconds) when the user was last updated.

`userId`requiredinteger \<int64\>

The numeric ID of the user.

`username`string

The user’s username. Present when the user has a username and password login identity.

Example request body

```json
{
  "createdAt": 1717000000,
  "displayName": "Jane Smith",
  "requiresPasswordReset": false,
  "updatedAt": 1717000000,
  "userId": 1,
  "username": "jsmith"
}
```

401Unauthorized access.

`data`object

`error`string

403Access denied.

`data`object

`error`string

404Not found. No user matches the specified OAuth ID, or OAuth is not configured on the server.

`data`object

`error`string

GET`/api/v3/users/{id}`

### 

Example request[Ask AI about this](#)

```sh
curl --request GET \
  "https://localhost:8181/api/v3/users/{id}" \
  --header "Authorization: Bearer INFLUX_TOKEN"
```

#### Responses

200Success

POST`/api/v3/users/{id}/require-password-reset`

### Require a user to reset their password on next login

Marks the specified user as requiring a password reset. The user must set a new password before they are able to authenticate and receive a token.

Requires a token or user with permission to update users.

This endpoint is only available in InfluxDB 3 Enterprise. User authentication is a preview feature enabled by setting `--without-user-auth false`.

#### Parameters

##### Path parameters

`id`requiredinteger \<int64\>

The numeric ID of the user.

Example request[Ask AI about this](#)

```sh
curl --request POST \
  "https://localhost:8181/api/v3/users/{id}/require-password-reset" \
  --header "Authorization: Bearer INFLUX_TOKEN"
```

#### Responses

200Success. Returns the user with `requiresPasswordReset` set to `true`.

`createdAt`requiredinteger \<int64\>

The Unix timestamp (seconds) when the user was created.

`deletedAt`integer \<int64\>

The Unix timestamp (seconds) when the user was deleted. Present only for deleted users.

`displayName`string

The user’s display name.

`oauthId`string

The user’s OAuth identity-provider ID. Present when the user has an OAuth login identity.

`operatorToken`string

The operator token. Returned only when creating the initial user.

`requiresPasswordReset`boolean

Whether the user must reset their password on next login. Present when the user has a username and password login identity.

`updatedAt`requiredinteger \<int64\>

The Unix timestamp (seconds) when the user was last updated.

`userId`requiredinteger \<int64\>

The numeric ID of the user.

`username`string

The user’s username. Present when the user has a username and password login identity.

Example request body

```json
{
  "createdAt": 1717000000,
  "displayName": "Jane Smith",
  "requiresPasswordReset": false,
  "updatedAt": 1717000000,
  "userId": 1,
  "username": "jsmith"
}
```

401Unauthorized access.

`data`object

`error`string

403Access denied.

`data`object

`error`string

404Not found. No user exists with the specified ID.

`data`object

`error`string

GET`/api/v3/users/{id}/roles`

### List all roles assigned to a user

Lists all roles assigned to the specified user.

Requires a token or user with permission to read users.

This endpoint is only available in InfluxDB 3 Enterprise. User authentication is a preview feature enabled by setting `--without-user-auth false`.

#### Parameters

##### Path parameters

`id`requiredinteger \<int64\>

The numeric ID of the user.

Example request[Ask AI about this](#)

```sh
curl --request GET \
  "https://localhost:8181/api/v3/users/{id}/roles" \
  --header "Authorization: Bearer INFLUX_TOKEN"
```

#### Responses

200Success. Returns the list of roles assigned to the user.

`items`requiredobject[]

The roles assigned to the user.

401Unauthorized access.

`data`object

`error`string

403Access denied.

`data`object

`error`string

404Not found. No user exists with the specified ID.

`data`object

`error`string

PUT`/api/v3/users/{id}/roles`

### Replace all roles assigned to a user

Replaces all role assignments for the specified user with the provided list of role IDs. Roles not included in the request are removed from the user.

Requires a token or user with permission to update users.

This endpoint is only available in InfluxDB 3 Enterprise. User authentication is a preview feature enabled by setting `--without-user-auth false`.

#### Parameters

##### Path parameters

`id`requiredinteger \<int64\>

The numeric ID of the user.

#### Request bodyrequired

Content-Type:`application/json`

`roleIds`requiredinteger[]

The complete set of role IDs to assign to the user.

Example request body

```json
{
  "roleIds": [
    1,
    2
  ]
}
```

Example request[Ask AI about this](#)

```sh
curl --request PUT \
  "https://localhost:8181/api/v3/users/{id}/roles" \
  --header "Authorization: Bearer INFLUX_TOKEN" \
  --header "Content-Type: application/json" \
  --data-raw '{"roleIds":[1,2]}'
```

#### Responses

200Success. Returns the user’s updated role assignments.

`items`requiredobject[]

The roles assigned to the user.

400

Request failed. Possible reasons:

* Invalid database name
* Malformed request body
* Invalid timestamp precision

`data`object

`error`string

401Unauthorized access.

`data`object

`error`string

403Access denied.

`data`object

`error`string

404Not found. No user exists with the specified ID.

`data`object

`error`string

GET`/ready`

### 

Example request[Ask AI about this](#)

```sh
curl --request GET \
  "https://localhost:8181/ready" \
  --header "Authorization: Bearer INFLUX_TOKEN"
```

#### Responses

200Success

#### Related

* [InfluxDB 3 API client libraries](/influxdb3/enterprise/reference/client-libraries/v3/)
