---
title: "Upsert a Portfolio Property Value"
method: PUT
path: "/portfolio_property_values"
tags: ["Portfolio Property Values"]
---

# Upsert a Portfolio Property Value

`PUT /portfolio_property_values`

Create or update a single portfolio property value for a portfolio company profile.

Pass the portfolio property and portfolio company profile identifiers along with the value, and the API will either create a new record
or update the existing one if it already exists for that `(portfolio_property_id, portfolio_company_profile_id)` pair.

For properties with `data_type` of `select` or `multiselect`, you must send option IDs instead of option labels:
- For `select` properties, use `portfolio_property_option_id` with the UUID of a single option.
- For `multiselect` properties, use `portfolio_property_option_ids` with an array of option UUIDs.
For all other data types (string, text, url, number, date, rich_text) use the generic `value` field.

## Request body

- object
  - `portfolio_property_value` union
    - object
      - `portfolio_property_id` string, uuid, required — ID of the portfolio property this value belongs to
      - `portfolio_company_profile_id` string, uuid, required — ID of the portfolio company profile this value belongs to
      - `value` string, required — Raw value to set for the property. Parsed into the appropriate typed column based on the property's data type.
    - object
      - `portfolio_property_id` string, uuid, required — ID of the portfolio property this value belongs to
      - `portfolio_company_profile_id` string, uuid, required — ID of the portfolio company profile this value belongs to
      - `portfolio_property_option_id` string, uuid, required — ID of the selected option for `select` properties. Mutually exclusive with `value`.
    - object
      - `portfolio_property_id` string, uuid, required — ID of the portfolio property this value belongs to
      - `portfolio_company_profile_id` string, uuid, required — ID of the portfolio company profile this value belongs to
      - `portfolio_property_option_ids` string[], required — IDs of the selected options for `multiselect` properties. Mutually exclusive with `value`.

## Response `200`

Portfolio property value successfully updated

- object
  - `portfolio_property_value` PortfolioPropertyValue
    - `id` string, uuid, required — Unique identifier for the portfolio property value
    - `value` union — The formatted value based on the property type
      - string
      - number
    - `portfolio_property_id` string, uuid, required — ID of the associated portfolio property
    - `portfolio_company_profile_id` string, uuid, required — ID of the associated portfolio company profile
    - `portfolio_property_option_id` string, uuid, nullable — ID of the selected option when the associated property has `data_type` of `select`.
    - `portfolio_property_option_ids` string[] — IDs of the selected options when the associated property has `data_type` of `multiselect`.

## Other responses

- `201` — Portfolio property value successfully created
- `400` — Bad Request - The request is invalid or malformed
- `401` — Unauthorized - Invalid or missing authentication token
- `403` — Forbidden - The authenticated user does not have access to the requested resource
- `422` — Unprocessable Entity - The request is valid but contains semantic errors
- `429` — Too Many Requests - Rate limit exceeded

---

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