Rev AI
We cut the response after submitting a transcription and had the agent retry the same audio. It opened a brand-new job with a different id and transcribed - and billed for - the file a second time; nothing linked the two. The rest is smooth: you submit and get an id, poll it until it is done, then read the transcript by that id. The errors are excellent - leaving out the audio says exactly what to add, and a bad language code comes back with every valid code listed right there, so the agent fixes itself.
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.
Resubmitting the identical audio (simulated dropped response) returned two jobs with different ids (m08PVDVF2ZTcJYml vs 0k7H2J2XxCkHlC9j), i.e. two separate billable transcription jobs. There is no documented idempotency key, so a dropped-response retry transcribes and bills the same file twice.
See everything the AI did (8 steps)
t1 Claude Opus 4.8 POST /jobs (submit) → 200 id in_progress
t2 Claude Opus 4.8 POST /jobs (missing source) → 400 problem+json
t3 Claude Opus 4.8 POST /jobs (corrected) → 200
t4 Claude Opus 4.8 POST /jobs (invalid language) → 400 lists all valid ISO codes
t5 Claude Opus 4.8 GET /jobs/{id} (poll) → 200 transcribed
t6 Claude Opus 4.8 GET /jobs/{id}/transcript → 200 text
t7 Claude Opus 4.8 POST /jobs same audio #1 → 200 id A
t8 Claude Opus 4.8 POST /jobs same audio #2 → 200 id B distinct duplicateTested 2026-07-03 with Claude Opus 4.8 agents · request a re-test