---
title: "Update a contact (legacy flat URL shape)"
method: PATCH
path: "/v1/contacts/{projectId}/{email}"
tags: ["Contacts"]
---

# Update a contact (legacy flat URL shape)

`PATCH /v1/contacts/{projectId}/{email}`

## Request

- Base URL: `https://api.bluefox.email`
- URL: `https://api.bluefox.email/v1/contacts/{projectId}/{email}`
- Auth: HTTP bearer

Legacy flat URL shape, kept for backward compatibility - identical behavior to PATCH /v1/projectId/{projectId}/contacts/{email} above. Accepts an API key or a whitelisted Origin header.

## Path parameters

- `projectId` string, required
- `email` string, required

## Request body

- object
  - `email` string
  - `name` string
  - `tags` string[]

## Response `200`

OK

- object
  - `status` integer
  - `result` Contact: Custom contact field values are sent/received as flat top-level keys matching the field's name, not nested under a "customFields" object - e.g. after creating a field named "plan" via POST /v1/projectId/{projectId}/contacts/fields, set it with `{ "email": "x@y.com", "plan": "pro" }`. A key that does not match any registered field name is silently dropped (not an error) - it will not appear in the response, so a typo in a custom field name fails silently.
    - `_id` string
    - `email` string
    - `name` string
    - `tags` string[]
    - `_lists` string[]: Names of subscriber lists this contact belongs to.
    - `createdAt` string, date-time
    - `updatedAt` string, date-time

## Other responses

- `400`: Invalid request body or query - every violation found (missing/invalid/unexpected fields) is reported in one response, semicolon-separated, not just the first one hit.
- `403`: Missing or invalid API key
- `404`: Contact not found
- `405`: The operation is blocked by a business rule (e.g. the resource is still in use)

---

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