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

# Create a Contact

`POST /v1/contacts/`

Creates a new contact.

**Identifiers** — either `email` or `linkedin_url` **must** be provided. If only `linkedin_url` is supplied, you must also provide `account_id` or `domain` so the contact can be associated with an account.

**Account resolution priority** — Monaco resolves the contact's account in this order:
1. `account_id` (if provided)
2. `domain` (if provided)
3. the domain parsed from `email`

**Enrichment** — on creation, Monaco synchronously enriches the contact (name, title, company association, etc.) and, if needed, resolves or creates the associated account. This can make create requests take several seconds to complete; clients should use generous timeouts (10s+) and avoid issuing creates on hot paths.

## Request body

- ContactCreateRequest — Request body for creating a contact via POST or upserting via PUT. Custom fields can be passed as additional keys prefixed with ``custom_field_``.
  - `email` string, nullable — Email address of the contact. Either email or linkedin_url is required.
  - `linkedin_url` string, nullable — LinkedIn profile URL. Either email or linkedin_url is required.
  - `first_name` string, nullable — First name of the contact
  - `last_name` string, nullable — Last name of the contact
  - `title` string, nullable — Job title of the contact
  - `phone_number` string, nullable — Phone number of the contact
  - `location` string, nullable — Location of the contact
  - `account_id` string, uuid, nullable — ID of the account to associate the contact with
  - `domain` string, nullable — Domain of the contact's company (used for account resolution)
  - `do_not_contact` boolean, nullable — Whether the contact has opted out of outreach
  - `tags` string[], nullable — List of tag IDs to associate with the contact

## Response `200`

Successful Response

- PublicItemResponseContactResponse
  - `data` ContactResponse, required — Contact resource. Custom fields appear as additional keys prefixed with ``custom_field_``.
    - `id` string, required — Unique identifier for the contact
    - `account_id` string, nullable — ID of the associated account
    - `first_name` string, nullable — First name of the contact
    - `last_name` string, nullable — Last name of the contact
    - `email` string, nullable — Email address of the contact
    - `title` string, nullable — Job title of the contact
    - `phone_number` string, nullable — Phone number of the contact
    - `linkedin_url` string, nullable — LinkedIn profile URL
    - `location` string, nullable — Location of the contact
    - `source` string, nullable — Source from which the contact was added
    - `do_not_contact` boolean — Whether the contact has opted out of outreach
    - `notes` string, nullable — Notes about the contact
    - `scoring` ApiPublicApiSchemasContactsScoringInfo
      - `heat_score` string, nullable — Heat score tier
    - `tags` string[] — List of tag names associated with the contact
    - `created_at` string, date-time, required — Date and time the contact was created
    - `updated_at` string, date-time, required — Date and time the contact was last updated
  - `meta` ResponseMeta
    - `timestamp` string, date-time — Server timestamp of the response

## Other responses

- `4XX` — Client error

---

[API](https://skmtc.net/monaco/apis/monaco-public-api.md) · [All operations](https://skmtc.net/monaco/apis/monaco-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/monaco/monaco-public-api/versions/ec4d9b2b035b/schema)
