> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gomry.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Contact

> Create a new contact in your organization

# Create Contact

Creates a new contact in your organization. At least one of `email` or `phone_number` is required.

If a contact with the same email already exists, the endpoint returns `409 Conflict` with the existing contact data.

## Request Body

<ParamField body="email" type="string">
  Email address. Will be normalized to lowercase. Must be a valid email format.

  At least one of `email` or `phone_number` is required.
</ParamField>

<ParamField body="phone_number" type="string">
  Phone number in international format (e.g., `+1234567890`).

  At least one of `email` or `phone_number` is required.
</ParamField>

<ParamField body="first_name" type="string">
  First name.
</ParamField>

<ParamField body="last_name" type="string">
  Last name.
</ParamField>

<ParamField body="job_title" type="string">
  Job title.
</ParamField>

<ParamField body="company" type="string">
  Company name.
</ParamField>

<ParamField body="university" type="string">
  University name.
</ParamField>

<ParamField body="gender" type="string">
  Gender.
</ParamField>

<ParamField body="birthday" type="string">
  Birthday (any string format, e.g., `1990-01-15`).
</ParamField>

<ParamField body="location" type="string">
  Location (e.g., `New York, NY`).
</ParamField>

<ParamField body="linkedin" type="string">
  LinkedIn URL.
</ParamField>

<ParamField body="instagram" type="string">
  Instagram handle or URL.
</ParamField>

<ParamField body="twitter" type="string">
  Twitter handle or URL.
</ParamField>

<ParamField body="github" type="string">
  GitHub handle or URL.
</ParamField>

<ParamField body="website" type="string">
  Website URL.
</ParamField>

<ParamField body="tags" type="string[]">
  Array of tags to assign to the contact.
</ParamField>

## Response

Returns the created contact object with a `201 Created` status.

<ResponseField name="data" type="object">
  The created contact object (same schema as [Get Contact](/api-reference/contacts/get-contact)).
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST \
    -H "X-API-KEY: your_api_key" \
    -H "Content-Type: application/json" \
    -d '{"email": "jane@example.com", "first_name": "Jane", "last_name": "Doe", "tags": ["speaker"]}' \
    "https://www.gomry.com/api/v1/contacts"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://www.gomry.com/api/v1/contacts", {
    method: "POST",
    headers: {
      "X-API-KEY": "your_api_key",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      email: "jane@example.com",
      first_name: "Jane",
      last_name: "Doe",
      tags: ["speaker"],
    }),
  });
  const { data } = await response.json();
  ```
</RequestExample>

<ResponseExample>
  ```json 201 theme={null}
  {
    "data": {
      "id": "AbCdEfGhIjKlMnOpQrSt",
      "first_name": "Jane",
      "last_name": "Doe",
      "email": "jane@example.com",
      "phone_number": null,
      "status": "active",
      "job_title": null,
      "company": null,
      "university": null,
      "gender": null,
      "birthday": null,
      "location": null,
      "linkedin": null,
      "instagram": null,
      "twitter": null,
      "github": null,
      "website": null,
      "tags": ["speaker"],
      "created_at": "2025-07-15T10:00:00.000Z",
      "updated_at": "2025-07-15T10:00:00.000Z"
    }
  }
  ```

  ```json 409 theme={null}
  {
    "error": "A contact with this email already exists",
    "data": {
      "id": "ExistingContactId",
      "first_name": "Jane",
      "email": "jane@example.com",
      "..."
    }
  }
  ```

  ```json 400 theme={null}
  {
    "error": "Validation failed",
    "details": {
      "formErrors": ["At least one of email or phone_number is required"],
      "fieldErrors": {}
    }
  }
  ```
</ResponseExample>
