> ## Documentation Index
> Fetch the complete documentation index at: https://help.hoopai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update a Record

> API reference for updating custom object records in the HoopAI platform.

<Note>
  Currently only **Custom Objects** are supported in the Records API. Support for standard objects (Contacts, Companies) will be added in a future release.
</Note>

## Endpoint

```
PUT /objects/{customObjectKey}/records/{recordId}
```

### Path parameters

| Parameter           | Description                                                                                                     |
| ------------------- | --------------------------------------------------------------------------------------------------------------- |
| `{customObjectKey}` | The internal key of the Custom Object (prefixed with `custom_objects.`). Example: `custom_objects.event_ticket` |
| `{recordId}`        | The ID of the record to update. Example: `668d681f77af4e5229abd6c0`                                             |

***

## Request body

| Parameter    | Type   | Description                                                          |
| ------------ | ------ | -------------------------------------------------------------------- |
| `owners`     | object | `{ "add": string[], "remove": string[] }` — Limited to 1 owner.      |
| `followers`  | object | `{ "add": string[], "remove": string[] }` — Limited to 10 followers. |
| `properties` | object | Key-value pairs of field data to update.                             |

<Info>
  To **remove** a field value, pass `null` as its value: `{ "properties": { "ticket_name": null } }`
</Info>

***

## Multi-value fields — add/remove pattern

Fields that support multiple values must use the `add`/`remove` object pattern so you can add and remove values in a single call:

* Owner
* Followers
* Dropdown (Multiple)
* Checkbox
* File Upload

```json theme={null}
{
  "field_key": {
    "add": ["option_3", "option_4"],
    "remove": ["option_1"]
  }
}
```

***

## Example request body

```json theme={null}
{
  "owner": {
    "add": ["v5cEPM428h8vShlRW1KT"],
    "remove": ["sx6wyHhbFdRXh302Lunr"]
  },
  "followers": {
    "add": ["v5cEPM428h8vShlRW1KT", "17asdaashqw6wbsd7qwhe"],
    "remove": ["sx6wyHhbFdRXh302Lunr"]
  },
  "properties": {
    "customer_number": 1424,
    "ticket_name": "Customer not able to login",
    "phone_number": "+917000000000",
    "money": { "currency": "default", "value": 100 },
    "type_of_ticket": "option_1_internal_key",
    "section_of_app": {
      "add": ["option_3_internal_key", "option_4_internal_key"],
      "remove": ["option_1_internal_key"]
    },
    "recieved_on": "2024-07-11",
    "my_files": {
      "add": [{ "url": "https://example.com/new-file.pdf" }],
      "remove": [{ "url": "https://example.com/old-file.pdf" }]
    },
    "my_textbox_list.option_a": "Value 1",
    "my_textbox_list.option_b": "Value 2"
  }
}
```

***

## Field types reference

| Field                          | Type       | Notes                                                          |
| ------------------------------ | ---------- | -------------------------------------------------------------- |
| **Standard fields**            |            |                                                                |
| `owner`                        | `object`   | `{ "add": string[], "remove": string[] }`                      |
| `followers`                    | `object`   | `{ "add": string[], "remove": string[] }`                      |
| **Custom fields (properties)** |            |                                                                |
| Single Line                    | `string`   |                                                                |
| Multi Line                     | `string`   |                                                                |
| Textbox List                   | `string`   | Format: `{field_key}.{label_key}`                              |
| Number                         | `number`   |                                                                |
| Phone                          | `string`   | Include country code with `+`. No leading `0`.                 |
| Monetary                       | `object`   | `{ "currency": "default", "value": 100 }`                      |
| Dropdown (Single)              | `string`   | Pass option **key**, not label.                                |
| Dropdown (Multiple)            | `object`   | `{ "add": string[], "remove": string[] }` — option keys only.  |
| Radio                          | `string`   | Pass option **key**, not label.                                |
| Checkbox                       | `object`   | `{ "add": string[], "remove": string[] }` — option keys only.  |
| Date Picker                    | `string`   | Format: `YYYY-MM-DD` (ISO 8601)                                |
| File Upload                    | `object[]` | `{ "add": object[], "remove": object[] }` — URL must be valid. |
