tts_source_integrity_mismatch 422: job differs from accepted script

verify-spine returns 422 tts_source_integrity_mismatch when a finished TTS job's text no longer matches the accepted script. What it checks and how to recover.

5 min readSume
All posts

tts_source_integrity_mismatch is a 422 from POST /v1/tts-1.0/source/verify-spine. It means a job you listed was not generated from the text the accepted script now holds. The check is free and read-only: it never dispatches a provider call, regenerates audio or persists an adoption. These come back in Sume's standard error envelope with an HTTP status and a stable code.

Three messages, three causes

tts_source_integrity_mismatch messages in the Sume spine verifier
MessageCauseRecovery
Selected job differs from accepted source.The job's receipt digest no longer equals the digest of the accepted sentences it names.Regenerate that job from the current revision, or list the revision the job was made from.
A valid receipt or explicit legacy sentence selection is required.The job has no usable receipt, and you gave no sentence_ids. A malformed existing receipt is never downgraded.Pass sentence_ids for an older job with no receipt, or regenerate with transcript_source.
Historical submitted transcript differs from accepted source.A legacy job's submitted text, after NFC and LF normalization, differs from the sentences you named.Name the sentences the job really read, or regenerate.

What is compared

Sume hashes the transcript a job was submitted with and keeps it as submitted_transcript_sha256 in the job's transcript_receipt. On verification it resolves the receipt's script_revision_id and sentence_ids again, re-checks authorization and binding, and compares digests. A changed sentence, even one comma, changes the digest.

Text is canonicalized first: Unicode NFC and CRLF or lone CR to LF, under the version tag nfc-lf-sentence-v1. A job whose only difference is line-ending style or an equivalent Unicode composition still matches the accepted source.

Recover without paying twice

Only the mismatched jobs need new audio. Unchanged sibling jobs can be listed with explicit sentence_ids and are re-adopted against the new revision without regeneration. A regenerated 600-character line costs $0.03 at $0.0475 per 1,000 characters, rounded up to the cent.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume