<!-- Source: https://docs.vinsi.ai/api-docs/crm-contact-create -->
# Create Contact

Create a CRM contact. No field is strictly required; when email is empty a placeholder address is stored. Defaults: leadStatus New, type lead, source Website. companyId must be a company in your organization (the company name is then copied from it) and ownerId must be a user in your organization (otherwise it is ignored). dedupBy controls duplicate detection: email (default), name, company, phone, or none. A duplicate returns 409. Responds 201 with the created contact and runs any contact_created CRM workflows.

```http
POST https://dashboard.vinsi.ai/api/crm/contacts
```

## Authentication

Send your API key in the `x-api-key` header. Create keys in the VINSI dashboard under Settings → API Keys.

## Headers

| Name | Type | Required |
|---|---|---|
| Content-Type | string | yes (application/json) |
| x-api-key | string | yes |

## Example request body

```json
{
  "firstName": "Alex",
  "lastName": "Morgan",
  "email": "alex.morgan@example.com",
  "phone": "+15555550142",
  "ext": "",
  "email2": "",
  "phone2": "",
  "phone2Ext": "",
  "phone3": "",
  "phone3Ext": "",
  "title": "Office Manager",
  "company": "Acme Dental",
  "companyId": 318,
  "leadStatus": "New",
  "type": "lead",
  "source": "Website",
  "disposition": "",
  "ownerId": "cmexampleuser0000000000001",
  "address": "100 Main St",
  "city": "San Diego",
  "state": "CA",
  "zip": "92101",
  "country": "US",
  "notes": "Asked for a callback next week.",
  "dedupBy": "email"
}
```

## Example request

```bash
curl -X POST 'https://dashboard.vinsi.ai/api/crm/contacts' \
  -H 'x-api-key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"firstName":"Alex","lastName":"Morgan","email":"alex.morgan@example.com","phone":"+15555550142","ext":"","email2":"","phone2":"","phone2Ext":"","phone3":"","phone3Ext":"","title":"Office Manager","company":"Acme Dental","companyId":318,"leadStatus":"New","type":"lead","source":"Website","disposition":"","ownerId":"cmexampleuser0000000000001","address":"100 Main St","city":"San Diego","state":"CA","zip":"92101","country":"US","notes":"Asked for a callback next week.","dedupBy":"email"}'
```

## Example response

```json
{
  "id": 1042,
  "organizationId": "cmexampleorg00000000000001",
  "firstName": "Alex",
  "lastName": "Morgan",
  "email": "alex.morgan@example.com",
  "phone": "+15555550142",
  "company": "Acme Dental",
  "leadStatus": "New",
  "type": "lead",
  "source": "Website",
  "notes": "Asked for a callback next week.",
  "ownerId": "cmexampleuser0000000000001",
  "createdAt": "2026-09-10T17:22:57.000Z",
  "updatedAt": "2026-09-12T15:04:11.000Z",
  "ext": "",
  "disposition": "",
  "lastWorkDate": null,
  "state": "CA",
  "phone2": "",
  "phone2Ext": "",
  "phone3": "",
  "phone3Ext": "",
  "title": "Office Manager",
  "isUnsubscribed": false,
  "unsubscribedAt": null,
  "email2": "",
  "companyId": 318,
  "address": "100 Main St",
  "city": "San Diego",
  "zip": "92101",
  "country": "US",
  "avatarUrl": null,
  "phoneNorm": "5555550142",
  "phone2Norm": null,
  "phone3Norm": null
}
```

