Review links & receipts

Send a client a one-decision review link, share a public production receipt, and read the quality receipt on degraded ships.

Last updated August 23, 2026

Three ways to show your work without adding anyone to your org: a review link for a client sign-off, a public receipt that proves how an output was made, and the quality receipt Wavemaker attaches when it ships a degraded result.

Mint a tokenized link against a finished production’s deliverable:

POST /run-groups/{runGroupId}/review-links   → { reviewId, reviewUrl }

The reviewer opens reviewUrl (a public /review/{token} page — no account needed), watches the deliverable, and either approves or requests changes — with an optional note and name — exactly once. A second decision on the same link returns already_decided.

  • The decision lands back on the production’s outputs card in chat, so you see the verdict where you made the video.
  • GET /run-groups/{id}/review-links lists links with their decision state.
  • DELETE /run-groups/{id}/review-links/{linkId} revokes a link — the public page 404s immediately.
  • Minting requires a settled deliverable (409 no_deliverable otherwise).

The token is the credential: anyone with the URL can review, so treat links like the private URLs they are and revoke what you no longer need.

Public production receipts

Every settled run has a receipt — the durable record of what actually ran. To share it publicly:

POST /runs/{runId}/receipt/share   → { token, shareUrl }   (idempotent; 409 before settle)
DELETE /runs/{runId}/receipt/share → revoke (public page 404s)

The public /receipt/{token} page needs no account and shows:

  • QC verdicts — each automated check (kind, verdict, score, attempt).
  • Models — which generation models actually produced the output.
  • Credits — reserved → settled, with any refund or upcharge, so the spend is itemized honestly.

Use it to prove provenance to a client or to document a result. Your own copy is always at GET /runs/{id}/receipt.

Quality receipts on degraded ships

Wavemaker never terminal-fails a production purely on quality: after bounded rewrites it ships the best take. When that happens, the succeeded group carries a qualityReceipt naming the weak axes — each with its source gate and, where applicable, the scene it belongs to. Nothing is hidden: a clean deliverable has no quality receipt at all.

Because weak axes are scene-attributed, repair is one tap: Regenerate scene on the outputs card (or POST /run-groups/{id}/regen-scene with the sceneIndex) re-rolls just that lane — from the seed by default, or from=clip to keep the approved still and redo only the animation.