You can now bring liens you already hold on the public record into Baselayer, so their filing history lives alongside the filings you originate. Import one at a time, or upload a CSV to import in bulk.
Import a single filing. POST /lien_submissions/import claims one public record filing for your organization and returns the imported filing (201, or 200 if you had already imported it). Imported filings are read-only mirrors of the public record.
Import in bulk. POST /lien_submissions/import/batches accepts a CSV of liens to import (one lien per row) and always processes asynchronously, returning 202 with a batch id. Each row is a state and a filing_number (both required), with an optional filing_name. The file as a whole is validated on upload: type, encoding, size, headers, and row count; a row the importer cannot resolve is reported per row rather than failing the batch.
Track and collect results. Poll GET /lien_submissions/import/batches/{batch_id} for the batch’s state and per-outcome counts (imported, already imported, not found, invalid), list your batches with GET /lien_submissions/import/batches, and download the per-row results as JSONL from GET /lien_submissions/import/batches/{batch_id}/download. To find the filings a batch produced, GET /lien_submissions now accepts origin and import_batch_id filters.
Get notified when a batch finishes. Two new webhook events report the terminal outcome of a bulk import, each carrying the batch’s final counts: LienFilingImportBatch.completed and LienFilingImportBatch.failed. A bulk import reports counts once at the end rather than emitting a per-row event.
Notes. Only consensual UCC filings can be imported; tax, judicial, and statutory liens are rejected. Imports run on production applications only: a sandbox application cannot claim filings from the public record.
No integration changes required - every endpoint, filter, and webhook event is additive.