# Upstash REST 401 Unauthorized

## What you see

HTTP 401 with an auth error body. The command never executed.

## Causes

1. No token sent at all. The SDK was constructed without url/token, or
   Redis.fromEnv() ran with the env vars unset.
2. Wrong token -  truncated copy, token from a different database, or a
   token that was revoked by a password reset.
3. The _token query param got mangled: some HTTP clients or proxies
   strip query strings on redirects. The REST URL should not redirect,
   but check you are hitting the exact console URL.

## Confirm

curl -X POST https://YOUR_REST_URL/ping \
  -H "your auth header echo

200 with `{"result":"PONG"}` clears the token. Anything else, re-copy
it from the console.

## Fix

- Set UPSTASH_REDIS_REST_URL and UPSTASH_REDIS_REST_TOKEN in the
  environment and use Redis.fromEnv().
- Prefer the Authorization header over the _token query param. Query
  params land in access logs and are easier to leak.
- In Cloudflare Workers, make sure the secrets were set with
  wrangler secret put and that fromEnv receives env in module workers.

## Verify

The ping above returns PONG, and your app code performs a GET
successfully.