---
title: "Update Contact"
method: PUT
path: "/campaigns/v1/contacts/{contact_id}"
tags: ["Contacts"]
---

# Update Contact

`PUT /campaigns/v1/contacts/{contact_id}`

Update a contact by ID.
- **contact_id**: The ID of the contact to update.
- **body**: The fields to update.

## Path parameters

- `contact_id` string, required

## Request body

- ContactUpdateRequest
  - `first_name` string, nullable — Contact's first name
  - `last_name` string, nullable — Contact's last name
  - `phone_number` string, nullable — Contact's phone number
  - `email` string, nullable — Contact's email address
  - `dob` string, nullable — Contact's date of birth in YYYY-MM-DD format
  - `notification_preferences` NotificationPreferences — Notification preferences
    - `call` ChannelPreference
      - `enabled` boolean — Whether this channel is opted in
      - `dnd` DNDEntry[], nullable — Per-resource DND settings keyed by resource ID
        - `sourceId` string, required — Source ID that set the DND
        - `enabled` boolean, required — Whether DND is active for this resource
        - `sourceType` 'team' | 'assistant' | 'campaign' | 'workflow' | 'other', required
        - `sourceName` string, required — Source name that set the DND
        - `reason` string, required — Reason for setting DND
        - `until` string, date-time, nullable — DND expiry time; None means indefinite
    - `sms` ChannelPreference
      - `enabled` boolean — Whether this channel is opted in
      - `dnd` DNDEntry[], nullable — Per-resource DND settings keyed by resource ID
        - `sourceId` string, required — Source ID that set the DND
        - `enabled` boolean, required — Whether DND is active for this resource
        - `sourceType` 'team' | 'assistant' | 'campaign' | 'workflow' | 'other', required
        - `sourceName` string, required — Source name that set the DND
        - `reason` string, required — Reason for setting DND
        - `until` string, date-time, nullable — DND expiry time; None means indefinite
    - `email` ChannelPreference
      - `enabled` boolean — Whether this channel is opted in
      - `dnd` DNDEntry[], nullable — Per-resource DND settings keyed by resource ID
        - `sourceId` string, required — Source ID that set the DND
        - `enabled` boolean, required — Whether DND is active for this resource
        - `sourceType` 'team' | 'assistant' | 'campaign' | 'workflow' | 'other', required
        - `sourceName` string, required — Source name that set the DND
        - `reason` string, required — Reason for setting DND
        - `until` string, date-time, nullable — DND expiry time; None means indefinite

## Response `200`

Successful Response

- unknown

## Other responses

- `422` — Validation Error

---

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