# Upstash /multi-exec transaction discarded as a whole

## What you see

A single `{ "error": "ERR ..." }` instead of the per-command result
array.

## The four discard causes

1. Syntax error in the transaction request itself.
2. At least one unsupported command in the batch (blocking commands,
   CLUSTER, WATCH family).
3. At least one command exceeds the max request size (10MB).
4. At least one command would exceed the daily request limit.

## What does NOT discard

A command that is valid but fails at runtime, like INCR on a string
value. That yields an error entry in its position and the rest still
run, matching Redis MULTI/EXEC semantics.

## Confirm

Bisect the batch: send halves to /multi-exec until the failing half
is isolated, then single commands. The discard reason usually names
the offending command.

## Fix

- Remove or replace unsupported commands.
- Split batches that exceed 10MB per request.
- If you hit the daily limit, you have a quota problem, not a code
  problem: upgrade the tier or cut command volume.

## Verify

Re-send the full batch and get a result array with one entry per
command.