curl --request PATCH \
--url https://{your-subdomain}.neetochat.com/api/external/v2/conversations/{conversation_id} \
--header 'Accept: <accept>' \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <x-api-key>' \
--data '
{
"title": "Refund for order #1042",
"status": "closed",
"priority": "medium",
"assignee_email": "oliver@example.com",
"group_name": "Billing",
"tags": [
"refund"
],
"ticket_fields": {
"Order number": "1042"
}
}
'const options = {
method: 'PATCH',
headers: {
'X-Api-Key': '<x-api-key>',
Accept: '<accept>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
title: 'Refund for order #1042',
status: 'closed',
priority: 'medium',
assignee_email: 'oliver@example.com',
group_name: 'Billing',
tags: ['refund'],
ticket_fields: {'Order number': '1042'}
})
};
fetch('https://{your-subdomain}.neetochat.com/api/external/v2/conversations/{conversation_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{your-subdomain}.neetochat.com/api/external/v2/conversations/{conversation_id}"
payload = {
"title": "Refund for order #1042",
"status": "closed",
"priority": "medium",
"assignee_email": "oliver@example.com",
"group_name": "Billing",
"tags": ["refund"],
"ticket_fields": { "Order number": "1042" }
}
headers = {
"X-Api-Key": "<x-api-key>",
"Accept": "<accept>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text){
"conversation": {
"id": "de414e85-a1b5-4240-a465-7b32606980ce",
"status": "open",
"title": "Refund for order #1042",
"priority": "low",
"channel_name": "b945fd3cd2573017052901d6dbd0832f",
"origin_page_url": "https://example.com/pricing",
"origin_page_title": "Pricing",
"created_at": "2026-09-23T18:07:53.661Z",
"updated_at": "2026-10-05T16:26:58.143Z",
"agent": {
"id": "05665eee-4602-4317-8f7f-767b04274e5f",
"name": "Oliver Smith",
"email": "oliver@example.com"
},
"group": {
"id": null,
"name": null
},
"visitor": {
"id": "2c79a334-0bc8-44e4-9504-331f59d400ab",
"name": "Sam Brown",
"email": "sam@example.com",
"phone_number": null,
"user_identifier": null
}
}
}{
"error": "Conversation does not exist."
}{
"error": "Invalid ticket field: Order number."
}Update conversation
Update a conversation. Only the fields you pass are changed.
curl --request PATCH \
--url https://{your-subdomain}.neetochat.com/api/external/v2/conversations/{conversation_id} \
--header 'Accept: <accept>' \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <x-api-key>' \
--data '
{
"title": "Refund for order #1042",
"status": "closed",
"priority": "medium",
"assignee_email": "oliver@example.com",
"group_name": "Billing",
"tags": [
"refund"
],
"ticket_fields": {
"Order number": "1042"
}
}
'const options = {
method: 'PATCH',
headers: {
'X-Api-Key': '<x-api-key>',
Accept: '<accept>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
title: 'Refund for order #1042',
status: 'closed',
priority: 'medium',
assignee_email: 'oliver@example.com',
group_name: 'Billing',
tags: ['refund'],
ticket_fields: {'Order number': '1042'}
})
};
fetch('https://{your-subdomain}.neetochat.com/api/external/v2/conversations/{conversation_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{your-subdomain}.neetochat.com/api/external/v2/conversations/{conversation_id}"
payload = {
"title": "Refund for order #1042",
"status": "closed",
"priority": "medium",
"assignee_email": "oliver@example.com",
"group_name": "Billing",
"tags": ["refund"],
"ticket_fields": { "Order number": "1042" }
}
headers = {
"X-Api-Key": "<x-api-key>",
"Accept": "<accept>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text){
"conversation": {
"id": "de414e85-a1b5-4240-a465-7b32606980ce",
"status": "open",
"title": "Refund for order #1042",
"priority": "low",
"channel_name": "b945fd3cd2573017052901d6dbd0832f",
"origin_page_url": "https://example.com/pricing",
"origin_page_title": "Pricing",
"created_at": "2026-09-23T18:07:53.661Z",
"updated_at": "2026-10-05T16:26:58.143Z",
"agent": {
"id": "05665eee-4602-4317-8f7f-767b04274e5f",
"name": "Oliver Smith",
"email": "oliver@example.com"
},
"group": {
"id": null,
"name": null
},
"visitor": {
"id": "2c79a334-0bc8-44e4-9504-331f59d400ab",
"name": "Sam Brown",
"email": "sam@example.com",
"phone_number": null,
"user_identifier": null
}
}
}{
"error": "Conversation does not exist."
}{
"error": "Invalid ticket field: Order number."
}{your-subdomain} with your workspace’s subdomain. Learn how to find your subdomain in Workspace subdomain.
Headers
Use the X-Api-Key header to provide your workspace API key. Refer to Authentication for more information.
Specifies the expected response format. Must be set to application/json for proper API communication.
application/json Path Parameters
Id of the conversation. You can get conversation_id by listing conversations using our List conversations API.
"de414e85-a1b5-4240-a465-7b32606980ce"
Body
"Refund for order #1042"
Status of the conversation. It must be one of the statuses of your workspace.
"closed"
low, medium, high, urgent "medium"
Email of the team member to assign the conversation to. It is ignored when no team member has this email.
"oliver@example.com"
Name of the group to assign the conversation to. It is ignored when no group has this name.
"Billing"
Names of the tags the conversation should have. This replaces the conversation's current tags, and tags that don't exist yet are created.
["refund"]
Ticket field values keyed by the field's name. Use the option label for dropdown fields, an array of labels for multi-select fields and true or false for checkbox fields.
{ "Order number": "1042" }
Response
OK - Request succeeded
Hide child attributes
Hide child attributes
"de414e85-a1b5-4240-a465-7b32606980ce"
Name of the conversation's status. The default statuses are new, open, waiting_on_customer, on_hold, closed, spam and trash, and your workspace may also have custom statuses.
"open"
"Refund for order #1042"
low, medium, high, urgent "low"
Unique identifier of the conversation's chat channel.
"b945fd3cd2573017052901d6dbd0832f"
URL of the page the conversation was started from.
"https://example.com/pricing"
Title of the page the conversation was started from.
"Pricing"
"2026-09-23T18:07:53.661Z"
Time the conversation was last changed. A new message or note in the conversation also updates it.
"2026-10-05T16:26:58.143Z"
Team member assigned to the conversation. All fields are null when the conversation is unassigned.
Contact who started the conversation.
Hide child attributes
Hide child attributes
"2c79a334-0bc8-44e4-9504-331f59d400ab"
"Sam Brown"
"sam@example.com"
null
null