> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://developer.deel.com/cli/quickstart/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 > Build apps and integrations that extend and enhance the Deel services.