# Vern Documentation ## Docs - [Introduction](https://docs.vern.so/help-center/get-started/introduction.md) - [Quickstart](https://docs.vern.so/help-center/get-started/quickstart.md): Onboard your first customer end to end in about ten minutes. - [Generate templates](https://docs.vern.so/help-center/get-started/generate-templates.md): Have an AI draft your templates from a schema, spreadsheet, or API docs. - [Create a company](https://docs.vern.so/help-center/onboard/create-a-company.md): Set up a company for one customer you're onboarding. - [Share a magic link](https://docs.vern.so/help-center/onboard/share-a-magic-link.md): One link your customer uses to share their data with you. - [How import works](https://docs.vern.so/help-center/import/how-it-works.md): The AI agent that maps your customer's data into your schema. - [Spot-check and fix](https://docs.vern.so/help-center/import/spot-check-and-fix.md): Catch and fix anything the import agent missed. - [Export a workbook](https://docs.vern.so/help-center/send/export-a-workbook.md): Send cleaned data out of Vern — as CSV, via webhook, or straight into your API. - [Write to an API](https://docs.vern.so/help-center/send/write-to-an-api.md): Build a writer once, then push cleaned workbook data straight into your app's API. - [Webhooks](https://docs.vern.so/help-center/send/webhooks.md): Stream cleaned workbook data into your app over Svix-delivered webhooks. - [Team](https://docs.vern.so/help-center/settings/team.md): Invite teammates to your Vern account, and understand what each role can do. - [Data retention](https://docs.vern.so/help-center/settings/data-retention.md): Set how long workbook data sticks around before it's automatically purged, and what happens when an account is closed. - [API keys](https://docs.vern.so/help-center/settings/api-keys.md): Generate keys for the Vern REST API. - [Migration API](https://docs.vern.so/migration-api/introduction.md): Embed Vern's migration engine inside your own product — create a migration, run a managed-agent import, review the preview, and deliver clean data over the API. - [Core concepts](https://docs.vern.so/migration-api/concepts.md): Sources, templates, migrations, runs, and the managed agent that turns messy files into clean records. - [Quickstart](https://docs.vern.so/migration-api/quickstart.md): Create a migration, upload a customer's files, generate and review a preview, then execute and download clean data — end to end. - [Authentication](https://docs.vern.so/migration-api/authentication.md): API keys, headers, and basic security guidance. - [List sources](https://docs.vern.so/migration-api/list-sources.md): List the sources in your account so your end-customers can pick which system they're migrating from. - [List templates](https://docs.vern.so/migration-api/list-templates.md): List the templates in your account — the importable objects, with their columns and validation rules — so your customers can pick what to import. - [Pin a source](https://docs.vern.so/migration-api/pin-a-source.md): Pin the recipe a source reuses so one customer's run can't drift the starting point other runs draw from — or unpin to return to "latest working recipe". - [Knowledge](https://docs.vern.so/migration-api/knowledge.md): Durable context the agent reads before every run — what a source system's quirks are, and what's true about a particular customer. Seed it once instead of re-explaining each time. - [Create a migration](https://docs.vern.so/migration-api/create-a-migration.md): Create an isolated migration workspace for one customer — a workbook with one sheet per template. - [Upload files](https://docs.vern.so/migration-api/upload-files.md): Mint signed upload URLs for a migration, PUT the customer's files straight to storage, and list what's been uploaded. - [Connect a live source](https://docs.vern.so/migration-api/source-connection.md): Attach a live API source to a migration so the agent extracts data directly — as an alternative to, or alongside, uploaded files. - [Start a run](https://docs.vern.so/migration-api/start-a-run.md): Start a managed-agent run — generate a preview, refine it with update or clarify, or execute the approved import. - [Poll a run](https://docs.vern.so/migration-api/poll-a-run.md): Track a run to completion, read the import report, recover a run you lost, and cancel one in flight. - [Answer the agent](https://docs.vern.so/migration-api/answer-questions.md): Render the agent's clarifying questions in your own UI and answer them — or send a free-form correction — to resume a blocked run. - [Submit source credentials](https://docs.vern.so/migration-api/submit-credentials.md): Resume a run that paused to ask for a live source's API credentials — the secure path for secrets, kept out of the agent thread. - [Get the preview](https://docs.vern.so/migration-api/get-the-preview.md): Read the latest generated preview — the proposed output, sheet-per-template — so your customer can review it before you execute. - [Stream the thread](https://docs.vern.so/migration-api/stream-the-thread.md): Read the agent's full activity thread across all of a migration's runs — as a snapshot you cursor through, or a live SSE stream. - [Export CSV](https://docs.vern.so/migration-api/export-csv.md): Get a migration's validated data out as a clean CSV — addressed by template slug, downloaded or streamed straight into your own storage bucket. - [Export jobs](https://docs.vern.so/migration-api/export-jobs.md): Queue a large export and poll for a download link — for sheets too big to stream inline, or when you want several sheets as one ZIP. - [Session log](https://docs.vern.so/migration-api/session-log.md): The settled record of a migration — what was planned, which files went in, who approved what, and how many rows landed. Fetch it once when the migration finishes and store it. - [Extract a document](https://docs.vern.so/migration-api/extract-a-document.md): Turn an unstructured file — a PDF, a scan, a Word document — into template-shaped rows, without creating a migration. - [Errors & limits](https://docs.vern.so/migration-api/errors.md): The shared error model, idempotency, rate limits, polling conventions, and data region notes. - [API Reference](https://docs.vern.so/api-reference/introduction.md): Interactive reference for every Migration API endpoint — try each request live with your own API key. - [List sources](https://docs.vern.so/api-reference/catalog/list-sources.md): Returns the sources in your account — the systems you migrate customers off of. Sources are addressed by **name** throughout the API; no source ID is exposed. - [Pin a source's recipe](https://docs.vern.so/api-reference/catalog/pin-a-sources-recipe.md): Pin the recipe a source reuses as the starting point for future `generate` runs, so one customer's run can't drift the baseline others draw from. Pass `run_id: null` to unpin. - [List templates](https://docs.vern.so/api-reference/catalog/list-templates.md): Returns the active templates in your account — the importable objects, each with its columns and validation rules. Templates are addressed by **slug**. - [Get a template](https://docs.vern.so/api-reference/catalog/get-a-template.md): Fetch one active template by its slug. - [Read source knowledge](https://docs.vern.so/api-reference/knowledge/read-source-knowledge.md): Durable facts about the source software itself — field meanings, enum codes, export quirks. Seeding this means a run does not relearn what you already know. - [Replace source knowledge](https://docs.vern.so/api-reference/knowledge/replace-source-knowledge.md): `knowledge` replaces the whole document; an empty string clears it. Use `if_unmodified_since` for safe read-modify-write. - [Create a migration](https://docs.vern.so/api-reference/migrations/create-a-migration.md): Create a migration workspace for one customer — a workbook with one sheet per template. Requires API-key auth specifically. `external_id` makes creation idempotent: re-sending the same one (with the same source) returns the existing migration with a 200. - [Mint signed upload URLs](https://docs.vern.so/api-reference/migrations/mint-signed-upload-urls.md): Request one signed upload URL per file, then PUT each file's bytes to its `signed_url`. Files are workbook-level — not mapped to templates. - [List uploaded files](https://docs.vern.so/api-reference/migrations/list-uploaded-files.md): List the customer-uploaded files for the migration. - [Create or update the source connection](https://docs.vern.so/api-reference/migrations/create-or-update-the-source-connection.md): Attach a live API source to the migration, or update it in place. `credentials` (optional here) go to a secured vault and are never returned; you can also supply them later via Submit credentials. - [Get the source connection](https://docs.vern.so/api-reference/migrations/get-the-source-connection.md): Read the migration's live API source connection, or 404 if none is configured. Never returns secret values — `creds_configured` reports whether credentials are on file. - [Delete the source connection](https://docs.vern.so/api-reference/migrations/delete-the-source-connection.md): Remove the migration's source connection and its stored secrets. Accepts the same optional source_key and profile_id query parameters as GET. - [Read customer knowledge](https://docs.vern.so/api-reference/knowledge/read-customer-knowledge.md): Durable facts about this customer that the agent honours on every run — "amounts are always USD", "skip internal test records". Distinct from source knowledge, which is about the source software itself. - [Replace customer knowledge](https://docs.vern.so/api-reference/knowledge/replace-customer-knowledge.md): `knowledge` **replaces** the whole document; an empty string clears it. The agent rewrites this field the same way, so read, merge, then write. - [Start a run](https://docs.vern.so/api-reference/runs/start-a-run.md): Start one managed-agent run. `generate` authors the recipe and stops at a preview; `update` edits it per `message`; `clarify` asks a read-only question; `execute` runs the approved preview for real. `generate` opens a preview run and `update`/`clarify`/`execute` resume that same run, so the `run_id`… - [Poll a run](https://docs.vern.so/api-reference/runs/poll-a-run.md): Read a run's state. Every response carries `run_id`, `status`, and `created_at` (plus `answers`, a read-back of your last reply, once you've answered a block); the rest depends on status (`message` while running, `blocked_reason` + `questions`/`credential_request` when blocked, `report` on a complet… - [Cancel a run](https://docs.vern.so/api-reference/runs/cancel-a-run.md): Cancel an in-flight run. The only accepted body is `{ "status": "cancel_requested" }`. - [Answer a blocked run](https://docs.vern.so/api-reference/runs/answer-a-blocked-run.md): Resume a run paused at `blocked` with `blocked_reason: "question"`. Send `answers` as the structured `[{id,value}]` form (one per question) or a free-form string. Only a question-blocked run accepts this (409 otherwise) — a credentials-blocked run is rejected so secrets never enter the agent thread;… - [Submit source credentials](https://docs.vern.so/api-reference/runs/submit-source-credentials.md): Resume a run paused at `blocked` with `blocked_reason: "credentials"`. The secrets are stored in a secured vault and never enter the agent thread, the run row, or logs. The target connection is taken from the run's own `credential_request` — a key can only fill the connection the agent asked about.… - [Get the preview](https://docs.vern.so/api-reference/runs/get-the-preview.md): The latest generated preview — the proposed output, sheet-per-template. 404 until a generate/update run has produced one. - [Get the thread (snapshot)](https://docs.vern.so/api-reference/runs/get-the-thread-snapshot.md): A snapshot of the agent's activity thread across all of the migration's runs, ordered by a stable cross-run sequence. Page forward by passing the previous `last_sequence` as `after`. - [Stream the thread (SSE)](https://docs.vern.so/api-reference/runs/stream-the-thread-sse.md): A Server-Sent Events stream of the same thread events. Each message is `event: ` + `data: `. The stream ends with `event: done` and closes after ~5 minutes; reconnect with `?after=` to continue. - [Get the session log](https://docs.vern.so/api-reference/log/get-the-session-log.md): The settled record of a migration: what was planned, which files went in, who approved what, how many rows were written, and whether existing rows were replaced. - [Export a sheet as CSV](https://docs.vern.so/api-reference/export/export-a-sheet-as-csv.md): Stream one sheet's validated data as a CSV, addressed by `{template_slug}.csv`. The body is streamed (gzip-compressed when the request advertises it) and an `X-Total-Records` header reports the matching count. - [Start an export](https://docs.vern.so/api-reference/exports/start-an-export.md): Queues an export of one or more destination sheets. One slug produces a CSV, several produce a ZIP. Poll the returned `status_url` for the download link. - [Poll an export job](https://docs.vern.so/api-reference/exports/poll-an-export-job.md) - [Extract structured data from a document](https://docs.vern.so/api-reference/extractions/extract-structured-data-from-a-document.md): Upload an unstructured file (PDF, Word document, or spreadsheet) and extract it against one or more of your templates. Reducto parses the file, an LLM designs a per-section extraction schema from the templates you name, and the extracted rows come back shaped like those templates. - [Poll an extraction and read its rows](https://docs.vern.so/api-reference/extractions/poll-an-extraction-and-read-its-rows.md): Returns `processing` until the extraction settles, then `completed` with the extracted tables, or `failed` with a reason. ## OpenAPI Specs - [openapi](https://docs.vern.so/api-reference/openapi.json)