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

# Update contact

`PUT /contacts/{contact_id}`

## Request

- Base URL: `https://app2.gettruss.io/api/v1`
- URL: `https://app2.gettruss.io/api/v1/contacts/{contact_id}`
- Auth: HTTP bearer

Updates a contact's name, client ID, tags, and its primary or secondary email, phone and address. Only the fields sent with a value change: blank or missing fields are left as they are, tags are added to the existing ones, and nothing is deleted. A primary_* value replaces the contact's primary email, phone or address; a secondary_* value replaces its oldest non-primary one. Either is added when the contact has none. Changing the primary email also changes the client portal login.

## Path parameters

- `contact_id` integer, required

## Request body

- ContactUpdate: Request body for PUT /contacts/{contact_id}. Every field is optional.
  - `contact` object
    - `first_name` string
    - `last_name` string
    - `client_id_number` string
    - `tag_list` string[]: Added to the contact's tags. A comma-separated string works too.
    - `primary_email` string, email
    - `secondary_email` string, email
    - `primary_phone` string: Any format; non-digits are ignored, as with POST /contacts.
    - `secondary_phone` string
    - `primary_address` ContactAddressUpdate: Only the fields sent change. A new address needs street_address.
      - `street_address` string
      - `city` string
      - `state` string: Two-letter state code
      - `zip` string: 12345 or 12345-6789
    - `secondary_address` ContactAddressUpdate: Only the fields sent change. A new address needs street_address.
      - `street_address` string
      - `city` string
      - `state` string: Two-letter state code
      - `zip` string: 12345 or 12345-6789

## Response `200`

The updated contact

- object
  - `data` ContactExtended
    - `id` integer
    - `first_name` string
    - `last_name` string
    - `nick_name` string
    - `company` string
    - `job_title` string
    - `client_id_number` string
    - `created_at` string, date-time
    - `updated_at` string, date-time
    - `tags` Tag[]
      - `id` integer
      - `name` string
    - `contact_emails` ContactEmail[]
      - `id` integer
      - `email` string
      - `primary` boolean
      - `created_at` string, date-time
      - `updated_at` string, date-time
    - `contact_phones` ContactPhone[]
      - `id` integer
      - `phone_number` string
      - `country_code` string
      - `country_phone_code` string
      - `phone_type` 'mobile' | 'home' | 'work' | 'fax' | 'office' | 'other'
      - `primary` boolean
      - `metadata` object
      - `created_at` string, date-time
      - `updated_at` string, date-time
    - `contact_addresses` ContactAddress[]
      - `id` integer
      - `street_address` string
      - `city` string
      - `state` string
      - `zip` string
      - `primary` boolean
      - `created_at` string, date-time
      - `updated_at` string, date-time
    - `entity_origins` Entity[]
      - `id` integer
      - `client_id_number` string
      - `name` string
      - `entity_type` string
      - `metadata` object: Additional metadata for the entity, contents may vary
      - `ein` string: Employer Identification Number (EIN)
      - `other_ids` object: Other identifying information, contents may vary
      - `created_at` string, date-time
      - `updated_at` string, date-time

## Other responses

- `403`: The user isn't allowed to edit contacts, or this contact
- `404`: Contact not found
- `409`: Another contact already has the new primary email as theirs
- `422`: A value didn't pass validation (e.g. an invalid email or ZIP code); nothing was saved

## Changes

- **2026-11-02** `3c722bf0ce3d`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/gettruss/apis/api-v1/changes/contacts/:contact_id/put.md)

---

[API](https://skmtc.dev/gettruss/apis/api-v1.md) - [All operations](https://skmtc.dev/gettruss/apis/api-v1/llms.txt) - [OpenAPI document](https://skmtc.dev/gettruss/apis/api-v1/revisions/3c722bf0ce3d?raw)
