- Client — embed the Element, which handles upload, checking, findings, and auto-fix UI, and gate your submit button on
canProceed. - Server — before fulfilling, verify the submitted
jobIdwith your secret key.
No browser in your flow at all — files arrive from a batch process, an API, or your own upload pipeline? Skip the Element and use the headless API integration instead.
1
2
Embed the Element (client)
Drop the Element into your upload or product page, mount it, and gate your submit button on Use
canProceed. Carry the jobId in a hidden field so it reaches your server with the form:canProceed as-is — it already folds in the Workflow’s on-fail policy, so don’t re-derive it from status or the file list. See Installation for async loading and sizing, and Events for the full status payload.3
Verify the job (server)
Client-side gating keeps customers honest, but it can be bypassed. Before fulfilling, verify the submitted Confirm the job belongs to the expected Workflow and reached a passing status, then download the auto-fixed output. See Verify jobs for the checklist, or configure webhooks to be pushed results instead of fetching them.
jobId with your secret key:Multiple uploads on one page
Each Element reports its owncanProceed. Track them separately and only enable submit when all pass: