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/chator/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/rendersand through theGET /api/v1/artifacts/:id/pdfendpoint. 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.