--- id: upstash/skills/upstash-cli version: "3eb47dcf" license: MIT install: manual updated: 2026-07-14 --- # upstash-cli — Upstash CLI lets you manage Redis, Vector, Search, and QStash resources programmatically through the Upstash Developer API. All commands output JSON and run non-interactively, making them ideal for automation workflows. Handle database creation, backups, indexes, team members, and service configuration from the command line. Publisher: upstash · Stars: 15 · Updated: 2026-07-14 Install (manual): `git clone https://github.com/upstash/skills` ## SKILL.md The Upstash CLI (`upstash`) manages Upstash services via the Upstash Developer API. All commands are non-interactive and emit JSON on stdout. Errors go to stderr as `{ "error": "..." }` with exit code `1`. ## Install ```bash npm i -g @upstash/cli ``` ## Authentication Recommended: run `upstash login` once per machine. Prompts for email and a Developer API key (create one at https://console.upstash.com/account/api), verifies them, and saves to `~/.config/upstash/config.json`. ```bash upstash login ``` Alternatives — env vars (also auto-loaded from a `.env` in cwd), or `--email` / `--api-key` inline, or `--env-path ` to point at a specific `.env`: ```bash export UPSTASH_EMAIL=you@example.com export UPSTASH_API_KEY=your_api_key ``` Precedence: flags > env vars > `.env` > saved config. Prefer a **read-only** API key for agents when possible — mutations fail at the API, the same way they would in the console. ## Resource ID flags | Flag | Products | |------|----------| | `--db-id ` | Redis | | `--index-id ` | Vector, Search | | `--qstash-id ` | QStash | | `--team-id ` | Team | ## Redis ```bash upstash redis list upstash redis get --db-id [--hide-credentials] upstash redis create --name --region [--read-regions ] upstash redis delete --db-id [--dry-run] upstash redis rename --db-id --name upstash redis reset-password --db-id upstash redis stats --db-id upstash redis enable-tls --db-id upstash redis {enable,disable}-eviction --db-id upstash redis {enable,disable}-autoupgrade --db-id upstash redis change-plan --db-id --plan upstash redis update-budget --db-id --budget upstash redis update-regions --db-id --read-regions upstash redis move-to-team --db-id --team-id ``` Regions — AWS: `us-east-1`, `us-east-2`, `us-west-1`, `us-west-2`, `ca-central-1`, `eu-central-1`, `eu-west-1`, `eu-west-2`, `sa-east-1`, `ap-south-1`, `ap-northeast-1`, `ap-southeast-1`, `ap-southeast-2`, `af-south-1`. GCP: `us-central1`, `us-east4`, `europe-west1`, `asia-northeast1`. ### Redis backups ```bash upstash redis backup list --db-id upstash redis backup create --db-id --name upstash redis backup delete --db-id --backup-id [--dry-run] upstash redis backup restore --db-id --backup-id upstash redis backup {enable,disable}-daily --db-id ``` ### Redis exec (REST, not the Developer API key) ```bash upstash redis exec --db-url --db-token SET key value upstash redis exec --db-url --db-token --json '["SET","key","value"]' ``` `--db-url` / `--db-token` fall back to `UPSTASH_REDIS_REST_URL` / `UPSTASH_REDIS_REST_TOKEN`. Get both from `endpoint` and `rest_token` in `upstash redis get --db-id `. ## Team ```bash upstash team list upstash team create --name [--copy-cc] upstash team delete --team-id [--dry-run] upstash team members --team-id upstash team add-member --team-id --member-email --role upstash team remove-member --team-id --member-email [--dry-run] ``` ## Vector ```bash upstash vector list upstash vector get --index-id upstash vector create --name --region --similarity-function --dimension-count [--type payg] [--index-type ] [--embedding-model ] [--sparse-embedding-model ] upstash vector delete --index-id [--dry-run] upstash vector rename --index-id --name upstash vector reset-password --index-id upstash vector set-plan --index-id --plan upstash vector transfer --index-id --target-account upstash vector stats # aggregate across all indexes upstash vector index-stats --index-id [--period <1h|3h|12h|1d|3d|7d|30d>] ``` Regions: `eu-west-1`, `us-east-1`, `us-central1`. Similarity: `COSINE`, `EUCLIDEAN`, `DOT_PRODUCT`. Index types: `DENSE`, `SPARSE`, `HYBRID`. Dense models: `BGE_SMALL_EN_V1_5`, `BGE_BASE_EN_V1_5`, `BGE_LARGE_EN_V1_5`, `BGE_M3`. Sparse models: `BM25`, `BGE_M3`. For `HYBRID` with managed embeddings, set `--dimension-count 0`. ## Search ```bash upstash search list upstash search get --index-id upstash search create --name --region --type upstash search delete --index-id [--dry-run] upstash search rename --index-id --name upstash search reset-password --index-id upstash search transfer --index-id --target-account upstash search stats upstash search index-stats --index-id [--period <1h|3h|12h|1d|3d|7d|30d>] ``` Regions: `eu-west-1`, `us-central1`. ## QStash ```bash upstash qstash list # run first; maps region → id upstash qstash get --qstash-id upstash qstash rotate-token --qstash-id upstash qstash set-plan --qstash-id --plan upstash qstash stats --qstash-id [--period <1h|3h|12h|1d|3d|7d|30d>] upstash qstash ipv4 # CIDR blocks for allowlisting upstash qstash move-to-team --qstash-id --target-team-id upstash qstash update-budget --qstash-id --budget # 0 = no limit upstash qstash {enable,disable}-prodpack --qstash-id ``` ## Conventions - Pipe any output to `jq` for field extraction, e.g. `upstash redis list | jq '.[].database_id'`. - Use `--dry-run` first on any `delete` or `remove-member`. - Use `--hide-credentials` on `redis get` when the password isn't needed. [View on SkillFed](https://skillfed.io/upstash/skills/upstash-cli) · [View on GitHub](https://github.com/upstash/skills)