# Blocking Redis commands are not supported over Upstash REST
## What you see
HTTP 400, or an unsupported-command error, when calling BLPOP, BRPOP,
BRPOPLPUSH, BZPOPMAX, BZPOPMIN, or XREAD/XREADGROUP with BLOCK.
## Why
Blocking commands hold a connection open waiting for data. REST is
request/response per call: there is no connection to hold. The
compatibility table marks all of these unsupported.
## Fix options
1. Poll with a timeout loop. Replace BLPOP with LPOP in a loop that
sleeps briefly between attempts. Each poll is a billed command, so
size the sleep to your latency budget.
2. Use the native Redis protocol instead. Over RESP with a persistent
connection, blocking commands work normally. This is the right call
for queue consumers.
3. For streams, use non-blocking XREAD (no BLOCK argument) over REST.
## Cost note
Polling every 100ms is 864K commands a day per consumer. At pay as you
go rates that is real money. Prefer the protocol path for
blocking-style consumers, or lengthen the poll interval and accept the
latency.
## Verify
Your consumer processes a pushed item end to end: RPUSH a test item,
watch the consumer pick it up within the expected poll window.