---
title: "Import Contacts"
method: POST
path: "/api/v1/contacts/import"
tags: ["Contacts"]
---

# Import Contacts

`POST /api/v1/contacts/import`

## Headers

- `X-VCard-Preview-Hash` string, nullable

## Response `200`

Successful Response

- ContactImportResponse
  - `created_count` integer, required
  - `error_count` integer, required
  - `results` ContactImportResponseItem[], required
    - `index` integer, required
    - `status` 'created' | 'conflict' | 'error', required
    - `contact` ContactResponse
      - `id` string, uuid, required
      - `organization_id` string, required
      - `preferred_name` string, nullable, required
      - `name_prefix` string, nullable, required
      - `given_name` string, nullable, required
      - `middle_name` string, nullable, required
      - `family_name` string, nullable, required
      - `name_suffix` string, nullable, required
      - `company_name` string, nullable, required
      - `job_title` string, nullable, required
      - `birthday` string, date, nullable, required
      - `notes` string, nullable, required
      - `emails` ContactEmailItem[], required
        - `value` string, email, required
        - `label` string, nullable
        - `is_primary` boolean
      - `phones` ContactPhoneItemResponse[], required
        - `value_e164` string, required
        - `label` string, nullable
        - `is_primary` boolean
      - `websites` ContactWebsiteItem[], required
        - `url` string, required
        - `label` string, nullable
      - `dates` ContactDateItem[], required
        - `date` string, date, required
        - `label` string, required
      - `addresses` ContactAddressItem[], required
        - `street` string, nullable
        - `city` string, nullable
        - `region` string, nullable
        - `postal` string, nullable
        - `country` string, nullable
        - `label` string, nullable
      - `custom_fields` ContactCustomFieldItem[], required
        - `label` string, required
        - `value` string, required
      - `creation_source` 'manual' | 'vcard' | 'communication' | 'backfill', required
      - `review_status` 'unreviewed' | 'confirmed', required
      - `reviewed_at` string, date-time, nullable, required
      - `reviewed_by` string, nullable, required
      - `preferred_name_source` 'manual' | 'vcard' | 'provider' | 'mail_header' | 'identifier_fallback', required
      - `preferred_name_locked_at` string, date-time, nullable, required
      - `created_by_identity_id` string, uuid, nullable, required
      - `merged_into_contact_id` string, uuid, nullable, required
      - `is_auto_created` boolean, required
      - `is_confirmed` boolean, required
      - `status` 'active' | 'paused' | 'deleted', required
      - `created_at` string, date-time, required
      - `updated_at` string, date-time, required
      - `access` ContactAccessResponse[] — Raw ``contact_access`` rows for this contact, inlined so the console can skip a follow-up ``GET /contacts/{id}/access`` per row. Either a single wildcard row (``identity_id=null``), an explicit per-identity list, or empty when the contact has zero grants (human-only via ``access_identity_ids=[]``). Always populated by the list and single-contact read paths; empty does not mean 'not loaded'.
        - `id` string, uuid, required
        - `contact_id` string, uuid, required
        - `identity_id` string, uuid, nullable, required
        - `created_at` string, date-time, required
    - `error` string, nullable
    - `conflicting_contact_id` string, uuid, nullable

## Other responses

- `422` — Validation Error
- `4XX` — Client error with Support Agent information.
- `5XX` — Server error with Support Agent information.

---

[API](https://skmtc.dev/inkbox/apis/inkbox-api.md) · [All operations](https://skmtc.dev/inkbox/apis/inkbox-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/inkbox/inkbox-api/revisions/31f357e7e6f8/schema)
