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

# Request input

> Pass request bodies, parameters, and files to Deel CLI commands

Operations receive input in three places: path and query parameters as flags, the request body through `--input`, and file uploads through `--file`. The action-level `--help` lists which of these an operation uses.

## Parameters as flags

Each path or query parameter becomes a flag named after the parameter. Path parameters are always required.

```bash
deel jobs status --job_id 7f3c...           # path parameter
deel jobs list --limit 20 --cursor eyJ...    # query parameters
```

Array-typed query parameters are repeatable. Pass the flag once per value; the CLI sends them as repeated query keys.

```bash
deel <command> --ids a1 --ids b2            # -> ?ids=a1&ids=b2
```

## Request bodies with `--input`

`--input` accepts one value in four interchangeable forms. The CLI detects the form from the value.

| Form        | Detection                                       | Example                                   |
| ----------- | ----------------------------------------------- | ----------------------------------------- |
| Shorthand   | Contains `=` and does not start with `{` or `[` | `--input type=BONUS,amount=500`           |
| Inline JSON | Starts with `{` or `[`                          | `--input '{"type":"BONUS","amount":500}'` |
| File        | Starts with `file://`                           | `--input file://body.json`                |
| stdin       | Exactly `-`                                     | `cat body.json \| deel ... --input -`     |

#### Shorthand

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

#### Inline JSON

```bash
deel adjustments create --invoice \
  --input '{"type":"BONUS","amount":500,"contract_id":"C123","description":"Q3 bonus","date_submitted":"2026-09-01"}'
```

#### File

```bash
deel adjustments create --invoice --input file://adjustment.json
```

#### stdin

```bash
jq -n '{type:"BONUS",amount:500,contract_id:"C123",description:"Q3 bonus",date_submitted:"2026-09-01"}' \
  | deel adjustments create --invoice --input -
```

### The `data` wrapper

Many Deel operations wrap the request body in a top-level `data` object. The CLI adds the wrapper automatically, so `--input` takes the inner fields directly. If the value you pass already has a single `data` key, it is sent unchanged.

## Shorthand grammar

Shorthand is a compact form for building JSON objects on the command line. It uses the same `key=value` grammar as other cloud CLIs.

| Syntax                      | Result                                       |
| --------------------------- | -------------------------------------------- |
| `key=value`                 | A scalar property                            |
| `a=1,b=2`                   | Several properties, separated by commas      |
| `meta={source=api,ref=123}` | A nested object                              |
| `ids=[a,b,c]`               | A list                                       |
| `tags=approved urgent`      | A list from space-separated scalars          |
| `note=a\,b`                 | Escape `,`, `=`, or a space with a backslash |

```bash
--input 'tags=approved urgent,meta={source=api,ref=123},amount=500'
# -> {"tags":["approved","urgent"],"meta":{"source":"api","ref":123},"amount":500}
```

### Type coercion and validation

Shorthand values are strings on the command line. Before sending the request, the CLI coerces each top-level field to the type the command declares and validates enumerations:

* Fields typed `number` or `integer` are converted; a non-numeric value exits with `input.type`.
* Fields typed `boolean` accept `true`, `false`, and `1`.
* Fields with an enumeration must match one of the allowed values; anything else exits with `input.enum` and lists the allowed values.

The same coercion applies to inline JSON, so `"amount": "500"` is accepted and sent as a number. Nested values inside shorthand objects and lists are coerced heuristically (`true`, `false`, and numeric strings become booleans and numbers).

## Array bodies

Bulk operations take a JSON array. Pass it as inline JSON, a file, or stdin; shorthand cannot express a top-level array.

```bash
deel adjustments create-bulk --invoice --input file://adjustments.json
```

**`adjustments.json`**

```json title="adjustments.json"
[
  {
    "external_id": "bonus-2026-09-alice",
    "request": {
      "type": "BONUS",
      "amount": 500,
      "contract_id": "C123",
      "description": "Q3 bonus",
      "date_submitted": "2026-09-01"
    }
  }
]
```

Commands with a batch size limit check it before sending and exit with `usage.max_items` when the array is too long. The bulk adjustment commands accept at most 50 items per request.

## File uploads with `--file`

Operations that accept `multipart/form-data` take files through `--file field=@path`. Text fields still go through `--input`.

```bash
deel <command> --input first_name=Ada,last_name=Lovelace --file cv=@/path/to/cv.pdf
```

`--file` is repeatable, both across fields and within one field. Passing `--file cv=@a.pdf --file cv=@b.pdf` attaches both files under `cv`. The content type is inferred from the file extension.

Some commands accept both JSON and multipart. They default to JSON; add `--form` to send multipart instead. The action-level `--help` marks these commands with an "also accepts multipart" section.

## Next steps

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

Read the response envelope and filter it with --fields, --jq, and --quiet

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

Use --help --json and --generate-input to discover a body before writing it