Skip to main content
airscale lets you search for people and companies, enrich work emails from CSV or JSONL, check credits, and follow durable runs from a terminal.

Install

Requires Node.js 20.3 or newer. This guide covers CLI 0.2.1. If you installed an earlier version, follow the upgrade instructions.
Replace airscale with npx @airscale/cli in the examples below.

Preview a file for free

Create contacts.csv with two fictional contacts and reserved example domains:
contacts.csv
Validate both rows and calculate the maximum exposure locally:
This dry run needs no --output or confirmation. It runs without credentials, HTTP requests, or credit spend. With --json --quiet, stdout contains only:

Connect your workspace

Create a workspace key in the Airscale dashboard, under Settings → API key, then enter it through the hidden prompt:
auth login stores the key locally and shows airscale auth status as the next step. The status command makes a free /credits request to verify the key and connectivity. It displays the credential source and a short fingerprint without printing the key. For a guided first-time flow, run:
setup points you to Settings → API key, checks for an existing credential, and uses the hidden prompt only when none exists. It finishes with the same free credit check. The command is interactive; scripts should configure AIRSCALE_API_KEY through a secret manager. API keys cannot be passed as command-line arguments. AIRSCALE_API_KEY takes precedence over a saved credential.

Enrich the sample

Replace the fictional rows with contacts you are authorized to enrich, then run the free preview again. Review any validation errors and the updated estimate before starting paid work. For a validated two-row file, provide a real output path and approve a maximum of 4 credits:
Fresh paid execution requires --output. --resume saves credential-free state so the same command can continue an interrupted run without starting a replacement batch. Keep the input, output path, field, format, and API URL unchanged when resuming.

More bounded examples

Find up to five people with a maximum exposure of 0.5 credit:
Export up to 20 companies as CSV:
Searches cost 0.1 credit per returned result. Before paid work starts, the CLI checks the maximum row budget and available credits. Interactive terminals can confirm at the prompt; scripts must pass --confirm-credit-spend. Use the exp_… run ID from enrichment output or saved state for free status reads:
To download a completed enrichment file, rerun enrich file with --resume. See the command reference for every command, flag, input rule, and pagination behavior. See Troubleshooting for installation, authentication, CSV, confirmation, and resume errors.

Output and exit codes

All results, including interactive tables and --output -, go to stdout. Progress and errors go to stderr, so result pipelines stay clean. --quiet hides progress and informational messages, but never hides errors. For credits, search, and run commands, choose --json, --jsonl, or --format json|jsonl|csv|table. A real --output path writes a file. When format flags are combined, --json takes precedence over --jsonl, then --format. Search JSON includes the response envelope and continuation cursor. CSV and JSONL contain result records. Use JSON when you need pagination metadata.

Configuration

Saved credentials use the optional system keychain when available, under service airscale and account default. Otherwise they are stored in config.json inside the credential directory, with file permissions 0600 and directory permissions 0700. API URLs must use HTTPS, except for HTTP on loopback addresses such as http://127.0.0.1:8787/v1. URLs containing credentials, query parameters, or fragments are rejected.