> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getpara.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Command Reference

> Complete reference for all Para CLI commands

export const Link = ({href, label, newTab = false}) => {
  const [isHovered, setIsHovered] = useState(false);
  return <a href={href} target={newTab ? '_blank' : '_self'} rel={newTab ? 'noopener noreferrer' : undefined} className="not-prose inline-block relative text-black font-semibold cursor-pointer border-b-0 no-underline" onMouseEnter={() => setIsHovered(true)} onMouseLeave={() => setIsHovered(false)}>
      {label}
      <span className={`absolute left-0 bottom-0 w-full rounded-sm bg-gradient-to-r from-orange-600 to-purple-600 transition-all duration-300 ${isHovered ? 'h-0.5' : 'h-px'}`} />
    </a>;
};

## Global Options

These options work with all commands:

| Flag                      | Description                                         |
| ------------------------- | --------------------------------------------------- |
| `-e, --environment <env>` | Key environment: `beta` or `prod` (default: `beta`) |
| `--json`                  | Output JSON when the command supports it            |
| `--org <id>`              | Override the active organization                    |
| `--project <id>`          | Override the active project                         |
| `-q, --quiet`             | Suppress non-essential output                       |

Use `para commands --json` to print the agent-readable command catalog. It includes command paths, arguments, options, examples, interactivity, JSON support, and side effects.

## Authentication

The full command paths are `para auth login`, `para auth logout`, and `para auth status`. `para login` and `para logout` are top-level shortcuts.

### `para login`

Authenticate with your Para developer account. Opens your browser for a secure OAuth flow with PKCE verification.

```bash theme={null}
para login
```

After login, the CLI automatically selects your first organization and project if none are configured.

Sessions are stored at `~/.config/para/credentials.json`. The session is validated server-side on each CLI invocation.

<Info>Sessions are shared across key environments — logging in once gives you access to both beta and prod keys.</Info>

### `para logout`

Clear stored authentication credentials.

```bash theme={null}
para logout
```

| Flag    | Description               |
| ------- | ------------------------- |
| `--all` | Clear all stored sessions |

The CLI sends a best-effort server-side session invalidation.

### `para auth status`

Check whether your current session is valid. This performs a server-side validation, not just a local check.

```bash theme={null}
para auth status
```

```bash Output theme={null}
  Status:       Authenticated
  Email:        dev@example.com
  Expires:      3/10/2026, 12:00:00 PM
```

With `--json`:

```json theme={null}
{
  "authenticated": true,
  "email": "dev@example.com",
  "userId": "usr_abc123",
  "expiresAt": 1741608000000
}
```

### `para whoami`

Show the current authenticated user and active context — organization, project, and environment.

```bash theme={null}
para whoami
```

```bash Output theme={null}
  Email:            dev@example.com
  User ID:          usr_abc123
  Key Environment:  beta
  Organization:     My Company (admin)
  Project:          proj_def456
  Session Expires:  3/10/2026, 12:00:00 PM
```

Organization shows the name and your role. Project shows the raw project ID. If the organization ID can't be resolved to a name, the raw ID is shown instead.

***

## Configuration

