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

Partially update a CRM contact. Only fields present in the body are changed. Setting disposition also sets lastWorkDate to now. Send companyId or ownerId as null to clear them. Changing email to one already used in your organization returns 409. Runs lead_status_changed, disposition_changed or contact_updated CRM workflows and returns the updated contact; _workflowDebug lists the workflows that ran.

```http
PUT https://dashboard.vinsi.ai/api/crm/contacts/{contactId}
```

## 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 |

## Path parameters

| Name | Example |
|---|---|
| contactId | 1042 |

## 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": "Contacted",
  "type": "lead",
  "source": "Website",
  "disposition": "Callback Requested",
  "ownerId": "cmexampleuser0000000000001",
  "address": "100 Main St",
  "city": "San Diego",
  "state": "CA",
  "zip": "92101",
  "country": "US",
  "notes": "Asked for a callback next week.",
  "isUnsubscribed": false
}
```

## Example request

```bash
curl -X PUT 'https://dashboard.vinsi.ai/api/crm/contacts/1042' \
  -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":"Contacted","type":"lead","source":"Website","disposition":"Callback Requested","ownerId":"cmexampleuser0000000000001","address":"100 Main St","city":"San Diego","state":"CA","zip":"92101","country":"US","notes":"Asked for a callback next week.","isUnsubscribed":false}'
```

## Example response

```json
{
  "id": 1042,
  "organizationId": "cmexampleorg00000000000001",
  "firstName": "Alex",
  "lastName": "Morgan",
  "email": "alex.morgan@example.com",
  "phone": "+15555550142",
  "company": "Acme Dental",
  "leadStatus": "Contacted",
  "type": "lead",
  "source": "Website",
  "notes": "Asked for a callback next week.",
  "ownerId": "cmexampleuser0000000000001",
  "createdAt": "2026-09-10T17:22:57.000Z",
  "updatedAt": "2026-09-16T16:40:00.000Z",
  "ext": "",
  "disposition": "Callback Requested",
  "lastWorkDate": "2026-09-16T16:40:00.000Z",
  "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,
  "_workflowDebug": []
}
```

