← All updates

/enhance now ships regenerate + both modes

/enhance lifts the in-place-only restriction. mode=regenerate rebuilds a clean DSL source you can re-render forever; mode=both ships the tagged original and the regenerated source side-by-side, billed once.

apienhance

POST /api/v1/enhance no longer rejects non-in-place modes. The async pipeline supports all three modes end-to-end:

  • in-place — tag the original PDF byte-for-byte. Preserves every pixel — same fonts, layout, signatures of authenticity — with the PDF/UA-1 tag tree layered on top.
  • regenerate — rebuild from a clean DSL source we hand back. You get an editable template (visible in /ai/chat or /settings/renders) that you can re-render with new data forever. No more paying the remediation tax every time the document changes.
  • both — run both. The job row now links two artifacts: the in-place tagged PDF (primary) and the regenerated DSL render (secondary). Each is downloadable on /settings/renders and through the GET /api/v1/artifacts/:id/pdf endpoint. Billed once on the union of pages.

The /enhance UI has a re-enabled output-mode dropdown plus a "Switch to regenerate" button on the in-place-impossible 400 response — the same pre-flight that rejected an in-place submission for a font-program issue now hands you a one-click resubmit with mode: "regenerate" and the same upload.

Pricing is unchanged: 10 credits per page on success, the first page is a free preview, partial outcomes are not billed. mode: "both" is the same per-page rate as either single mode — you don't pay twice for two artifacts.

The job status response now carries secondaryArtifactId and secondaryDownloadUrl for mode: "both" runs. Single-mode jobs leave those null. See the API docs for the response shape.