Preview. Part of the Migration API — in active design and not yet generally
available. Endpoints and payloads may change. See the
overview.
x-api-key header — see Authentication.
Publish your migration logic (one time, in the UI)
Before any API calls, set up the source in the Vern dashboard: define
your templates, then author and publish an import plan. This is the
interactive part — you do it once, and every customer migration replays it.
See Core concepts.
Discover sources and templates (optional)
To let your customer pick which system they’re migrating from and which
objects to import, list your sources and templates and render them in your own
UI. Skip this if you already know the IDs.Feed the chosen source into
source and the chosen templates into
template_ids below. See List sources and
List templates. (Preview — until these
ship, read the IDs from the Vern dashboard.)Provision a company for the customer
Create a company bound to your source. You get back the IDs used by every
later call.Every ID in the response is a UUID. Use
company.id for every later call.See Provision a company for every field.Import the customer's files
Push files and Vern replays your plan. The call is async — it returns a run
to poll. (Small tabular sets can be sent inline as See Import files for upload options.
rows instead of files.)Poll until the import finishes
Poll the run every couple of seconds until A
status is terminal.completed run with invalidCellCount > 0 means that many rows still have
at least one cell that failed validation — the rest are clean. The default
CSV download (?filter=valid) excludes those rows entirely. See
Poll an import for recovery and every status
shape.Resolve flagged rows (only if needed)
If the run comes back Vern applies the fix, writes a new plan version, and re-runs — poll again
until the run is
needs_attention instead of completed, Vern paused
because some rows failed validation and it has a fix waiting. The poll
response carries self-describing questions and a proposed_patch — render
them in your own UI, then send the customer’s answer:completed (or it re-parks with fresh questions). To take
Vern’s suggestion as-is, approve with no answers. See
Resolve flagged rows.Deliver the clean data
Download the validated rows as a clean CSV (valid rows only, by default):Or push the validated records straight to a destination API with
Export to a destination.