---
title: "Update custom event property"
method: PUT
path: "/events/custom-properties/{property_id}/"
tags: ["customEventProperties"]
---

# Update custom event property

`PUT /events/custom-properties/{property_id}/`

## Request

- Base URL: `https://api.hive.co/v2`
- URL: `https://api.hive.co/v2/events/custom-properties/{property_id}/`
- Auth: HTTP bearer

Full replacement — send both fields even when only one changes. A property's `value_type` is locked once any event has a value for it.

## Path parameters

- `property_id` integer, required

## Headers

- `X-Partner-Id` string, required

## Request body

- CustomEventPropertyWriteRequest
  - `name` string, required
  - `value_type` 'text' | 'number', required: Declared value type of a CustomEventProperty. Lowercase because these values travel through the public API (`value_type` on the custom-properties routes).

## Response `200`

- CustomEventProperty: Every route's definition response. Reads off `PropertyWithValueCount`.
  - `id` integer, required
  - `name` string, required
  - `value_type` string, required
  - `created_at` string, date-time, required
  - `value_count` integer, required

## Other responses

- `404`: Custom event property not found.
- `409`: The name is taken, or the property has values so its type is locked.
- `422`: Validation failed. For a batch write this is all-or-nothing. Field errors are keyed by resource name, then item index, then field path, query-parameter errors are keyed by parameter name, service-level rejections use a flat `errors` list.

---

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