> This page is for CLI.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developer.deel.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer.deel.com/_mcp/server.

# Quickstart

> Install the Deel CLI, store a token, and make your first call in the demo environment

This guide installs the CLI, stores a token, and makes a first call against the demo environment. The same steps apply whether you run the commands yourself or hand them to a coding agent.

## Prerequisites

* A Deel account with access to the [Developer Center](https://app.deel.com/settings/developer)
* For the demo environment, a [sandbox account](/api/sandbox); tokens are specific to the environment they were created in

## Get started

Complete these steps to install the CLI, authenticate, and make your first call in the demo environment.

#### Install the CLI

Follow [Installation](/cli/installation) for the method that fits your platform, then confirm it worked:

```bash
deel --version
```

#### Create a personal access token

Create a personal access token on the Developer Center [Access tokens page](https://app.deel.com/settings/developer/tokens) with the scopes the commands you plan to run require. For this guide, create it in your [sandbox](/api/sandbox) organization so that it works with the demo environment. Token types and scopes are described in [Generating an API token](/api/authentication#generating-an-api-token).

Copy the token once; it is not displayed again.

#### Store the token

```bash
deel auth login --env demo
```

The command prompts for the token with hidden input, validates it against the API, and stores it in the OS keychain for the `demo` environment. Nothing is stored if validation fails.

**`Output`**

```json title="Output"
{
  "data": {
    "stored": true,
    "env": "demo",
    "token": "****a1b2",
    "identity": {
      "id": 482915,
      "email": "jane.doe@example.com",
      "full_name": "Jane Doe",
      "profile_type": "client",
      "organization_id": 91043,
      "organization_name": "Acme Corporation"
    }
  }
}
```

> **Note**
>
> On platforms without a keychain, or in CI, export the token instead: `export DEEL_TOKEN="$DEEL_PAT"`. Also run `export DEEL_ENV=demo` (or pass `--env demo` on every command) while testing against the sandbox; exporting the token alone does not select an environment. See [Authentication](/cli/authentication) for the full precedence order.

#### Verify the token

```bash
deel auth status --env demo --fields valid,source
```

**`Output`**

```json title="Output"
{
  "data": {
    "valid": true,
    "source": "keychain"
  }
}
```

> **Tip**
>
> Help is available at every level of the command tree, at any point, not just before the next step. The action-level help shows the request body fields, which generic `--help` output cannot express because bodies arrive through `--input` rather than as flags.
>
> ```bash
> deel --help                                        # command groups and global options
> deel adjustments --help                            # actions in the group
> deel adjustments create --help                     # variants of the action
> deel adjustments create --invoice --help           # flags, request body, and response fields
> deel adjustments create --invoice --generate-input # JSON skeleton of the request body
> ```

#### Make your first call

Create an invoice adjustment against a contract in your sandbox. Replace `YOUR_CONTRACT_ID` with a contract id from the sandbox account.

> **Warning**
>
> `create` writes real data in whichever environment it runs against, and there is no dry-run flag. The command below targets `demo`; re-read it before removing `--env demo` or switching to `prod`. See [Security and permissions](/cli/usage/security).

```bash
deel adjustments create --invoice --env demo \
  --input type=BONUS,amount=500,contract_id=YOUR_CONTRACT_ID,description="Q3 bonus",date_submitted=2026-09-01
```

**`Output`**

```json title="Output"
{
  "data": {
    "adjustment_id": "adj_01H8X4M2",
    "status": "pending",
    "is_created": true,
    "created_at": "2026-09-01T10:15:00.000Z"
  },
  "meta": {
    "request_id": "8b1c1a2e-3f96-4d05-a172-9e6b8c4d0f13"
  }
}
```

The same body can be passed as inline JSON, a file (`--input file://body.json`), or stdin (`--input -`). See [Request input](/cli/usage/request-input).

#### Filter the output

Project fields with `--fields`, transform with the embedded `--jq`, or print only identifiers with `--quiet`.

```bash
deel jobs list --env demo --fields job_id,status
deel jobs list --env demo --jq '.[] | select(.status == "SUCCEEDED") | .job_id' --raw
deel jobs list --env demo --quiet
```

> **Tip**
>
> Every command above behaves identically when a coding agent runs it. See [Set up a coding agent](/cli/agents/setup) for the instruction block that gets an agent using the CLI in the demo environment.

## Next steps

#### [Set up a coding agent](/cli/agents/setup)

Install the CLI where your agent runs and add an instruction block

#### [Command structure](/cli/usage/command-structure)

Groups, actions, variants, and the three levels of help

#### [Request input](/cli/usage/request-input)

The four input forms and the shorthand grammar

#### [Output and filtering](/cli/usage/output)

The JSON envelope, field projection, and jq transforms

#### [Environments and configuration](/cli/usage/environments)

How --env, DEEL\_ENV, and per-environment tokens are resolved