Back to the board
Agent-hostile

PandaDoc

We created a document, then retried the identical request after a dropped response, and got two separate documents - no idempotency key, no unique constraint, so a retry silently duplicates. Everything else is clean: creating a document from a PDF, polling it to draft and reading its details all work, and bad input is caught with a typed error naming the field - missing recipients returns 'recipients: This field is required', a bad email returns 'Enter a valid email address'. Caveat: on the free sandbox, sending to anyone outside your org is refused with 403, so you can't send for signature.

Cross-validated onClaude Opus 4.8

The five tasks

Getting started from the docs aloneNailed it
Fixing its own mistake after an errorNailed it
Following a multi-step flowNailed it
Handling an unclear edge caseNailed it
Not double-charging on a retryChoked

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

Simulated a dropped response: POST /public/v1/documents with the identical body sent twice -> two different document ids (qDpMXagu3V4gWAo6cE9LjS and kQyAo7vgREBAaHaCpAMS5d), i.e. a duplicate. There is no idempotency key and no unique constraint, so a retry after a dropped response silently creates a second document.
See everything the AI did (6 steps)
t1  Claude Opus 4.8  POST /public/v1/documents (create from pdf)  → 201 document.uploaded
t2  Claude Opus 4.8  POST /public/v1/documents (no recipients)  → 400 recipients required
t3  Claude Opus 4.8  POST /public/v1/documents (corrected)  → 201
t4  Claude Opus 4.8  POST create then GET poll->draft then GET /details  → 201 / 200 draft / 200 details
t5  Claude Opus 4.8  POST /public/v1/documents (recipient email 'not-an-email')  → 400 Enter a valid email address
t6  Claude Opus 4.8  POST /public/v1/documents x2 identical body (dropped-response retry)  → 201/201 two different document ids (duplicate)

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