---
title: "Create a Contact"
method: POST
path: "/contacts"
tags: ["Contacts"]
---

# Create a Contact

`POST /contacts`

This endpoint doesn't consume Apollo credits. Learn more about [API pricing and credits](https://docs.apollo.io/docs/api-pricing).

<a href="https://knowledge.apollo.io/hc/en-us/articles/5995459280525-View-and-Edit-Contacts" target="_blank">Contacts</a> are people saved in Apollo.<br><br>Use the Create a Contact endpoint to add a new contact to your team's Apollo  account.<br><br>By default, Apollo doesn't apply deduplication processes when you create a new contact via API. If your entry has the same name, email address, or other details as an existing contact, Apollo creates a new contact instead of updating the existing contact. To enable deduplication and prevent duplicate contacts, set the <code>run_dedupe</code> parameter to <code>true</code>. <br><br>To update an existing contact, use the <a href="https://docs.apollo.io/reference/update-a-contact">Update a Contact endpoint</a> instead.

## Request body

- object
  - `first_name` string — The first name of the contact you want to create. Example: `Tim`
  - `last_name` string — The last name of the contact you want to create. Example: `Zheng`
  - `organization_name` string — The name of the contact's employer (company). Example: `apollo`
  - `title` string — The current job title that the contact holds. Example: `senior research analyst`
  - `account_id` string — The Apollo ID for the account. Example: `63f53afe4ceeca00016bdd2f`
  - `email` string — The email address of the contact. Example: `example@email.com`
  - `website_url` string — The corporate website URL. Example: `https://www.apollo.io/`
  - `label_names` string[] — Lists to which the contact belongs.
  - `contact_stage_id` string — The Apollo ID for the contact stage. Example: `6095a710bd01d100a506d4ae`
  - `present_raw_address` string — The personal location for the contact. Example: `Atlanta, United States`
  - `direct_phone` string — The primary phone number. Example: `555-555-0133`
  - `corporate_phone` string — The work/office phone number. Example: `+44 7700 900852`
  - `mobile_phone` string — The mobile phone number. Example: `555-555-0133`
  - `home_phone` string — The home phone number. Example: `555-555-0133`
  - `other_phone` string — Alternative phone number. Example: `555-555-0133`
  - `typed_custom_fields` object — Add information to <a href="https://knowledge.apollo.io/hc/en-us/articles/4412498825869-Create-Custom-Contact-Fields" target="_blank">custom fields</a> in Apollo. <br><br><b>Your custom fields are unique to your team's Apollo account. This means that the examples in this documentation may not work for your testing purposes.</b> <br><br>To utilize this parameter successfully, call the <a href="https://docs.apollo.io/reference/get-a-list-of-all-custom-fields">Get a List of All Custom Fields</a> endpoint and identify the `id` value for the custom field, as well as the appropriate data type. For example, if a custom field accepts picklist entries, you need to pass the accompanying `id` value for the picklist entry that you want to use as the input value. <br><br><b>Example</b>: When the <a href="https://docs.apollo.io/reference/get-a-list-of-all-custom-fields">Get a List of All Custom Fields</a> endpoint returns an `id` of field: * `"60c39ed82bd02f01154c470a"` (datetime) then the value passed should be: `{"60c39ed82bd02f01154c470a": "2025-08-07"}`
  - `run_dedupe` boolean — Set to `true` to enable deduplication logic that prevents creating duplicate contacts. When enabled, Apollo will check for existing contacts with matching email addresses, names, or other identifying information and return the existing contact instead of creating a duplicate. The default value is `false`. <br><br>When deduplication is enabled, performance may be slightly impacted due to the additional validation checks, but this ensures data integrity and prevents duplicate entries in your database.

## Response `200`

200

