---
title: "Update thread"
method: PATCH
path: "/threads/{id}"
tags: ["threads"]
---

# Update thread

`PATCH /threads/{id}`

## Request

- Base URL: `https://productlane.com/api/v1`
- URL: `https://productlane.com/api/v1/threads/{id}`
- Auth: HTTP bearer

Update thread by ID. Authentication is required.

## Path parameters

- `id` string, required

## Request body

- object
  - `text` string
  - `title` string
  - `painLevel` 'UNKNOWN' | 'LOW' | 'MEDIUM' | 'HIGH'
  - `assigneeId` string, nullable: ID of the workspace member to assign this thread to. Set to null to unassign.
  - `projectId` string
  - `notify` object
    - `slack` boolean
    - `email` boolean
  - `state` 'NEW' | 'PROCESSED' | 'COMPLETED' | 'SNOOZED' | 'UNSNOOZED': Processing status of the thread. Possible values: NEW, PROCESSED, COMPLETED, SNOOZED, UNSNOOZED. Note: this does not directly control which inbox tab the thread appears in - tab placement is determined by multiple factors including state, snooze timing, and workspace settings.
  - `contactId` string
  - `companyId` string
  - `tagIds` string[]
  - `updatedAt` string, date-time

## Response `200`

Successful response

- object
  - `id` string, required
  - `createdAt` string, date-time, required
  - `updatedAt` string, date-time, required
  - `isDeleted` boolean, required
  - `isRead` boolean, required
  - `lastInboundMessageAt` string, date-time, nullable, required
  - `lastOutboundMessageAt` string, date-time, nullable, required
  - `lastStateChangeAt` string, date-time, nullable, required
  - `text` string, required
  - `painLevel` 'UNKNOWN' | 'LOW' | 'MEDIUM' | 'HIGH', required
  - `state` 'NEW' | 'PROCESSED' | 'COMPLETED' | 'SNOOZED' | 'UNSNOOZED', required
  - `origin` 'INAPP' | 'PORTAL' | 'SUPPORT_PORTAL' | 'API' | 'SLACK' | 'SLACK_CONNECT' | 'INTERCOM' | 'INTERCOM_ATTACHMENT' | 'ZENDESK_ATTACHMENT' | 'ZENDESK' | 'FRONT_ATTACHMENT' | 'EMAIL' | 'ZAPIER' | 'HUBSPOT' | 'PLAIN' | 'CALENDAR' | 'WIDGET' | 'AI_CHAT' | 'UPVOTE' | 'LIVE_CHAT' | 'TEAMS' | 'LINEAR' | 'CUSTOM', required
  - `title` string, nullable, required
  - `snoozedUntil` string, date-time, nullable, required
  - `workspaceId` string, required
  - `contactId` string, nullable, required
  - `companyId` string, nullable, required
  - `reporterId` string, nullable, required
  - `assigneeId` string, nullable, required
  - `attachments` unknown[], required
    - unknown
  - `recordingId` string, nullable, required
  - `videoId` string, nullable, required
  - `slackChannelId` string, nullable, required
  - `linearAttachmentId` string, nullable, required
  - `intercomId` string, nullable, required
  - `frontId` string, nullable, required
  - `zendeskId` string, nullable, required
  - `hubspotId` string, nullable, required
  - `plainId` string, nullable, required
  - `productboardId` string, nullable, required
  - `slackReplyId` string, nullable, required
  - `uniqueId` string, nullable, required
  - `tags` object[], required
    - `id` string, required
    - `name` string, required
    - `color` string, required
    - `icon` string, required
    - `tagGroupId` string, nullable, required

## Other responses

- `default`: Error response

---

[API](https://skmtc.dev/productlane/apis/productlane-api.md) · [All operations](https://skmtc.dev/productlane/apis/productlane-api/llms.txt) · [OpenAPI document](https://skmtc.dev/productlane/apis/productlane-api/revisions/9325a8425b36?raw)
