Import contacts from CSV
Reads a CSV as contacts: the same import the dashboard runs, and the same one row a lead posted to Add a contact goes through.
The header row is matched by name, so Phone, phone number and Mobile all find the number, and one Name column is split on the first space rather than leaving the agent to greet “Ana Diaz Moreno”. A column whose header matches one of your custom fields is stored as that field.
A number already in the sub-account updates that contact rather than adding it twice, and a blank cell never erases a stored value.
The summary counts what happened and names every row that did not land, by line number and reason, so a 2,000-row file tells you which three to fix. suppressedFromHistory counts the rows that came in already on do-not-call.
Cookie-auth callers must send the x-csrf-token header.
Required API key scope: contacts:write.
Authorizations
Send your API key as Authorization: Bearer YOUR_API_KEY.
Query Parameters
The sub-account. It is the only thing that identifies the tenant on these routes, and it is re-checked against your access on every call. A sub-account that keeps its contacts in a CRM answers 400.
Body
The file contents, as text.