- object
  - `contact` object
    - `contact_roles` unknown[]
      - unknown
    - `id` string
    - `first_name` string
    - `last_name` string
    - `name` string
    - `linkedin_url` unknown
    - `title` string
    - `contact_stage_id` string
    - `owner_id` string
    - `creator_id` string
    - `person_id` unknown
    - `email_needs_tickling` unknown
    - `organization_name` string
    - `source` string
    - `original_source` string
    - `organization_id` string
    - `headline` unknown
    - `photo_url` unknown
    - `present_raw_address` string
    - `linkedin_uid` unknown
    - `extrapolated_email_confidence` number, nullable
    - `salesforce_id` unknown
    - `salesforce_lead_id` unknown
    - `salesforce_contact_id` unknown
    - `salesforce_account_id` unknown
    - `crm_owner_id` unknown
    - `created_at` string
    - `emailer_campaign_ids` unknown[]
      - unknown
    - `direct_dial_status` unknown
    - `direct_dial_enrichment_failed_at` unknown
    - `email_status` string
    - `email_source` unknown
    - `account_id` string
    - `last_activity_date` unknown
    - `hubspot_vid` unknown
    - `hubspot_company_id` unknown
    - `crm_id` unknown
    - `sanitized_phone` string
    - `merged_crm_ids` unknown
    - `updated_at` string
    - `queued_for_crm_push` boolean
    - `suggested_from_rule_engine_config_id` unknown
    - `email_unsubscribed` unknown
    - `label_ids` string[]
    - `has_pending_email_arcgate_request` boolean
    - `has_email_arcgate_request` boolean
    - `existence_level` string
    - `email` string
    - `email_from_customer` boolean
    - `typed_custom_fields` object
    - `custom_field_errors` object
    - `crm_record_url` unknown
    - `email_status_unavailable_reason` unknown
    - `email_true_status` string
    - `updated_email_true_status` boolean
    - `contact_rule_config_statuses` unknown[]
      - unknown
    - `source_display_name` string
    - `twitter_url` unknown
    - `contact_campaign_statuses` object[] — Array of campaign statuses for the contact, showing their participation in various email sequences
      - `id` string, required — Unique identifier for this contact campaign status record
      - `emailer_campaign_id` string, required — ID of the email sequence (emailer campaign) this status belongs to
      - `send_email_from_user_id` string, required — ID of the user who is sending emails for this contact in the sequence
      - `inactive_reason` string, nullable — Reason why the contact is inactive in this sequence, if applicable
      - `status` 'active' | 'failed' | 'paused' | 'finished', required — Current status of the contact in this email sequence
      - `added_at` string, date-time, required — Timestamp when the contact was added to this sequence
      - `added_by_user_id` string, required — ID of the user who added this contact to the sequence
      - `finished_at` string, date-time, nullable — Timestamp when the contact finished/completed the sequence
      - `paused_at` string, date-time, nullable — Timestamp when the contact was paused in the sequence
      - `auto_unpause_at` string, date-time, nullable — Scheduled timestamp for automatically unpausing the contact
      - `send_email_from_email_address` string, nullable — Specific email address used to send emails to this contact
      - `send_email_from_email_account_id` string, required — ID of the email account used to send emails to this contact
      - `manually_set_unpause` boolean, nullable — Whether the unpause was manually set by a user
      - `failure_reason` 'hard_bounced' | 'spam_blocked' | 'bounced' | 'past_date_failure', nullable — Specific reason for failure if status is 'failed'
      - `current_step_id` string, nullable — ID of the current step in the sequence that the contact is on
      - `in_response_to_emailer_message_id` string, nullable — ID of the emailer message this campaign status is in response to
      - `cc_emails` string[], nullable — Email addresses to CC when sending emails to this contact
      - `bcc_emails` string[], nullable — Email addresses to BCC when sending emails to this contact
      - `to_emails` string[], nullable — Additional email addresses to include in TO field when sending emails
      - `current_step_position` integer, nullable — Position number of the current step in the sequence (1-based indexing)
    - `contact_emails` unknown[]
      - unknown
    - `next_contact_id` unknown
    - `time_zone` string
    - `city` string
    - `state` string
    - `country` string
    - `intent_strength` unknown
    - `show_intent` boolean
    - `phone_numbers` object[]
      - `raw_number` string
      - `sanitized_number` string
      - `type` string
      - `position` integer
      - `status` string
      - `dnc_status` unknown
      - `dnc_other_info` unknown
      - `dialer_flags` unknown
    - `account_phone_note` unknown
    - `free_domain` boolean
    - `is_likely_to_engage` boolean
    - `email_domain_catchall` boolean
  - `labels` object[]
    - `id` string
    - `modality` string
    - `cached_count` integer
    - `name` string
    - `created_at` string
    - `updated_at` string
    - `user_id` string

## Other responses

- `401` — 401
- `422` — 422
- `429` — 429

---

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