---
title: "Update a volunteer"
method: PATCH
path: "/api/v1/contacts/{id}"
tags: ["Contacts"]
---

# Update a volunteer

`PATCH /api/v1/contacts/{id}`

## Request

- Base URL: `https://volunteerreminder.com`
- URL: `https://volunteerreminder.com/api/v1/contacts/{id}`
- Auth: HTTP bearer

Partial update — only the fields present in the body are changed. Requires `contacts:write`.

## Path parameters

- `id` integer, required: Contact id.

## Request body

- ContactUpdateRequest
  - `consent_attested` boolean: Required to be `true` when any contact in this request has a `mobile_phone`. By setting it you affirm: "I confirm these volunteers gave their mobile number to our organization and agreed to receive shift reminder texts from us, sent through VolunteerReminder, and that I can show how they agreed if asked." The affirmation is recorded with your API key id and the time, and is what we produce if a carrier audits our messaging. Omit for email-only contacts.
  - `full_name` string: Display name. Omit to leave unchanged.
  - `first_name` string, nullable: First name. Omit to leave unchanged; `null` clears it.
  - `last_name` string, nullable: Last name. Omit to leave unchanged; `null` clears it.
  - `email_address` string, email, nullable: Email address. Omit to leave unchanged; `null` clears it.
  - `mobile_phone` string, nullable: Mobile phone number, used for SMS reminders. Accepts E.164 (`+15125550100`) or a plain 10-digit US/Canada number; normalized to E.164 on save. Send `null` or `""` to clear it.
  - `land_phone` string, nullable: Landline phone number. Omit to leave unchanged; `null` clears it.
  - `group_id` integer, nullable: Id of an existing group on this account. Omit to leave unchanged; `null` un-groups the contact.
  - `notes` string, nullable: Free-text notes about the contact.

## Response `200`

The updated contact.

- Contact
  - `id` number, required: Contact id.
  - `full_name` string, required: Display name, shown on the roster and in reminder text.
  - `first_name` string, nullable, required: First name, or `null` if not recorded separately.
  - `last_name` string, nullable, required: Last name, or `null` if not recorded separately.
  - `email_address` string, nullable, required: Email address reminders may be sent to, or `null`.
  - `mobile_phone` string, nullable, required: Mobile phone in E.164 format, used for SMS reminders, or `null`.
  - `land_phone` string, nullable, required: Landline phone number (not SMS-capable, informational only), or `null`.
  - `group_id` number, nullable, required: Id of the group this contact belongs to, or `null`.
  - `group_name` string, nullable, required: Display name of the group, or `null` when ungrouped.
  - `notes` string, nullable, required: Free-text notes about the contact, or `null`.
  - `created_at` number, required: Epoch milliseconds (UTC) the contact was created.

## Other responses

- `400`: The request failed schema validation (`validation_error`). On the import endpoints, also when the text is UTF-16 (Excel "Unicode Text"; `unsupported_encoding`): resend it as CSV UTF-8.
- `401`: Missing or invalid API key.
- `403`: The API key lacks a scope required by this endpoint.
- `404`: The requested resource does not exist.

---

[API](https://skmtc.dev/volunteerreminder/apis/volunteerreminder-api.md) · [All operations](https://skmtc.dev/volunteerreminder/apis/volunteerreminder-api/llms.txt) · [OpenAPI document](https://skmtc.dev/volunteerreminder/apis/volunteerreminder-api/revisions/f8e7e26ba96f?raw)
