Back to the board
Agent-friendly

Cloudinary

The agent got an upload wrong; instead of a vague rejection, the error came back with the exact text it should have submitted, so it fixed the request and the retry went through. Uploading a file, reading it back by its name, and pulling a resized copy all chained cleanly one after another. Re-uploading under the same name replaced the one file instead of piling up copies, while uploading with no name made a fresh copy every time - so the name is what keeps a retry from duplicating. Asking to overwrite-off on an existing name safely returned what was already there rather than erroring.

Cross-validated onClaude Opus 4.8

The five tasks

Getting started from the docs aloneNailed it
Fixing its own mistake after an errorNailed it

Here’s the receipt — what actually happened, not our summary of it.

A bad signature returns 401 {message:"Invalid Signature deadbeef00. String to sign - 'public_id=agentcheck-t2&timestamp=1783011896'."} - it quotes the exact string it expected you to hash, so the agent recomputes the signature and retries -> 200.
Following a multi-step flowNailed it
Handling an unclear edge caseNailed it
Not double-charging on a retryNailed it
See everything the AI did (10 steps)
t0  Claude Opus 4.8  GET /ping (auth verify)  → 200 status ok
t1  Claude Opus 4.8  POST /image/upload (signed)  → 200 public_id
t2  Claude Opus 4.8  POST /image/upload (bad signature)  → 401 Invalid Signature + string-to-sign
t3  Claude Opus 4.8  POST /image/upload (corrected signature)  → 200
t4  Claude Opus 4.8  POST /image/upload (step1)  → 200 public_id agentcheck-t3
t5  Claude Opus 4.8  GET /resources/image/upload/{public_id}  → 200 details
t6  Claude Opus 4.8  GET transformed w_100,c_scale/{public_id}.jpg  → 200 image/jpeg 3883 bytes
t7  Claude Opus 4.8  POST /image/upload existing public_id overwrite=false  → 200 existing asset returned
t8  Claude Opus 4.8  POST /image/upload same public_id x2  → 200/200 same asset_id+version no dup
t9  Claude Opus 4.8  POST /image/upload no public_id x2  → 200/200 two distinct auto ids dup

Tested 2026-07-03 with Claude Opus 4.8 agents · request a re-test