Configuration resolves from multiple sources: CLI flags, environment variables (`PARA_ENVIRONMENT`, `PARA_ORG_ID`, `PARA_PROJECT_ID`), `.pararc`, global config, then defaults. See [Installation](/v3/cli/installation#configuration) for the full resolution chain.

### `para config get`

Read configuration values. Without a key, shows all values from both global and project config with their source.

```bash theme={null}
para config get
```

```bash Output theme={null}
  defaultEnvironment (global):  beta
  environment (.pararc):        beta
  organizationId (.pararc):     org_xyz789
  projectId (.pararc):          proj_def456
```

Read a specific key:

```bash theme={null}
para config get defaultEnvironment
```

Project config (`.pararc`) takes precedence over global config (`~/.config/para/config.json`).

### `para config set`

Set a configuration value.

```bash theme={null}
para config set <key> <value>
```

| Flag      | Description                                                          |
| --------- | -------------------------------------------------------------------- |
| `--local` | Write to `.pararc` in the current directory instead of global config |

#### Valid Keys

| Global Key              | Project `.pararc` Key | Values                    |
| ----------------------- | --------------------- | ------------------------- |
| `defaultEnvironment`    | `environment`         | `beta`, `prod`            |
| `defaultOrganizationId` | `organizationId`      | Any valid organization ID |
| `defaultProjectId`      | `projectId`           | Any valid project ID      |

#### Examples

```bash theme={null}
# Set global default key environment
para config set defaultEnvironment prod

# Set global default org
para config set defaultOrganizationId org_xyz789
```

<Note>`para config set --local` accepts either global key names such as `defaultEnvironment` or project key names such as `environment`, then writes the `.pararc` key form.</Note>

### `para config unset`

Remove a configuration value.

```bash theme={null}
para config unset <key>
```

| Flag      | Description                                    |
| --------- | ---------------------------------------------- |
| `--local` | Remove from `.pararc` instead of global config |

```bash theme={null}
para config unset defaultOrganizationId
para config unset environment --local
```

### `para init`

Create a `.pararc` configuration file in the current directory. This pins the organization, project, and environment for anyone working in this directory.

```bash theme={null}
para init
```

| Flag        | Description                                |
| ----------- | ------------------------------------------ |
| `--force`   | Overwrite an existing `.pararc` file       |
| `-y, --yes` | Skip prompts and use the resolved defaults |

In interactive mode, you'll be prompted to select a key environment (`beta` or `prod`). With `--yes`, the current resolved key environment is used.

The resulting `.pararc` file:

```json theme={null}
{
  "environment": "beta",
  "organizationId": "org_xyz789",
  "projectId": "proj_def456"
}
```

<Warning>The `.pararc` writer rejects keys that contain sensitive terms (`session`, `token`, `secret`, `credential`, `password`, `apikey`, `api_key`) to prevent accidental credential storage in version-controlled files.</Warning>

***

## Organizations

### `para orgs list`

List all organizations you belong to.

```bash theme={null}
para orgs list
```

```bash Output theme={null}
  Name          ID           Plan
  My Company    org_xyz789   growth (active)
  Side Project  org_abc123   free
```

The `(active)` indicator shows which organization is currently selected. With `--json`, returns an array of organization objects.

### `para orgs switch`

Set the active organization. This updates your global config so subsequent commands use this org.

```bash theme={null}
para orgs switch [org-id]
```

Without an `org-id`, an interactive selector is shown:

```bash theme={null}
para orgs switch
```

```bash Output theme={null}
  ◆ Select an organization
  │ ○ My Company (org_xyz789) (current)
  │ ● Side Project (org_abc123)
  └
```

With a specific ID:

```bash theme={null}
para orgs switch org_abc123
```

<Info>After switching organizations, your previous project ID remains in the config but may point to a project in the old org. Run `para projects switch` to select a project in the new organization.</Info>

***

## Projects

All project commands require an active organization. Set one with `para orgs switch` if you haven't already.

### `para projects list`

List projects in your active organization.

```bash theme={null}
para projects list
```

| Flag                 | Description                           |
| -------------------- | ------------------------------------- |
| `--include-archived` | Include archived projects in the list |

```bash Output theme={null}
  Name       ID             Framework
  my-app     proj_def456    nextjs (active)
  backend    proj_ghi789    vite
```

### `para projects switch`

Set the active project.

```bash theme={null}
para projects switch [project-id]
```

Without a `project-id`, an interactive selector shows all active projects in the current organization.

### `para projects create`

Create a new project in the active organization.

```bash theme={null}
para projects create
```

| Flag                       | Description                                        |
| -------------------------- | -------------------------------------------------- |
| `-n, --name <name>`        | Project name                                       |
| `-d, --description <desc>` | Project description                                |
| `--framework <framework>`  | Framework (`nextjs`, `vite`, `react-native`, etc.) |

Without flags, you'll be prompted interactively for a name.

```bash theme={null}
para projects create -n "my-new-app" --framework nextjs
```

### `para projects update`

Update a project's name, description, or framework.

```bash theme={null}
para projects update [project-id]
```

| Flag                       | Description                               |
| -------------------------- | ----------------------------------------- |
| `-n, --name <name>`        | New project name                          |
| `-d, --description <desc>` | New description                           |
| `--framework <framework>`  | Framework (`REACT`, `NEXT`, `VITE`, etc.) |
| `--package-manager <pm>`   | Package manager (`NPM`, `YARN`, `PNPM`)   |

Uses the active project if no `project-id` is given. Without flags, prompts interactively.

### `para projects archive`

Archive a project. Its API keys stop working immediately. This is reversible with `restore`.

```bash theme={null}
para projects archive [project-id]
```

Uses the active project if no `project-id` is given.

| Flag        | Description              |
| ----------- | ------------------------ |
| `-y, --yes` | Skip confirmation prompt |

<Warning>Archiving a project immediately disables all of its API keys. Active users will lose access.</Warning>

### `para projects restore`

Restore a previously archived project.

```bash theme={null}
para projects restore <project-id>
```

Use `para projects list --include-archived` to find the ID of archived projects.

***

## API Keys

All key commands require an active organization and project. Set them with `para orgs switch` and `para projects switch`.

### `para keys list`

List API keys for the active project.

```bash theme={null}
para keys list
```

| Flag                 | Description           |
| -------------------- | --------------------- |
| `--include-archived` | Include archived keys |

```bash Output theme={null}
  Name       ID           API Key              Env    Status
  prod-key   key_abc123   para_beta_a1b2...    BETA   active
  test-key   key_def456   para_beta_c3d4...    BETA   archived
```

### `para keys get`

Get details of an API key. Without a key ID, the CLI auto-resolves the key from your active project and key environment.

```bash theme={null}
para keys get [key-id]
```

| Flag            | Description                          |
| --------------- | ------------------------------------ |
| `--show-secret` | Show the full secret key (unmasked)  |
| `--copy`        | Copy the public API key to clipboard |
| `--copy-secret` | Copy the secret key to clipboard     |

```bash theme={null}
para keys get                       # Get the beta key (default)
para keys get -e prod               # Get the prod key
para keys get abc-123 --copy        # Copy a specific key
```

### `para keys create`

Create a new API key in the active project.

```bash theme={null}
para keys create
```

| Flag                    | Description                 |
| ----------------------- | --------------------------- |
| `-n, --name <name>`     | Internal key name           |
| `--display-name <name>` | Display name shown to users |

<Warning>The secret key is only shown once at creation time. Save it immediately.</Warning>

### `para keys rotate`

Rotate an API key. The old key stops working immediately. Without a key ID, the CLI auto-resolves the key from your active project and key environment.

```bash theme={null}
para keys rotate [key-id]
```

| Flag        | Description                                     |
| ----------- | ----------------------------------------------- |
| `--secret`  | Rotate the secret key instead of the public key |
| `-y, --yes` | Skip confirmation prompt                        |

```bash theme={null}
para keys rotate                    # Rotate the beta key
para keys rotate -e prod            # Rotate the prod key
para keys rotate --secret           # Rotate the secret key
```

<Danger>Key rotation is irreversible. The old key stops working immediately after rotation.</Danger>

### `para keys archive`

Archive (revoke) an API key. The key stops working immediately. Without a key ID, the CLI auto-resolves the key from your active project and key environment.

```bash theme={null}
para keys archive [key-id]
```

| Flag        | Description              |
| ----------- | ------------------------ |
| `-y, --yes` | Skip confirmation prompt |

```bash theme={null}
para keys archive                   # Archive the beta key
para keys archive -e prod           # Archive the prod key
```

### `para keys config`

Configure settings for an API key. Without a sub-category, opens an interactive menu to browse all categories.

```bash theme={null}
para keys config [key-id]
```

The CLI auto-resolves the key from your active project and key environment (`-e beta` or `-e prod`). If multiple keys exist for the same environment, you'll be prompted to choose one.

#### Show Configuration

View the current configuration for an API key without entering an edit flow. Shows all settings organized by category.

```bash theme={null}
para keys config show [category] [key-id]
```

| Argument     | Description                                                                                                                   |
| ------------ | ----------------------------------------------------------------------------------------------------------------------------- |
| `[category]` | Filter by category: `security`, `branding`, `auth`, `modal`, `external-wallets`, `links`, `app`, `setup`, `ramps`, `webhooks` |
| `[key-id]`   | API key ID (resolved from project + environment if omitted)                                                                   |

```bash theme={null}
para keys config show                     # Show all configuration
para keys config show security            # Show security settings only
para keys config show ramps               # Show ramp settings only
para keys config show --json              # Full config as JSON (for scripting)
para keys config show security --json     # Single category as JSON
```

```bash Example output theme={null}
Para (beta)

Security
  Auth Methods    PASSKEY, PASSWORD
  Origins         https://myapp.com
  Session Length  1440 minutes (1 day)
  Tx Popups       enabled
  IP Allowlist    (none — all IPs allowed)

Branding
  Foreground        #333333
  Background        #ffffff
  Accent            (default)
  Font              Helvetica
  ...
```

<Tip>Use `para keys config show --json` to pipe configuration into other tools or audit scripts. The JSON output uses raw values (arrays, booleans, `null`) rather than display strings.</Tip>

#### Security

Configure auth methods, origins, session length, and IP restrictions.

```bash theme={null}
para keys config security [key-id]
```

| Flag                         | Description                                                                                                         |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| `--origins <urls>`           | Comma-separated allowed origins (empty string to clear)                                                             |
| `--auth-methods <methods>`   | Auth methods: `PASSKEY`, `PASSWORD`, `PIN` (comma-separated). `PASSWORD` and `PIN` cannot be enabled simultaneously |
| `--session-length <minutes>` | Session length in minutes (5–43200)                                                                                 |
| `--transaction-popups`       | Enable transaction popups                                                                                           |
| `--no-transaction-popups`    | Disable transaction popups                                                                                          |
| `--ip-allowlist <cidrs>`     | Comma-separated CIDR blocks (empty string to clear)                                                                 |

```bash theme={null}
para keys config security --origins "https://myapp.com,https://staging.myapp.com" --auth-methods "PASSKEY,PASSWORD"
```

#### Branding

Configure colors, fonts, social links, and email settings.

```bash theme={null}
para keys config branding [key-id]
```

| Flag                                           | Description                                                                                                      |
| ---------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| `--foreground-color <hex>`                     | Foreground color (`#RGB` or `#RRGGBB`)                                                                           |
| `--fg-color <hex>`                             | Foreground color (alias)                                                                                         |
| `--background-color <hex>`                     | Background color                                                                                                 |
| `--bg-color <hex>`                             | Background color (alias)                                                                                         |
| `--accent-color <hex>`                         | Accent color                                                                                                     |
| `--font <font>`                                | Font: `Arial`, `Courier New`, `Georgia`, `Helvetica`, `Lucida Sans`, `Tahoma`, `Times New Roman`, `Trebuchet MS` |
| `--mode <mode>`                                | Theme mode: `light` or `dark`                                                                                    |
| `--border-radius <size>`                       | Border radius                                                                                                    |
| `--foreground-mix-ratio <ratio>`               | Foreground mix ratio from `0` to `1`                                                                             |
| `--css-override <key=value>`                   | Repeatable CSS override for supported modal CSS variables                                                        |
| `--homepage-url <url>`                         | Homepage URL (HTTPS)                                                                                             |
| `--twitter-url <url>`                          | Twitter/X profile URL                                                                                            |
| `--linkedin-url <url>`                         | LinkedIn company URL                                                                                             |
| `--github-url <url>`                           | GitHub URL                                                                                                       |
| `--verify-url <url>`                           | Verification email URL (HTTPS)                                                                                   |
| `--email-welcome` / `--no-email-welcome`       | Toggle welcome email                                                                                             |
| `--email-backup-kit` / `--no-email-backup-kit` | Toggle backup kit email                                                                                          |

#### Authentication

Configure login methods, OAuth providers, 2FA, and guest mode.

```bash theme={null}
para keys config auth [key-id]
```

| Flag                                                 | Description                       |
| ---------------------------------------------------- | --------------------------------- |
| `--oauth-methods <list>`                             | Comma-separated OAuth methods     |
| `--disable-email-login` / `--no-disable-email-login` | Disable or enable email login     |
| `--disable-phone-login` / `--no-disable-phone-login` | Disable or enable phone login     |
| `--two-factor-auth` / `--no-two-factor-auth`         | Enable or disable two-factor auth |
| `--guest-mode` / `--no-guest-mode`                   | Enable or disable guest mode      |

```bash theme={null}
para keys config auth --oauth-methods "GOOGLE,APPLE" --two-factor-auth
```

#### Custom OIDC

Configure your own OpenID Connect provider as a login method. See [Set up Custom OIDC](/v3/general/developer-portal-custom-oidc) for the full walkthrough.

```bash theme={null}
para keys config oidc set [key-id]
```

| Flag                     | Description                                                                 |
| ------------------------ | --------------------------------------------------------------------------- |
| `--issuer <url>`         | Provider issuer URL (HTTPS, no query string)                                |
| `--client-id <id>`       | OIDC client ID                                                              |
| `--scopes <list>`        | Space-separated scopes (defaults to `openid email profile`)                 |
| `--auth-method <method>` | Token endpoint auth: `client_secret_post`, `client_secret_basic`, or `none` |
| `--label <text>`         | Sign-in label shown on the login button                                     |

```bash theme={null}
# Configure the provider
para keys config oidc set --issuer https://idp.example.com --client-id my-client --label "Sign in with Acme"

# Store the client secret (prompted; never echoed or written to .pararc)
para keys config oidc set-secret

# Verify Para can reach the provider
para keys config oidc verify

# Show the current config (and whether a secret is set)
para keys config oidc show
```

<Note>Enable Custom OIDC once configured with `para keys config auth --oauth-methods "...,CUSTOM_OIDC"`.</Note>

#### Modal

Configure modal UI behavior for an API key.

```bash theme={null}
para keys config modal [key-id]
```

| Flag                                                           | Description                                  |
| -------------------------------------------------------------- | -------------------------------------------- |
| `--hide-wallets` / `--no-hide-wallets`                         | Hide or show wallet terminology and displays |
| `--auth-layout <list>`                                         | Comma-separated auth layout slots            |
| `--hide-logo` / `--no-hide-logo`                               | Hide or show the partner logo                |
| `--disable-add-funds-prompt` / `--no-disable-add-funds-prompt` | Disable or enable the add-funds prompt       |

```bash theme={null}
para keys config modal --hide-wallets --auth-layout "AUTH:FULL,EXTERNAL:FULL"
```

#### External Wallets

Configure external wallet support for an API key.

```bash theme={null}
para keys config external-wallets [key-id]
```

| Flag                               | Description                           |
| ---------------------------------- | ------------------------------------- |
| `--wallet-connect-project-id <id>` | WalletConnect project ID              |
| `--app-description <text>`         | App description shown to wallet users |
| `--wallets <list>`                 | Comma-separated external wallet IDs   |
| `--mode <mode>`                    | External wallet connection mode       |

```bash theme={null}
para keys config external-wallets --wallets "METAMASK,RAINBOW" --mode para-account
```

#### Links

Configure partner social and support links.

```bash theme={null}
para keys config links [key-id]
```

| Flag                   | Description           |
| ---------------------- | --------------------- |
| `--x-url <url>`        | X/Twitter profile URL |
| `--linkedin-url <url>` | LinkedIn company URL  |
| `--github-url <url>`   | GitHub URL            |
| `--homepage-url <url>` | Homepage URL (HTTPS)  |

```bash theme={null}
para keys config links --homepage-url "https://example.com" --github-url "https://github.com/example"
```

#### App

Configure app-level settings.

```bash theme={null}
para keys config app [key-id]
```

| Flag                                        | Description                       |
| ------------------------------------------- | --------------------------------- |
| `--rpc-url <url>`                           | RPC URL                           |
| `--display-name <name>`                     | Display name                      |
| `--farcaster-mini-app-url <url>`            | Farcaster mini-app URL            |
| `--farcaster-splash-image-url <url>`        | Farcaster splash image URL        |
| `--farcaster-splash-background-color <hex>` | Farcaster splash background color |

```bash theme={null}
para keys config app --display-name "My App" --rpc-url "https://rpc.example.com"
```

#### Setup / Networks

Configure wallet types and native passkey settings.

```bash theme={null}
para keys config setup [key-id]
```

| Flag                           | Description                                                                   |
| ------------------------------ | ----------------------------------------------------------------------------- |
| `--wallet-types <types>`       | Wallet types — prefix with `~` for optional: `"EVM,~SOLANA,~COSMOS,~STELLAR"` |
| `--cosmos-prefix <prefix>`     | Cosmos address prefix                                                         |
| `--team-id <id>`               | Apple Team ID (10 chars)                                                      |
| `--bundle-id <id>`             | Apple bundle identifier                                                       |
| `--android-package <name>`     | Android package name                                                          |
| `--android-fingerprints <fps>` | Comma-separated SHA256 fingerprints                                           |

#### On/Off Ramps

Configure buy, receive, and withdraw settings.

```bash theme={null}
para keys config ramps [key-id]
```

| Flag                                           | Description                                                    |
| ---------------------------------------------- | -------------------------------------------------------------- |
| `--buy-enabled` / `--no-buy-enabled`           | Toggle buy                                                     |
| `--receive-enabled` / `--no-receive-enabled`   | Toggle receive                                                 |
| `--withdraw-enabled` / `--no-withdraw-enabled` | Toggle withdraw                                                |
| `--send-enabled` / `--no-send-enabled`         | Toggle Send                                                    |
| `--providers <list>`                           | Comma-separated ordered providers: `RAMP`, `STRIPE`, `MOONPAY` |
| `--ramp-api-key <key>`                         | Ramp API key                                                   |
| `--default-buy-amount <amount>`                | Default buy amount (0.0001–999999)                             |
| `--default-on-ramp-asset <asset>`              | Default on-ramp asset                                          |
| `--default-on-ramp-network <network>`          | Default on-ramp network                                        |

#### Webhooks

Configure webhook endpoints, events, and signing secrets.

```bash theme={null}
para keys config webhooks [key-id]
```

| Flag                         | Description                                                                                                                                                                                   |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--url <url>`                | Webhook endpoint URL (HTTPS)                                                                                                                                                                  |
| `--events <types>`           | Comma-separated events: `user.created`, `wallet.created`, `transaction.signed`, `send.broadcasted`, `send.confirmed`, `send.failed`, `wallet.pregen_claimed`, `user.external_wallet_verified` |
| `--enabled` / `--no-enabled` | Toggle the webhook                                                                                                                                                                            |
| `--status`                   | Show current webhook configuration                                                                                                                                                            |
| `--test`                     | Send a test webhook                                                                                                                                                                           |
| `--rotate-secret`            | Rotate the webhook signing secret                                                                                                                                                             |
| `--delete`                   | Remove webhook configuration                                                                                                                                                                  |
| `-y, --yes`                  | Skip confirmation for destructive operations                                                                                                                                                  |

```bash theme={null}
para keys config webhooks --url "https://api.myapp.com/webhooks" --events "user.created,wallet.created" --enabled
```

See <Link label="Webhooks" href="/v3/general/webhooks" /> for event type details and signature verification.

***

## Users

### `para users list`

List users for the active project API key. The CLI resolves the API key from the active project and key environment unless you pass `--key`.

```bash theme={null}
para users list
```

| Flag                 | Description                                               |
| -------------------- | --------------------------------------------------------- |
| `--limit <n>`        | Number of users to fetch per page (default: 25, max: 100) |
| `--page <n>`         | Page number to fetch (default: 1)                         |
| `--all`              | Fetch all pages                                           |
| `--method <methods>` | Comma-separated login method filter                       |
| `--key <key-id>`     | API key ID override                                       |

```bash theme={null}
para users list --key abc-123
para users list --method email,google
para users list --json
```

***

## Scaffold a Project

### `para create`

Scaffold a new application with Para SDK pre-configured. The interactive wizard walks you through template, network, auth, and wallet selection.

```bash theme={null}
para create [app-name]
```

| Flag                        | Description                                                                                                                                                                   |
| --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `-t, --template <template>` | Template: `nextjs` or `expo`                                                                                                                                                  |
| `--networks <networks>`     | Comma-separated: `evm`, `solana`, `cosmos`                                                                                                                                    |
| `--email`                   | Enable email authentication                                                                                                                                                   |
| `--phone`                   | Enable phone authentication                                                                                                                                                   |
| `--oauth <providers>`       | Comma-separated: `GOOGLE`, `APPLE`, `TWITTER`, `DISCORD`, `FACEBOOK`, `FARCASTER`                                                                                             |
| `--wallets <wallets>`       | Comma-separated wallets: `METAMASK`, `COINBASE`, `WALLETCONNECT`, `RAINBOW`, `ZERION`, `RABBY`, `PHANTOM`, `BACKPACK`, `SOLFLARE`, `GLOW`, `KEPLR`, `LEAP` (case-insensitive) |
| `--bundle-id <id>`          | Bundle identifier (required for Expo)                                                                                                                                         |
| `--package-manager <pm>`    | Package manager: `npm`, `yarn`, `pnpm`, `bun`                                                                                                                                 |
| `--skip-install`            | Skip dependency installation                                                                                                                                                  |
| `-y, --yes`                 | Accept all defaults (non-interactive)                                                                                                                                         |

#### Interactive Flow

Without flags, `para create` walks you through each step:

1. **App name** — lowercase, numbers, and hyphens only
2. **Template** — Next.js or Expo
3. **Networks** — EVM, Solana, Cosmos (Expo is EVM-only)
4. **Auth methods** — Email, Phone/SMS, OAuth
5. **OAuth providers** — Google, Apple, Twitter, Discord, Facebook, Farcaster (Expo supports Google and Apple only)
6. **External wallets** — Varies by network:
   * EVM: MetaMask, Coinbase, WalletConnect, Rainbow, Zerion, Rabby
   * Solana: Phantom, Backpack, Solflare, Glow
   * Cosmos: Keplr, Leap
7. **Expo-specific** — Bundle identifier (e.g., `com.mycompany.myapp`)

#### Non-Interactive Mode

Non-interactive mode activates when an app name is provided with `--networks` for Next.js or with `-t expo --bundle-id` for Expo. Email auth is enabled by default if no other auth method is specified.

```bash theme={null}
para create my-app -t nextjs --networks evm,solana --oauth GOOGLE,APPLE -y
```

#### API Key Connection

If you're authenticated, the CLI offers to connect a Para project after scaffolding. This creates or selects an organization, project, and API key, then writes the key to the app's `.env` file.

#### Package Manager Detection

The CLI detects your package manager automatically:

1. `--package-manager` flag (highest priority)
2. How you invoked the CLI (`npx`, `yarn dlx`, `pnpm dlx`, `bunx`)
3. Lock files in the current directory
4. Falls back to `npm`

#### Example

```bash theme={null}
$ para create my-dapp

  ◆ Select a template
  │ ● Next.js
  │ ○ Expo (React Native)
  └

  ◆ Select networks
  │ ◼ EVM (Ethereum, Polygon, Base, ...)
  │ ◻ Solana
  │ ◻ Cosmos
  └

  ◆ Select authentication methods
  │ ◼ Email (recommended)
  │ ◻ Phone / SMS
  │ ◻ OAuth
  └

  ✔ Created my-dapp from nextjs template
  ✔ Installed dependencies with npm

  Next steps:
    cd my-dapp
    npm run dev
```

***

## Diagnostics

### `para doctor`

Scan your project for common Para SDK integration issues. Checks configuration, dependencies, setup patterns, and best practices.

```bash theme={null}
para doctor [path]
```

| Argument | Description              | Default                 |
| -------- | ------------------------ | ----------------------- |
| `[path]` | Project path to diagnose | `.` (current directory) |

| Flag                    | Description                                                                    |
| ----------------------- | ------------------------------------------------------------------------------ |
| `--category <category>` | Filter by category: `configuration`, `dependencies`, `setup`, `best-practices` |
| `--severity <severity>` | Minimum severity: `error`, `warning`, `info`                                   |

#### What It Checks

| Check                         | Category      | What It Looks For                                                                           |
| ----------------------------- | ------------- | ------------------------------------------------------------------------------------------- |
| API key env var               | Configuration | API key environment variable is set correctly                                               |
| Env var prefix                | Configuration | Env var prefix matches framework (`NEXT_PUBLIC_`, `VITE_`, `EXPO_PUBLIC_`)                  |
| CSS import                    | Setup         | Required Para CSS import is present                                                         |
| ParaProvider                  | Setup         | `ParaProvider` component wraps the app                                                      |
| Duplicate ParaModal instances | Setup         | A separate `<ParaModal />` is not rendered while `ParaProvider`'s embedded modal is enabled |
| QueryClient                   | Setup         | `QueryClient` is set up (required by React SDK)                                             |
| `"use client"` directive      | Setup         | Next.js files using Para hooks have the directive                                           |
| Version consistency           | Dependencies  | All `@getpara/*` packages are on the same version                                           |
| Chain dependencies            | Dependencies  | Required chain packages are installed for selected networks                                 |
| Deprecated packages           | Dependencies  | No deprecated `@usecapsule/*` packages are present                                          |

#### Example Output

```bash theme={null}
$ para doctor

  Para Doctor — Diagnosing my-app

  Project: my-app
  Framework: nextjs
  SDK: @getpara/react-sdk@2.1.0
  Package Manager: npm

  ✔ API key environment variable configured
  ✔ Environment variable prefix matches framework
  ✔ Para CSS import found
  ✔ ParaProvider component detected
  ✔ No duplicate ParaModal instances detected
  ✔ QueryClient setup detected
  ✘ Missing "use client" directive in src/app/providers.tsx
  ⚠ @getpara/evm-wallet-connectors is on 2.0.9, expected 2.1.0
  ✔ Chain dependencies installed
  ✔ No deprecated packages found

  8 passed · 1 failed · 1 warning
```

#### Filtering

Run only dependency checks:

```bash theme={null}
para doctor --category dependencies
```

Show only errors (skip warnings and info):

```bash theme={null}
para doctor --severity error
```

#### JSON Output

Use `--json` for CI/CD pipelines:

```bash theme={null}
para doctor --json
```

```json theme={null}
{
  "projectInfo": {
    "framework": "nextjs",
    "sdkType": "@getpara/react-sdk",
    "sdkVersion": "2.1.0",
    "packageManager": "npm"
  },
  "results": [
    {
      "name": "use-client-directive",
      "status": "fail",
      "severity": "error",
      "category": "setup",
      "message": "Missing \"use client\" directive",
      "recommendation": "Add \"use client\" to the top of src/app/providers.tsx"
    }
  ],
  "summary": {
    "total": 9,
    "passed": 7,
    "failed": 1,
    "warnings": 1
  }
}
```

The command exits with code `1` if any error-severity checks fail, making it suitable for CI gates.

***

## Migrations

### `para migrate v3`

Plan or apply a Para v2 to v3 app migration. The command inspects local project files and can include API key configuration updates when you pass `--key`.

```bash theme={null}
para migrate v3 [path]
```

| Argument | Description             | Default |
| -------- | ----------------------- | ------- |
| `[path]` | Project path to migrate | `.`     |

| Flag                         | Description                                                |
| ---------------------------- | ---------------------------------------------------------- |
| `--dry-run`                  | Plan changes without writing local files or API key config |
| `--apply`                    | Apply approved local and API key changes                   |
| `--key <key-id>`             | API key ID to migrate                                      |
| `--target-version <version>` | Target `@getpara` package version (default: `3.0.0`)       |
| `--allow-dirty`              | Allow a dirty git tree after enumerating dirty files       |
| `--manifest <path>`          | Manifest path for apply or dry-run output                  |

```bash theme={null}
para migrate v3
para migrate v3 ./apps/web --dry-run
para migrate v3 ./apps/web --key key_123 --target-version 3.0.0
```

<Warning>
  Review the migration plan before using `--apply`. Applying a migration can change local project files and API key configuration.
</Warning>

### `para migrate rollback`

Roll back a Para v3 migration manifest.

```bash theme={null}
para migrate rollback
```

| Flag                | Description                                  |
| ------------------- | -------------------------------------------- |
| `--manifest <path>` | Migration manifest path                      |
| `--apply`           | Apply rollback instead of printing a dry run |

```bash theme={null}
para migrate rollback --manifest .para-migrate-v3.json
para migrate rollback --manifest .para-migrate-v3.json --apply
```

***

## Command Catalog

### `para commands`

Print the CLI command catalog. Use `--json` for deterministic metadata that agents and scripts can inspect without scraping help text.

```bash theme={null}
para commands
para commands --json
```

The JSON catalog includes command paths, arguments, options, examples, requirements, read/write side effects, interactivity, JSON support, output shape, and related Developer Portal area.

See <Link label="Agentic Development" href="/v3/cli/agentic-development" /> for Claude, Codex, and automation workflows that use the catalog.

***

## Updating the CLI

### `para update`

Check for and explicitly update the Para CLI.

```bash theme={null}
para update
```

| Flag                  | Description                                      |
| --------------------- | ------------------------------------------------ |
| `--manager <manager>` | Package manager to use: `npm`, `yarn`, or `pnpm` |
| `-y, --yes`           | Skip confirmation and run the update             |
| `--check`             | Check for updates without installing             |

```bash theme={null}
para update
para update --yes
para update --manager pnpm --yes
para update --check --json
```

The CLI also performs a notice-only update check during normal human-readable commands. Set `PARA_DISABLE_UPDATE_CHECK=1` to disable update checks and explicit update installs.
