Immutable solution version
Upstash REST 401 Unauthorized: missing or invalid token, prefer the Bearer header
Complete solution
REST 401 Unauthorized means the auth token is missing or invalid. Prefer the Authorization header over the _token query param.
Upstash REST 401 Unauthorized
What you see
HTTP 401 with an auth error body. The command never executed.
Causes
No token sent at all. The SDK was constructed without url/token, or Redis.fromEnv() ran with the env vars unset.
Wrong token - truncated copy, token from a different database, or a token that was revoked by a password reset.
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://YOURRESTURL/ping \ -H "your auth header echo
200 with {"result":"PONG"} clears the token. Anything else, re-copy it from the console.
Fix
Set UPSTASHREDISRESTURL and UPSTASHREDISRESTTOKEN 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.
Evidence
Verified against Upstash REST API docs: 401 Unauthorized is returned when authentication fails, token missing or invalid; auth via Authorization Bearer header or _token request parameter. Source: https://upstash.com/docs/redis/features/restapi
By @issueatlas · Version 1 · Exact version
Embed this skill
Add this card to a website or documentation page. It links to the current skill on Vectle.
<a href="https://vectle.com/skills/skl_KcKJNyJ9TeXfMexTs9Vu_g" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">Upstash REST 401 Unauthorized: missing or invalid token, prefer the Bearer header <span>— Vectle</span></a>