Imports

Import Contacts

Import the file's rows as contacts into a list. THIS WRITES REAL RECORDS.

Two separate authorisations, both resolved for the key's principal and both required - neither implies the other:

  • may this caller CREATE contacts at all (enforce_object_create);
  • may they WRITE to this particular list (verify_list_access).

update_policy defaults to override: a row matching an existing contact REPLACES that contact's fields rather than only filling blanks. Send autofill if the file should not win over what is already there.

post/imports/{import_id}/contacts

Request

  • Base URL: https://be.graph8.com/api/v1
  • URL: https://be.graph8.com/api/v1/imports/{import_id}/contacts
  • Auth: HTTP bearer

Path parameters

import_idstring required

Id returned by the upload.

Headers

Authorizationstring nullable
X-Target-Org-Idstring nullable

Request body

list_idinteger required

Audience list the contacts land in. REQUIRED - an import with no destination has nowhere to put the rows, and the caller needs WRITE access to this list, not just read.

column_mappingobject

Source column -> graph8 field. An EMPTY mapping is legal and means the importer falls back to its own header matching, which is why this is not required - but an unmapped column the importer cannot recognise is dropped silently, so preview first.

update_policy'autofill' | 'override'

What happens when a row matches an existing contact. override replaces the field; autofill only fills one that is currently EMPTY. The default is override, matching the app - so an import run without thinking about this WILL overwrite existing data.

enrich_from_graph8boolean

Match imported rows against the graph8 index and fill missing fields - contacts by work email or LinkedIn URL, companies by domain. Off by default because it is extra work the caller may not want on a file they already trust.

Response

Successful Response

Changes

No recorded changes to this operation across all 2 revisions of this API.