# First commands (quickstart)

> Five-command quickstart for UiPath CLI covering install, login, listing jobs, starting a process, and verifying the result.

This quickstart walks through five commands that take you from a fresh install to a job running in Orchestrator. Allow five minutes.

## Before you begin

- Install UiPath CLI. See [Installing UiPath CLI](./installing-uipath-cli.md).
- Have a UiPath Automation Cloud or Automation Suite account with access to at least one tenant.
- Know the name (or path) of a folder in Orchestrator that contains at least one process. The default folder `Shared` works for most trials.

Open a terminal. All commands below are typed there.

## Step 1. Sign in

Start the interactive login:

```bash
uip login
```

`uip` opens your default browser, prompts you to sign in to UiPath, and after you authenticate, asks you to pick a tenant. When the browser tab reports success, return to the terminal — the session is active. The session is persisted inside `~/.uipath/` (or a project-local `.uipath/` folder if one exists in the current folder or an ancestor).

:::tip
If you already know the tenant and want to skip the picker, run `uip login --tenant DefaultTenant`. If you are in a CI environment, see [Authentication](./authentication.md) for the non-interactive flows.
:::

## Step 2. Confirm the session

```bash
uip login status --output table
```

Expected output:

```
Status         Organization   Tenant          Expiration Date
Logged in      my-org         DefaultTenant   2026-04-24T18:42:00Z
```

:::note
Every `uip` command emits **JSON by default**. Pass `--output table` for the reading-friendly view. See [Global options](./global-options.md) for the four output formats (`table`, `json`, `yaml`, `plain`) and the JMESPath `--output-filter` flag.
:::

If the command reports `Not logged in`, re-run `uip login`.

## Step 3. List folders

Your first real query hits Orchestrator:

```bash
uip or folders list
```

This returns the first 50 folders in the tenant. The output includes each folder's `Key` (GUID), `Name`, `Path`, and `Type`.

To filter or look deeper, pass `--all` to unlock filters:

```bash
uip or folders list --all --name Shared
uip or folders list --all --top-level
```

:::note
`--all` is required before the filter flags (`--name`, `--path`, `--type`, `--top-level`, `--order-by`) have any effect. This is a deliberate safety net — a typo in a filter on a large tenant would otherwise silently return the unfiltered first page.
:::

## Step 4. Find a process to run

Pick a folder from Step 3 — `Shared` is used here as an example — and list its processes:

```bash
uip or processes list --folder-path Shared
```

The output shows each process's `Key` (GUID), `Name`, `Version`, and `Type`. Copy the `Key` of a process you want to run. Replace `<process-key>` in the next step with that GUID.

## Step 5. Start a job

```bash
uip or jobs start <process-key>
```

`uip` returns immediately after Orchestrator accepts the request. The response shows the new job's `Key`, `State` (usually `Pending` at first), and the resolved `ProcessName`.

To block until the job finishes and see its output, add `--wait-for-completion`:

```bash
uip or jobs start <process-key> --wait-for-completion --timeout 600
```

With `--wait-for-completion`, the command polls every five seconds (by default) and exits when the job reaches a terminal state (`Successful`, `Faulted`, `Stopped`). The exit code is non-zero on `Faulted`. `--timeout` is in seconds and defaults to 300.

Pass input arguments with `--input-arguments` (JSON string) or `--input-file` (path to a JSON file):

```bash
uip or jobs start <process-key> \
  --input-arguments '{"invoiceNumber":"INV-001","customer":"Contoso"}'
```

## What you just did

In five commands you authenticated, queried two Orchestrator resources, and started a job. Every `uip` command follows the same shape — `uip <tool> <resource> <verb>` for tools with multiple resources, or `uip <tool> <verb>` for single-workflow tools — and every one supports the same global flags for output format, filtering, and logging. See [Global options](./global-options.md).

## Next steps

- **[Your first pipeline](./first-pipeline.md)** — pack a Solution locally, publish it to your tenant, and deploy it to Orchestrator.
- **[Authentication](./authentication.md)** — interactive login in detail, External App client credentials for CI, and the environment-variable flow for containers.
- **[Output formats](./output-formats.md)** — switch between `table`, `json`, `yaml`, and `plain`, and use JMESPath filtering with `--output-filter`.
- **[Orchestrator command reference](./uip-orchestrator.md)** — every command, every flag.
- **[Using UiPath CLI with Coding Agents](./coding-agents.md)** — let Claude Code, Cursor, GitHub Copilot, and other agents build UiPath automations with `uip`.
