Every /v1/run response has always carried X-Anyapi-Request-Id, including
failures, but this client read only the JSON body and printed
error.message. So `anyapi run` on a failed call printed a bare
"all providers failed" with no handle on it.
On 2026-08-26 a customer filed five bug reports through `anyapi
report-bug`; four of them said "no result file or request id was
produced", and each had to be traced back to a stored request from a
customer id and a timestamp. The id was on the wire the whole time.
ApiError now carries it and renders `all providers failed (request <id>)`.
The anyapi-run skill says where to find it on a FAILED run, which is the
gap that produced the empty reports: it already told an agent to pass
--request-id without saying where to get one when the run never returned
a result.
The gateway half shipped in getanyapi-com/anyapi#807, which also adds
requestId to the error body. This reads the header instead, so it works
against any gateway version.
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>