---
title: "Update a contact"
method: PUT
path: "/contacts/{contactId}"
tags: ["contacts"]
---

# Update a contact

`PUT /contacts/{contactId}`

Update a contact by its ID. All fields are mandatory except the `numbers` array. If the `numbers` array is provided, existing numbers will be replaced by the ones in the request body. If omitted, numbers are left unchanged.

**Permission:** `Contacts Write` required.

**Monitoring impact:** None — contacts are always scoped to your own address book.

## Path parameters

- `contactId` integer, required

## Request body

- NewContact
  - `firstname` string
  - `lastname` string
  - `company` string
  - `is_shared` boolean
  - `numbers` NewNumberContact[]
    - `number` integer — Phone number (E.164 format)
    - `type` 'home' | 'office' | 'mobile' | 'fax' | 'other'

## Response `200`

Successful operation — the updated contact is returned.

- NewContact
  - `firstname` string
  - `lastname` string
  - `company` string
  - `is_shared` boolean
  - `numbers` NewNumberContact[]
    - `number` integer — Phone number (E.164 format)
    - `type` 'home' | 'office' | 'mobile' | 'fax' | 'other'

## Other responses

- `304` — Contact was not modified — no changes detected.
- `400` — Invalid request body — check required fields.
- `401` — Unauthorized — missing or invalid API token, or missing `Contacts Write` permission.
- `404` — Contact not found — no contact matches the provided ID.
- `500` — Internal server error.

---

[API](https://skmtc.net/ringover/apis/ringover-public-api.md) · [All operations](https://skmtc.net/ringover/apis/ringover-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/ringover/ringover-public-api/revisions/9da73dd2f99e/schema)
