---
title: "Update a contact"
method: PATCH
path: "/v3/contacts/{id}"
tags: ["Contacts"]
---

# Update a contact

`PATCH /v3/contacts/{id}`

Updates a contact's default channel and/or opt-out status. Inherited contacts cannot be updated.

## Path parameters

- `id` string, uuid, required

## Headers

- `Idempotency-Key` string
- `x-profile-id` string, uuid

## Request body

- SentDmServicesEndpointsCustomerAPIv3RequestsUpdateContactRequest — Request to update a contact
  - `sandbox` boolean — Sandbox flag - when true, the operation is simulated without side effects Useful for testing integrations without actual execution
  - `default_channel` string, nullable — Default messaging channel: "sms" or "whatsapp"
  - `opt_out` boolean, nullable — Whether the contact has opted out of messaging. Single source of truth — opt-out is per-contact, not per-channel.

## Response `200`

Contact updated successfully

- SentDmServicesEndpointsCustomerAPIv3ResponsesApiResponseOfContactResponse — Standard API response envelope for all v3 endpoints
  - `success` boolean — Indicates whether the request was successful
  - `data` SentDmServicesEndpointsCustomerAPIv3ResponsesContactResponse — Contact response for v3 API Uses snake_case for JSON property names
    - `id` string, uuid — Unique identifier for the contact
    - `phone_number` string — Phone number in original format
    - `format_e164` string — Phone number in E.164 format (e.g., +1234567890)
    - `format_international` string — Phone number in international format (e.g., +1 234-567-890)
    - `format_national` string — Phone number in national format (e.g., (234) 567-890)
    - `format_rfc` string — Phone number in RFC 3966 format (e.g., tel:+1-234-567-890)
    - `country_code` string — Country calling code (e.g., 1 for US/Canada)
    - `region_code` string — ISO 3166-1 alpha-2 country code (e.g., US, CA, GB)
    - `available_channels` string — Comma-separated list of available messaging channels (e.g., "sms,whatsapp")
    - `default_channel` string — Default messaging channel to use (e.g., "sms" or "whatsapp")
    - `opt_out` boolean — Whether the contact has opted out of messaging. Single source of truth — opt-out is per-contact, not per-channel.
    - `is_inherited` boolean — Whether this is an inherited contact (read-only)
    - `created_at` string, date-time — When the contact was created
    - `updated_at` string, date-time, nullable — When the contact was last updated
  - `error` SentDmServicesEndpointsCustomerAPIv3ResponsesApiError — Error information
    - `code` string — Machine-readable error code (e.g., "RESOURCE_001")
    - `message` string — Human-readable error message
    - `details` object, nullable — Additional validation error details (field-level errors)
    - `doc_url` string, nullable — URL to documentation about this error
  - `meta` SentDmServicesEndpointsCustomerAPIv3ResponsesApiMeta — Request and response metadata
    - `request_id` string — Unique identifier for this request (for tracing and support)
    - `timestamp` string, date-time — Server timestamp when the response was generated
    - `version` string — API version used for this request

## Other responses

- `400` — Invalid request - read-only contact or invalid channel
- `401` — Unauthorized - Invalid API credentials
- `403` — Forbidden
- `404` — Contact not found
- `500` — Internal server error

---

[API](https://skmtc.net/sentdm/apis/sent-dm-api-v3.md) · [All operations](https://skmtc.net/sentdm/apis/sent-dm-api-v3/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/sentdm/sent-dm-api-v3/versions/c451eca46f1b/schema)
