---
title: "Change a contact (iCloud Contacts)"
method: POST
path: "/v1/icloud_contacts/update"
tags: ["write"]
---

# Change a contact (iCloud Contacts)

`POST /v1/icloud_contacts/update`

## Request

- Base URL: `https://muse.space`
- URL: `https://muse.space/v1/icloud_contacts/update`
- Auth: HTTP bearer

Change fields of a contact, keeping every field not named and everything else it holds, such as its photo; it fails if the contact changed since it was read.

## Request body

- ContactsUpdateInput
  - `id` string, required: The `id` of a contact from search.
  - `name` string: The name as shown.
  - `given_name` string, nullable: First name; null removes it.
  - `family_name` string, nullable: Last name; null removes it.
  - `organization` string, nullable: Organization; null removes it.
  - `job_title` string, nullable: Job title; null removes it.
  - `emails` object[]: Every email address it should have, the preferred one first: the list replaces the old one; [] removes all.
    - `address` string, required: The email address.
    - `label` string: What kind: work, home, mobile, or a word of their own.
  - `phones` object[]: Every phone number it should have, the preferred one first: the list replaces the old one; [] removes all.
    - `number` string, required: The number, as it should be dialled or shown.
    - `label` string: What kind: work, home, mobile, or a word of their own.
  - `addresses` object[]: Every postal address it should have, replacing the old ones; [] removes all.
    - `street` string: Street and number, as one line.
    - `city` string: Town or city.
    - `region` string: State, county or province.
    - `postal_code` string: Postal code.
    - `country` string: Country.
    - `label` string: What kind: work, home, mobile, or a word of their own.
  - `urls` string[]: Every web address it should have, replacing the old ones; [] removes all.
  - `birthday` string, date, nullable: Birthday as YYYY-MM-DD; null removes it.
  - `notes` string, nullable: Notes; null removes them.

## Response `200`

The result.

- ContactsUpdateOutput
  - `id` string, required
  - `name` string, required

## Other responses

- `401`: `unauthorized`, `token_revoked`, `token_expired`
- `403`: `forbidden`, `recipient_not_allowed`
- `404`: `not_found`
- `409`: `reconnect_required`, `changed_since_read`
- `413`: `too_large`
- `422`: `invalid_arguments`, `unreadable`
- `429`: `rate_limited`, `send_cap_reached`, `send_cooldown`
- `500`: `internal`
- `502`: `upstream_unavailable`, `upstream_rejected`, `delivery_unconfirmed`

---

[API](https://skmtc.dev/muse/apis/muse-space-tool-catalogue.md) · [All operations](https://skmtc.dev/muse/apis/muse-space-tool-catalogue/llms.txt) · [OpenAPI document](https://skmtc.dev/muse/apis/muse-space-tool-catalogue/revisions/8bef59003b3c?raw)
