# Custom Object Instances

Everything about your Custom Object instances.
{% admonition type="warning" name="Permission Requirements" %}
  From now on, to access this endpoint, you need additional permissions. Please head over to the [Developer Hub](https://app.intercom.com/a/apps/_/developer-hub) app package authentication settings to configure the required permissions.
{% /admonition %}


## Update a contact

 - [PUT /contacts/{id}](https://developers.intercom.com/docs/references/2.14/rest-api/api.intercom.io/contacts/updatecontact.md): You can update an existing contact (ie. user or lead).

{% admonition type="info" %}
  This endpoint handles both contact updates and custom object associations.

  See _update a contact with an association to a custom object instance_ in the request/response examples to see the custom object association format.
{% /admonition %}

## Update a conversation

 - [PUT /conversations/{id}](https://developers.intercom.com/docs/references/2.14/rest-api/api.intercom.io/conversations/updateconversation.md): You can update an existing conversation.

{% admonition type="info" name="Replying and other actions" %}
If you want to reply to a coveration or take an action such as assign, unassign, open, close or snooze, take a look at the reply and manage endpoints.
{% /admonition %}

{% admonition type="info" %}
  This endpoint handles both conversation updates and custom object associations.

  See _update a conversation with an association to a custom object instance_ in the request/response examples to see the custom object association format.
{% /admonition %}

{% admonition type="danger" name="Breaking change: duplicate custom attribute names" %}
The PUT /conversations/{id} endpoint now returns a 400 INVALID_PARAMETER error when the request includes custom_attributes and your workspace contains multiple non-archived conversation custom attributes with the same name. Previously, the update would silently apply to a non-deterministic attribute. To resolve, rename or archive the duplicate attribute in your workspace settings, then retry the request.
{% /admonition %}

## Update a contact

 - [PUT /contacts/{id}](https://developers.intercom.com/docs/references/2.14/rest-api/api.intercom.io/custom-object-instances/updatecontact.md): You can update an existing contact (ie. user or lead).

{% admonition type="info" %}
  This endpoint handles both contact updates and custom object associations.

  See _update a contact with an association to a custom object instance_ in the request/response examples to see the custom object association format.
{% /admonition %}

## Update a conversation

 - [PUT /conversations/{id}](https://developers.intercom.com/docs/references/2.14/rest-api/api.intercom.io/custom-object-instances/updateconversation.md): You can update an existing conversation.

{% admonition type="info" name="Replying and other actions" %}
If you want to reply to a coveration or take an action such as assign, unassign, open, close or snooze, take a look at the reply and manage endpoints.
{% /admonition %}

{% admonition type="info" %}
  This endpoint handles both conversation updates and custom object associations.

  See _update a conversation with an association to a custom object instance_ in the request/response examples to see the custom object association format.
{% /admonition %}

{% admonition type="danger" name="Breaking change: duplicate custom attribute names" %}
The PUT /conversations/{id} endpoint now returns a 400 INVALID_PARAMETER error when the request includes custom_attributes and your workspace contains multiple non-archived conversation custom attributes with the same name. Previously, the update would silently apply to a non-deterministic attribute. To resolve, rename or archive the duplicate attribute in your workspace settings, then retry the request.
{% /admonition %}

## Create or Update a Custom Object Instance

 - [POST /custom_object_instances/{custom_object_type_identifier}](https://developers.intercom.com/docs/references/2.14/rest-api/api.intercom.io/custom-object-instances/createcustomobjectinstances.md): Create or update a custom object instance

## Get Custom Object Instance by External ID

 - [GET /custom_object_instances/{custom_object_type_identifier}](https://developers.intercom.com/docs/references/2.14/rest-api/api.intercom.io/custom-object-instances/getcustomobjectinstancesbyexternalid.md): Fetch a Custom Object Instance by external_id.

## Delete a Custom Object Instance by External ID

 - [DELETE /custom_object_instances/{custom_object_type_identifier}](https://developers.intercom.com/docs/references/2.14/rest-api/api.intercom.io/custom-object-instances/deletecustomobjectinstancesbyid.md): Delete a single Custom Object instance by external_id.

## Get Custom Object Instance by ID

 - [GET /custom_object_instances/{custom_object_type_identifier}/{id}](https://developers.intercom.com/docs/references/2.14/rest-api/api.intercom.io/custom-object-instances/getcustomobjectinstancesbyid.md): Fetch a Custom Object Instance by id.

## Delete a Custom Object Instance by ID

 - [DELETE /custom_object_instances/{custom_object_type_identifier}/{id}](https://developers.intercom.com/docs/references/2.14/rest-api/api.intercom.io/custom-object-instances/deletecustomobjectinstancesbyexternalid.md): Delete a single Custom Object instance using the Intercom defined id.

