> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://uploadcare.com/docs/llms.txt.

# Project commands

> Complete reference for Uploadcare CLI project commands — manage projects, API secrets, and usage metrics.

These commands manage Uploadcare projects, their API secrets, and usage metrics.

Most project commands require a **Project API token** (account-level bearer token) for
authentication. The `project info` command without arguments uses REST API authentication instead.

> **Info**
>
> Project API tokens are not yet available in the dashboard. To get one,
> contact support at [help@uploadcare.com](mailto:help@uploadcare.com).

Where a `<project>` argument is required, pass either a **project name** from your config file
or a **public key** directly.

See [Projects](/docs/start/settings/) for details on project settings in the dashboard.

> **Tip**
>
> **Tip:** Global flags like `--json`, `--jq`, `-v`, and `--quiet` are available on every command.
> See [Configuration](/docs/cli/configuration/#global-flags) for the full list.

## project info

Get project details. Without arguments, uses the current project's REST API credentials.
With a project argument, uses the Project API.

```bash
uploadcare project info [project]
```

**JSON fields (REST API):** `name`, `pub_key`, `collaborators`, `autostore_enabled`

**JSON fields (Project API):** `pub_key`, `name`, `is_blocked`, `is_shared_project`, `filesize_limit`, `autostore_enabled`

**Examples:**

```bash
# Current project (REST API)
uploadcare project info

# Specific project (Project API)
uploadcare project info abc123 --project-api-token <token>
uploadcare project info "My App" --project-api-token <token>
```

---

## project list

List all projects accessible with your Project API token.

```bash
uploadcare project list [flags]
```

**Flags:**

| Flag         | Default | Description                      |
| ------------ | ------- | -------------------------------- |
| `--page-all` | `false` | Fetch all pages as NDJSON stream |

**JSON fields:** `pub_key`, `name`, `is_blocked`, `is_shared_project`, `filesize_limit`, `autostore_enabled`

**Examples:**

```bash
uploadcare project list --project-api-token <token>
uploadcare project list --json all --project-api-token <token>
uploadcare project list --page-all --json all --project-api-token <token>
```

---

## project create

Create a new project.

```bash
uploadcare project create <name> [flags]
```

**Flags:**

| Flag               | Default | Description                                   |
| ------------------ | ------- | --------------------------------------------- |
| `--no-save`        | `false` | Don't save project credentials to config file |
| `--use`            | `false` | Set as the default project in config          |
| `--filesize-limit` | `0`     | Max file size in bytes (0 = unlimited)        |
| `--autostore`      |         | Auto-store uploads (`true` or `false`)        |
| `--dry-run`        | `false` | Validate inputs without creating              |

**Examples:**

```bash
uploadcare project create "My App" --project-api-token <token>
uploadcare project create "My App" --use --project-api-token <token>
uploadcare project create "My App" --no-save --project-api-token <token>
uploadcare project create "My App" --dry-run --project-api-token <token>
```

---

## project update

Update project settings.

```bash
uploadcare project update <project> [flags]
```

**Flags:**

| Flag               | Default | Description                             |
| ------------------ | ------- | --------------------------------------- |
| `--name`           |         | New project name                        |
| `--filesize-limit` | `0`     | Max file size in bytes                  |
| `--autostore`      |         | Auto-store uploads (`true` or `false`)  |
| `--dry-run`        | `false` | Show what would change without applying |

**JSON fields:** `pub_key`, `name`, `is_blocked`, `filesize_limit`, `autostore_enabled`

**Examples:**

```bash
uploadcare project update "My App" --name "Production" --project-api-token <token>
uploadcare project update abc123 --filesize-limit 10485760 --project-api-token <token>
uploadcare project update "My App" --name "New Name" --dry-run --project-api-token <token>
```

---

## project delete

Delete a project.

```bash
uploadcare project delete <project> [flags]
```

> **Warning**
>
> **Warning:** Project deletion is permanent and removes all files and settings associated with the project.

**Flags:**

| Flag        | Default | Description             |
| ----------- | ------- | ----------------------- |
| `--dry-run` | `false` | Verify without deleting |

**Examples:**

```bash
uploadcare project delete abc123 --project-api-token <token>
uploadcare project delete "My App" --project-api-token <token>
uploadcare project delete "My App" --dry-run --project-api-token <token>
```

---

## project use

Switch the active project in your config file.

```bash
uploadcare project use <project> [flags]
```

**Flags:**

| Flag              | Default | Description                              |
| ----------------- | ------- | ---------------------------------------- |
| `--secret-key`    |         | Use an existing secret key               |
| `--create-secret` | `false` | Create a new API secret for this project |
| `--use`           | `false` | Set as the default project in config     |

**Examples:**

```bash
uploadcare project use abc123 --secret-key "my-secret" --use --project-api-token <token>
uploadcare project use abc123 --create-secret --project-api-token <token>
uploadcare project use "Staging" --create-secret --use --project-api-token <token>
```

---

## project secret list

List API secrets for a project.

```bash
uploadcare project secret list <project>
```

**Examples:**

```bash
uploadcare project secret list abc123 --project-api-token <token>
uploadcare project secret list abc123 --json all --project-api-token <token>
```

---

## project secret create

Create a new API secret for a project.

```bash
uploadcare project secret create <project>
```

**Examples:**

```bash
uploadcare project secret create abc123 --project-api-token <token>
uploadcare project secret create abc123 --json all --project-api-token <token>
```

---

## project secret delete

Delete an API secret.

```bash
uploadcare project secret delete <project> <secret-id>
```

**Examples:**

```bash
uploadcare project secret delete abc123 secret-id-here --project-api-token <token>
```

---

## project usage

Get usage metrics for a project over a date range.

```bash
uploadcare project usage <project> [flags]
```

**Flags:**

| Flag       | Default | Description                                          |
| ---------- | ------- | ---------------------------------------------------- |
| `--from`   |         | Start date, YYYY-MM-DD (required)                    |
| `--to`     |         | End date, YYYY-MM-DD (required)                      |
| `--metric` |         | Single metric: `traffic`, `storage`, or `operations` |

**Examples:**

```bash
uploadcare project usage abc123 --from 2026-02-01 --to 2026-03-01 --project-api-token <token>
uploadcare project usage "My App" --from 2026-02-01 --to 2026-03-01 --metric traffic --project-api-token <token>
uploadcare project usage abc123 --from 2026-02-01 --to 2026-03-01 --json all --project-api-token <token>
```