---
title: Create a task
description: Create a data processing task in InfluxDB using the InfluxDB UI or the influx CLI.
url: https://docs.influxdata.com/influxdb/v2/process-data/manage-tasks/create-task/
estimated_tokens: 2838
product: InfluxDB OSS v2
version: v2
---

# Create a task

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

Create tasks with the InfluxDB user interface (UI), `influx` command line interface (CLI), or `/api/v2` API.

*Before creating a task, review the [basics for writing a task](/influxdb/v2/process-data/get-started).*

-   [InfluxDB UI](#create-a-task-in-the-influxdb-ui)
-   [`influx` CLI](#create-a-task-using-the-influx-cli)
-   [InfluxDB API](#create-a-task-using-the-influxdb-api)

## Create a task in the InfluxDB UI

The InfluxDB UI provides multiple ways to create a task:

-   [Create a task from the Data Explorer](#create-a-task-from-the-data-explorer)
-   [Create a task in the Task UI](#create-a-task-in-the-task-ui)
-   [Import a task](#import-a-task)
-   [Create a task from a template](#create-a-task-from-a-template)
-   [Clone a task](#clone-a-task)

### Create a task from the Data Explorer

1. In the navigation menu on the left, select **Data Explorer**.
    
    Data Explorer
    
2. Build a query and click **Save As** in the upper right.
    
3. Select the **Task** heading.
    
4. Specify the task options. See [Task options](/influxdb/v2/process-data/task-options) for detailed information about each option.
    
5. Click **Save as Task**.
    

### Create a task in the Task UI

1. In the navigation menu on the left, select **Tasks**.
    
    Tasks
    
2. Click **Create Task** in the upper right.
    
3. In the left panel, specify the task options. See [Task options](/influxdb/v2/process-data/task-options) for detailed information about each option.
    
4. In the right panel, enter your task script.
    
    ##### Leave out the option tasks assignment
    
    When creating a *new* task in the InfluxDB Task UI, leave the code editor empty. When you save the task, the Task UI uses the [task options](/influxdb/v2/process-data/task-options/) you specify in the **Task options** form to populate `option task = {task_options}` for you.
    
    When you edit the saved task, you’ll see the injected `option task = {task_options}`.
    
5. Click **Save** in the upper right.
    

### Import a task

1. In the navigation menu on the left, select **Tasks**.
    
    Tasks
    
2. Click **Create Task** in the upper right.
    
3. In the left panel, specify the task options. See [Task options](/influxdb/v2/process-data/task-options) for detailed information about each option.
    
4. Paste a raw Flux task in the code editor to the right of the task options fields.
    
5. Click **Save** in the upper right.
    

### Create a task from a template

1. In the navigation menu on the left, select **Settings** > **Templates**.
    
    Settings
    
2. Find the template you want to use and click its **Resources** list to expand the list of resources.
    
3. In the **Resources** list, click the task you want to use.
    

### Clone a task

1. In the navigation menu on the left, select **Tasks**.
    
    Tasks
    
2. Find the task you would like to clone and click the icon located far right of the task name.
    
3. Click **Clone**.
    

## Create a task using the influx CLI

Use the `influx task create` command to create a new task. It accepts either a file path or raw Flux.

### Create a task using a file

```sh
# Syntax
influx task create --org <org-name>  -f </path/to/task-script>

# Example
influx task create --org my-org -f /tasks/cq-mean-1h.flux
```

### Create a task using raw Flux

```sh
influx task create --org my-org - # <return> to open stdin pipe

option task = {
  name: "task-name",
  every: 6h
}

# ... Task script ...

# Linux & macOS: <ctrl-d> to close the pipe and submit the command
# Windows: <enter>, then <ctrl-d>, then <enter> to close the pipe and submit the command
```

## Create a task using the InfluxDB API

Use the [`/api/v2/tasks` InfluxDB API endpoint](/influxdb/v2/api/tasks/) to create a task.

[POST http://localhost:8086/api/v2/tasks/](/influxdb/v2/api/tasks/)

Provide the following in your API request:

##### Request headers

-   **Content-Type**: application/json
-   **Authorization**: Token *`INFLUX_API_TOKEN`*

##### Request body

JSON object with the following fields:

-   **flux**: raw Flux task string that contains a [`task` option](/flux/v0/spec/options/) and a query.
-   **orgID**: your [InfluxDB organization ID](/influxdb/v2/admin/organizations/view-orgs/#view-your-organization-id)
-   **status**: task status (“active” or “inactive”)
-   **description**: task description

```sh
curl --request POST 'http://localhost:8086/api/v2/tasks' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Token INFLUX_API_TOKEN' \
  --data-raw '{
    "flux": "option task = {name: \"CPU Total 1 Hour New\", every: 1h}\n\nfrom(bucket: \"telegraf\")\n\t|> range(start: -1h)\n\t|> filter(fn: (r) =>\n\t\t(r._measurement == \"cpu\"))\n\t|> filter(fn: (r) =>\n\t\t(r._field == \"usage_system\"))\n\t|> filter(fn: (r) =>\n\t\t(r.cpu == \"cpu-total\"))\n\t|> aggregateWindow(every: 1h, fn: max)\n\t|> to(bucket: \"cpu_usage_user_total_1h\", org: \"INFLUX_ORG\")",
    "orgID": "INFLUX_ORG_ID",
    "status": "active",
    "description": "This task downsamples CPU data every hour"
}'
```

#### Related

-   [influx task create](/influxdb/v2/reference/cli/influx/task/create/)
