---
title: "Partial updates"
description: "By default a PUT replaces every field on a record. Pass partial=true to send only the fields you want to change."
canonical_url: https://developer.onepagecrm.com/api/partial-updates/
source: Markdown mirror of https://developer.onepagecrm.com/api/partial-updates/
---

By default, a `PUT` request replaces the whole record — any field you
leave out is treated as empty. Pass `partial=true` and only the fields in
your request body are changed; everything else is left as-is.

| Parameter | Type | Description |
| --- | --- | --- |
| `partial` | boolean | When `true`, update only the fields sent in the body |

## Example

Change just a contact's job title, leaving name, emails, and everything
else untouched:

```bash
curl -X PUT -u "USER_ID:API_KEY" \
  -H "Content-Type: application/json" \
  "https://app.onepagecrm.com/api/v3/contacts/CONTACT_ID.json?partial=true" \
  -d '{"job_title": "Head of Partnerships"}'
```

Without `partial=true`, the same request would blank out every field you
didn't include.

## Tips

- **Reach for `partial=true` whenever you're changing a subset of fields.**
  It avoids having to fetch the record, merge your change, and send the
  whole thing back — and avoids accidentally clearing a field.
- **Full replacement is still the default.** If you *want* to overwrite the
  whole record, omit the flag and send every field.
- **Arrays replace, they don't merge.** Even with `partial=true`, sending
  `emails` replaces the whole emails array — include the ones you want to
  keep.

## What to read next

- **[API reference](/api/reference/)** — the writable fields for each resource.
- **[Errors](/api/errors/)** — what a rejected update looks like and how to fix it.
