Stage 2 of the 2-step import.
www.), consults the caller’s blocklist (unless disabled), upserts against existing rows by domain, and inserts new rows tagged source: "import". Returns per-bucket counts. Partial update errors are swallowed (failed updates just don’t increment updated); an outright insert failure returns 500.
/api/lists/{id}/companies/import with other verbs. See the sibling page for related operations on the same resource.Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
List UUID
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Confirm a staged CSV company import. Domain uniqueness is used for upsert — existing rows in the same list are updated; new ones are inserted.
The normalized CSV text returned by the preview step. Re-parsed here so the client doesn't have to pass the file again.
Mapping from target field → source column name. Use the shape returned by the POST preview, optionally edited by the caller. Keys can include built-in fields, new:<name> (create new custom column), and column:<name> (reuse existing custom column).
When true (default), rows matching the caller's blocked_companies list are skipped. Counted separately in blockedSkipped.
Import completed. See counters for per-row outcomes.
Per-status counters for the confirm step. imported + updated + skipped + blockedSkipped may be less than total if parser-level errors dropped rows.
Count of new company rows inserted.
0 <= x <= 9007199254740991Count of existing company rows updated (matched on lowercased domain).
0 <= x <= 9007199254740991Count of rows with neither a name nor a domain.
0 <= x <= 9007199254740991Count of rows skipped because they matched the caller's blocklist. Always 0 when skipExistingCustomers was false.
0 <= x <= 9007199254740991Total non-empty data rows considered.
0 <= x <= 9007199254740991