Skip to main content

Authentication

para login

Authenticate with your Para developer account. Opens your browser for a secure OAuth flow with PKCE verification.
para login
FlagDescription
--no-browserPrint a URL instead of opening the browser (for headless/CI environments)
After login, the CLI automatically selects your first organization and project if none are configured. Sessions are stored at ~/.config/para/credentials.json with 0600 file permissions. The session is validated server-side on each CLI invocation.
Sessions are shared across key environments — logging in once gives you access to both beta and prod keys.

para logout

Clear stored authentication credentials.
para logout
FlagDescription
--allClear 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.
para auth status
Output
  Status:       Authenticated
  Email:        dev@example.com
  Expires:      3/10/2026, 12:00:00 PM
With --json:
{
  "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.
para whoami
Output
  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 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.
para config get
Output
  defaultEnvironment (global):  beta
  environment (.pararc):        beta
  organizationId (.pararc):     org_xyz789
  projectId (.pararc):          proj_def456
Read a specific key:
para config get defaultEnvironment
Project config (.pararc) takes precedence over global config (~/.config/para/config.json).

para config set

Set a configuration value.
para config set <key> <value>
FlagDescription
--localWrite to .pararc in the current directory instead of global config

Valid Keys

KeyValues
defaultEnvironmentbeta, prod
defaultOrganizationIdAny valid organization ID
defaultProjectIdAny valid project ID

Examples

# Set global default key environment
para config set defaultEnvironment prod

# Set global default org
para config set defaultOrganizationId org_xyz789
para config set --local writes the key name as-is (e.g., defaultEnvironment) into .pararc, but para init uses different key names (environment, organizationId, projectId). Use para init to create project-level config — it ensures the correct key names are used.

para config unset

Remove a configuration value.
para config unset <key>
FlagDescription
--localRemove from .pararc instead of global config
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.
para init
FlagDescription
--forceOverwrite an existing .pararc file
In interactive mode, you’ll be prompted to select a key environment (beta or prod). In non-interactive mode (--no-input), the current key environment from global config is used. The resulting .pararc file:
{
  "environment": "beta",
  "organizationId": "org_xyz789",
  "projectId": "proj_def456"
}
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.

Organizations

para orgs list

List all organizations you belong to.
para orgs list
Output
  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.
para orgs switch [org-id]
Without an org-id, an interactive selector is shown:
para orgs switch
Output
 Select an organization
 My Company (org_xyz789) (current)
 Side Project (org_abc123)

With a specific ID:
para orgs switch org_abc123
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.

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.
para projects list
FlagDescription
--include-archivedInclude archived projects in the list
Output
  Name       ID             Framework
  my-app     proj_def456    nextjs (active)
  backend    proj_ghi789    vite

para projects switch

Set the active project.
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.
para projects create
FlagDescription
-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.
para projects create -n "my-new-app" --framework nextjs

para projects update

Update a project’s name, description, or framework.
para projects update [project-id]
FlagDescription
-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.
para projects archive [project-id]
Uses the active project if no project-id is given.
FlagDescription
-y, --yesSkip confirmation prompt
Archiving a project immediately disables all of its API keys. Active users will lose access.

para projects restore

Restore a previously archived project.
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.
para keys list
FlagDescription
--include-archivedInclude archived keys
Output
  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.
para keys get [key-id]
FlagDescription
--show-secretShow the full secret key (unmasked)
--copyCopy the public API key to clipboard
--copy-secretCopy the secret key to clipboard
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.
para keys create
FlagDescription
-n, --name <name>Internal key name
--display-name <name>Display name shown to users
The secret key is only shown once at creation time. Save it immediately.

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.
para keys rotate [key-id]
FlagDescription
--secretRotate the secret key instead of the public key
-y, --yesSkip confirmation prompt
para keys rotate                    # Rotate the beta key
para keys rotate -e prod            # Rotate the prod key
para keys rotate --secret           # Rotate the secret key
Key rotation is irreversible. The old key stops working immediately after rotation.

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.
para keys archive [key-id]
FlagDescription
-y, --yesSkip confirmation prompt
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.
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.

Security

Configure auth methods, origins, session length, and IP restrictions.
para keys config security [key-id]
FlagDescription
--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-popupsEnable transaction popups
--no-transaction-popupsDisable transaction popups
--ip-allowlist <cidrs>Comma-separated CIDR blocks (empty string to clear)
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.
para keys config branding [key-id]
FlagDescription
--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
--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-welcomeToggle welcome email
--email-backup-kit / --no-email-backup-kitToggle backup kit email

Setup / Networks

Configure wallet types and native passkey settings.
para keys config setup [key-id]
FlagDescription
--wallet-types <types>Wallet types — prefix with ~ for optional: "EVM,~SOLANA,~COSMOS"
--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.
para keys config ramps [key-id]
FlagDescription
--buy-enabled / --no-buy-enabledToggle buy
--receive-enabled / --no-receive-enabledToggle receive
--withdraw-enabled / --no-withdraw-enabledToggle withdraw
--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.
para keys config webhooks [key-id]
FlagDescription
--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-enabledToggle the webhook
--statusShow current webhook configuration
--testSend a test webhook
--rotate-secretRotate the webhook signing secret
--deleteRemove webhook configuration
-y, --yesSkip confirmation for destructive operations
para keys config webhooks --url "https://api.myapp.com/webhooks" --events "user.created,wallet.created" --enabled
See for event type details and signature verification.

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.
para create [app-name]
FlagDescription
-t, --template <template>Template: nextjs or expo
--networks <networks>Comma-separated: evm, solana, cosmos
--emailEnable email authentication
--phoneEnable 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-installSkip dependency installation
-y, --yesAccept 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 along with --networks (for Next.js) or --bundle-id (for Expo). Email auth is enabled by default if no other auth method is specified.
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

$ 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.
para doctor [path]
ArgumentDescriptionDefault
[path]Project path to diagnose. (current directory)
FlagDescription
--category <category>Filter by category: configuration, dependencies, setup, best-practices
--severity <severity>Minimum severity: error, warning, info

What It Checks

CheckCategoryWhat It Looks For
API key env varConfigurationAPI key environment variable is set correctly
Env var prefixConfigurationEnv var prefix matches framework (NEXT_PUBLIC_, VITE_, EXPO_PUBLIC_)
CSS importSetupRequired Para CSS import is present
ParaProviderSetupParaProvider component wraps the app
QueryClientSetupQueryClient is set up (required by React SDK)
"use client" directiveSetupNext.js files using Para hooks have the directive
Version consistencyDependenciesAll @getpara/* packages are on the same version
Chain dependenciesDependenciesRequired chain packages are installed for selected networks
Deprecated packagesDependenciesNo deprecated @usecapsule/* packages are present

Example Output

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

  7 passed · 1 failed · 1 warning

Filtering

Run only dependency checks:
para doctor --category dependencies
Show only errors (skip warnings and info):
para doctor --severity error

JSON Output

Use --json for CI/CD pipelines:
para doctor --json
{
  "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.