---
title: "Update a fan by external ID"
method: PATCH
path: "/v1/fans/{externalId}"
tags: ["fans"]
---

# Update a fan by external ID

`PATCH /v1/fans/{externalId}`

## Path parameters

- `externalId` string, required

## Request body

- object
  - `metadata` object, required — Integration-defined metadata to merge.

## Response `200`

The updated contact-safe fan record.

- object
  - `fan` object, required — A customer-scoped fan representation. Contact information is never returned by the public API.
    - `id` string, required — Opaque Laylo fan identifier.
    - `inferredDisplayName` string — Optional non-contact display name inferred by Laylo.
    - `joinedAt` string, date-time — When the fan first joined, in ISO 8601 with an explicit UTC offset.
    - `location` object — Optional non-contact location.
      - `city` string — City name.
      - `country` string — Country name or code.
      - `state` string — State or region.

## Other responses

- `400` — The request body is malformed.
- `401` — The integrator credential or customer API key is invalid.
- `403` — The customer account behind the API key has no paid Laylo plan.
- `404` — No route matches the requested path.
- `405` — The path exists, but the HTTP method is not supported.
- `409` — The request conflicts with the current resource state.
- `429` — The per-integrator rate limit for this operation is exceeded.
- `500` — An unexpected server error occurred.

---

[API](https://skmtc.dev/laylo/apis/laylo-api.md) · [All operations](https://skmtc.dev/laylo/apis/laylo-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/laylo/laylo-api/revisions/000d81a01b74/schema)
