Factuarea APIDevelopers
Fixed

Fill in contact templates before importing

Preview empty templates with their columns intact and handle empty_import before applying an import.

4 October 2026

Contact templates keep their column headers when previewed without data rows. POST /v1/contacts/import/preview returns 200 with total=0, rows=[] and source_headers in source order; dry_run=true does the same.

Download the template, enter your contacts, upload the filled file and review the column mapping before applying it. The downloaded CSV uses UTF-8 with BOM and commas. If you convert the template to XLSX, preserve its original headers.

POST /v1/contacts/import rejects a file with no data rows with HTTP 422, business_rule_violation, subcode empty_import and param file. No import record is created and no work is queued. Fill in the template and retry.

Both operations still require contacts:write. MCP preview_contacts_import and import_contacts follow the same distinction between preview and apply.

Updated endpoints2

EndpointDescription
POST/v1/contacts/import/previewPreview a contact import
POST/v1/contacts/importImport contacts