Reference · Tools

Twist

Manage channels, comments, conversation messages, and threads in Twist.

Action (binary) Communication v1 Binary data

The Twist node manages channels, threads, conversation messages and comments in Twist, the asynchronous team communication tool. A typical build is opening a thread for each incident and posting updates as comments so the whole discussion stays in one place.

Node type
Action (binary)
Parameters
39
Outputs
Output, Error
Credentials
Twist OAuth2 API

Twist

Manage channels, comments, conversation messages, and threads in Twist.

Overview

Twist tool integrates with the Twist API v3 to manage team communication. Supports 4 resources: channel (create/delete/get/getAll/update/archive/unarchive), comment (create/delete/get/getAll/update), message — conversation messages (create/delete/get/getAll/update), and thread (create/delete/get/getAll/update). All write operations support optional file attachments via binary store upload and direct user mentions. Uses OAuth2 Bearer token authentication with automatic token refresh.

Category: Communication
Tool Name: twist
Version: 1

Appearance: Icon: lucide-MessageSquare | Color: #4E92DF

Node Type

Action (Binary) — handles file/binary data operations

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires Twist OAuth2 API credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Channelchannel
Commentcomment
Message (Conversation)message
Threadthread

Operations

OperationValueDescription
ArchivearchiveArchive a channel
CreatecreateCreate a new channel
DeletedeleteDelete a channel
GetgetGet information about a channel
Get ManygetAllGet many channels in a workspace
UnarchiveunarchiveUnarchive a channel
UpdateupdateUpdate a channel
CreatecreateCreate a comment on a thread
DeletedeleteDelete a comment
GetgetGet information about a comment
Get ManygetAllGet many comments on a thread
UpdateupdateUpdate a comment
CreatecreateCreate a message in a conversation
DeletedeleteDelete a message
GetgetGet a message
Get ManygetAllGet many messages in a conversation
UpdateupdateUpdate a message
CreatecreateCreate a new thread in a channel
DeletedeleteDelete a thread
GetgetGet information about a thread
Get ManygetAllGet many threads in a channel
UpdateupdateUpdate a thread

archive and unarchive exist only on Channel. Every other operation value is offered on all four resources, with the description above matching the resource it belongs to, in Channel → Comment → Message → Thread order.

Parameters

Channel: Create

ParameterTypeRequiredDefaultDescription
Workspace IDstringYesThe ID of the Twist workspace. Supports expressions.
NamestringYesThe name of the channel. Supports expressions.
Additional FieldscollectionNo{}Optional channel settings.
— ColoroptionsNo0The color of the channel.
Options: 0 (Grey), 1 (Blue), 2 (Turquoise), 3 (Teal Blue), 4 (Green), 5 (Red), 6 (Berry Red), 7 (Magenta), 8 (Sky Blue), 9 (Mint Green), 10 (Yellow), 11 (Salmon)
— DescriptionstringNoThe description of the channel.
— PublicbooleanNofalseWhether the channel will be marked as public.

Channel: Get Many

ParameterTypeRequiredDefaultDescription
Workspace IDstringYesThe ID of the Twist workspace. Supports expressions.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Maximum number of results to return. (shown when Return All is false)
FilterscollectionNo{}Narrows the channel list.
— ArchivedbooleanNofalseWhether to return only archived channels.

Channel: Get

ParameterTypeRequiredDefaultDescription
Channel IDstringYesThe ID of the channel. Supports expressions.

Channel: Update

ParameterTypeRequiredDefaultDescription
Channel IDstringYesThe ID of the channel. Supports expressions.
Update FieldscollectionNo{}Fields to change on the channel.
— ColoroptionsNo0The color of the channel.
Options: 0 (Grey), 1 (Blue), 2 (Turquoise), 3 (Teal Blue), 4 (Green), 5 (Red), 6 (Berry Red), 7 (Magenta), 8 (Sky Blue), 9 (Mint Green), 10 (Yellow), 11 (Salmon)
— DescriptionstringNoThe description of the channel.
— NamestringNoThe name of the channel.
— PublicbooleanNofalseWhether the channel will be marked as public.

Channel: Delete

ParameterTypeRequiredDefaultDescription
Channel IDstringYesThe ID of the channel. Supports expressions.

Channel: Archive

ParameterTypeRequiredDefaultDescription
Channel IDstringYesThe ID of the channel. Supports expressions.

Channel: Unarchive

ParameterTypeRequiredDefaultDescription
Channel IDstringYesThe ID of the channel. Supports expressions.

Comment: Create

ParameterTypeRequiredDefaultDescription
Thread IDstringYesThe ID of the thread. Supports expressions.
ContentstringYesThe content of the comment. Supports expressions like {{ $json.body }}.
Additional FieldscollectionNo{}Optional comment settings.
— Actions (JSON)jsonNo[]Interactive action buttons as a JSON array. Each action object should have: type, button_text, action, and optionally url or message.
— Attachments (Binary Property)stringNodataName of the binary property containing the file to attach. Separate multiple properties with commas.
— Direct Mentions (User IDs)stringNoComma-separated user IDs to directly mention. Each will be prepended to content as Name.
— Recipients (User IDs)stringNoComma-separated user IDs to attach to the comment.
— Send as IntegrationbooleanNofalseWhether to display the integration as the comment creator.
— Mark Thread PositionbooleanNotrueWhether to mark the position of the thread.

Comment: Get Many

ParameterTypeRequiredDefaultDescription
Thread IDstringYesThe ID of the thread. Supports expressions.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Maximum number of results to return. (shown when Return All is false)
FilterscollectionNo{}Narrows the comment list.
— As IDsbooleanNofalseWhether to return only the IDs of the comments (as a flat array mapped to [{ID: id}]).
— Newer ThandateTimeNoLimit comments to those newer than this datetime (converted to Unix timestamp).
— Older ThandateTimeNoLimit comments to those older than this datetime (converted to Unix timestamp).
— Order ByoptionsNoASCOrder of the comments returned.
Options: ASC, DESC
— From Object IndexnumberNo0Limit comments starting at the specified object index.
— To Object IndexnumberNo50Limit comments ending at the specified object index.

Comment: Get

ParameterTypeRequiredDefaultDescription
Comment IDstringYesThe ID of the comment. Supports expressions.

Comment: Update

ParameterTypeRequiredDefaultDescription
Comment IDstringYesThe ID of the comment. Supports expressions.
Update FieldscollectionNo{}Fields to change on the comment.
— Actions (JSON)jsonNo[]Interactive action buttons as a JSON array.
— Attachments (Binary Property)stringNodataName of the binary property containing the file to attach.
— ContentstringNoThe updated content of the comment.
— Direct Mentions (User IDs)stringNoComma-separated user IDs to directly mention.

Comment: Delete

ParameterTypeRequiredDefaultDescription
Comment IDstringYesThe ID of the comment. Supports expressions.

Message (Conversation): Create

ParameterTypeRequiredDefaultDescription
Workspace IDstringYesThe ID of the Twist workspace. Supports expressions.
Conversation IDstringYesThe ID of the conversation. Supports expressions.
ContentstringNoThe content of the message. Supports expressions.
Additional FieldscollectionNo{}Optional message settings.
— Actions (JSON)jsonNo[]Interactive action buttons as a JSON array.
— Attachments (Binary Property)stringNodataName of the binary property containing the file to attach.
— Direct Mentions (User IDs)stringNoComma-separated user IDs to directly mention.

Message (Conversation): Get Many

ParameterTypeRequiredDefaultDescription
Workspace IDstringYesThe ID of the Twist workspace. Supports expressions.
Conversation IDstringYesThe ID of the conversation. Supports expressions.
Additional FieldscollectionNo{}Paging and sorting for the message list.
— LimitnumberNo50Maximum number of messages to return.
— Order ByoptionsNoASCOrder of the messages returned.
Options: ASC, DESC
— From Object IndexnumberNo0Limit messages starting at the specified object index.
— To Object IndexnumberNo50Limit messages ending at the specified object index.

Message (Conversation): Get

ParameterTypeRequiredDefaultDescription
Message IDstringYesThe ID of the conversation message. Supports expressions.

Message (Conversation): Update

ParameterTypeRequiredDefaultDescription
Message IDstringYesThe ID of the conversation message. Supports expressions.
Update FieldscollectionNo{}Fields to change on the message.
— Actions (JSON)jsonNo[]Interactive action buttons as a JSON array.
— Attachments (Binary Property)stringNodataName of the binary property containing the file to attach.
— ContentstringNoThe updated content of the message.
— Direct Mentions (User IDs)stringNoComma-separated user IDs to directly mention.

Message (Conversation): Delete

ParameterTypeRequiredDefaultDescription
Message IDstringYesThe ID of the conversation message. Supports expressions.

Thread: Create

ParameterTypeRequiredDefaultDescription
Channel IDstringYesThe ID of the channel. Supports expressions.
TitlestringYesThe title of the new thread (1 to 300 characters). Supports expressions.
ContentstringYesThe content of the thread. Supports expressions.
Additional FieldscollectionNo{}Optional thread settings.
— Actions (JSON)jsonNo[]Interactive action buttons as a JSON array.
— Attachments (Binary Property)stringNodataName of the binary property containing the file to attach.
— Direct Mentions (User IDs)stringNoComma-separated user IDs to directly mention.
— Recipients (User IDs)stringNoComma-separated user IDs to attach to the thread.
— Send as IntegrationbooleanNofalseWhether to display the integration as the thread creator.

Thread: Get Many

ParameterTypeRequiredDefaultDescription
Channel IDstringYesThe ID of the channel. Supports expressions.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Maximum number of results to return. (shown when Return All is false)
FilterscollectionNo{}Narrows the thread list.
— As IDsbooleanNofalseWhether to return only the IDs of the threads.
— Filter ByoptionsNoFilter threads by attachment or star status.
Options: empty (None), attached_to_me, everyone, is_starred
— Newer ThandateTimeNoLimit threads to those newer than this datetime.
— Older ThandateTimeNoLimit threads to those older than this datetime.

Thread: Get

ParameterTypeRequiredDefaultDescription
Thread IDstringYesThe ID of the thread. Supports expressions.

Thread: Update

ParameterTypeRequiredDefaultDescription
Thread IDstringYesThe ID of the thread. Supports expressions.
Update FieldscollectionNo{}Fields to change on the thread.
— Actions (JSON)jsonNo[]Interactive action buttons as a JSON array.
— Attachments (Binary Property)stringNodataName of the binary property containing the file to attach.
— ContentstringNoThe updated content of the thread.
— Direct Mentions (User IDs)stringNoComma-separated user IDs to directly mention.
— TitlestringNoThe updated title of the thread.

Thread: Delete

ParameterTypeRequiredDefaultDescription
Thread IDstringYesThe ID of the thread. Supports expressions.

All Operations

ParameterTypeRequiredDefaultDescription
Twist AccountcredentialNoConnect your Twist account via OAuth2.
Max ConcurrencynumberNo10Maximum number of items to process concurrently.

Output Data

The Twist API response is merged onto the top level of the item JSON; anything already on the item passes through.

  • Single-object operations (create, get, update, delete, archive, unarchive) produce one output item per input item, carrying the channel, comment, message or thread object Twist returned. commentget unwraps Twist’s comment envelope so the comment’s own fields land directly on the item.
  • getAll on any resource fans out: one output item per record returned. When the list comes back empty the node still emits a single item carrying results: [], so a downstream branch always fires.
  • Operations that return an empty body land success: true on the item.

Binary attachments are consumed on the way out (uploaded to Twist), so binary properties are not carried onto the output items.

Usage Examples

  • Create a new channel in a Twist workspace
  • Post a message to a Twist conversation
  • Create a thread in a Twist channel
  • Add a comment to a Twist thread
  • List all channels in a workspace
  • Archive a Twist channel
  • Get all threads in a channel
  • Update a comment on a thread
  • Upload a file attachment with a comment
  • Mention users directly in a thread post

Example Configuration

Create a channel:

{
  "type": "twist",
  "parameters": {
    "resource": "channel",
    "operation": "create",
    "workspaceId": "12345",
    "name": "New Project Channel",
    "additionalFields": {
      "description": "Channel for discussing the new project",
      "public": true,
      "color": 2
    }
  }
}

List the first 20 active channels in a workspace:

{
  "type": "twist",
  "parameters": {
    "resource": "channel",
    "operation": "getAll",
    "workspaceId": "12345",
    "returnAll": false,
    "limit": 20,
    "filters": {
      "archived": false
    }
  }
}

Rename a channel and make it private:

{
  "type": "twist",
  "parameters": {
    "resource": "channel",
    "operation": "update",
    "channelId": "67890",
    "updateFields": {
      "name": "Updated Channel Name",
      "description": "Updated description",
      "public": false
    }
  }
}

Start a thread and mention two people by user ID:

{
  "type": "twist",
  "parameters": {
    "resource": "thread",
    "operation": "create",
    "channelId": "67890",
    "title": "Weekly Planning Discussion",
    "content": "Let's discuss our plans for next week",
    "additionalFields": {
      "direct_mentions": "451234,451299",
      "send_as_integration": false
    }
  }
}

List recent unread-style threads with a date filter:

{
  "type": "twist",
  "parameters": {
    "resource": "thread",
    "operation": "getAll",
    "channelId": "67890",
    "returnAll": false,
    "limit": 15,
    "filters": {
      "newer_than_ts": "2026-01-01T00:00:00Z",
      "filter_by": "attached_to_me"
    }
  }
}

Comment on a thread:

{
  "type": "twist",
  "parameters": {
    "resource": "comment",
    "operation": "create",
    "threadId": "98765",
    "content": "I agree with this approach",
    "additionalFields": {
      "direct_mentions": "451234",
      "mark_thread_position": true
    }
  }
}

Page through comments oldest-first:

{
  "type": "twist",
  "parameters": {
    "resource": "comment",
    "operation": "getAll",
    "threadId": "98765",
    "returnAll": false,
    "limit": 10,
    "filters": {
      "order_by": "ASC",
      "from_obj_index": 0,
      "to_obj_index": 50
    }
  }
}

Post a conversation message:

{
  "type": "twist",
  "parameters": {
    "resource": "message",
    "operation": "create",
    "workspaceId": "12345",
    "conversationId": "conv123",
    "content": "Quick update on the project status",
    "additionalFields": {
      "direct_mentions": "451234"
    }
  }
}

Read the newest messages in a conversation:

{
  "type": "twist",
  "parameters": {
    "resource": "message",
    "operation": "getAll",
    "workspaceId": "12345",
    "conversationId": "conv123",
    "additionalFields": {
      "limit": 25,
      "order_by": "DESC",
      "from_obj_index": 0,
      "to_obj_index": 100
    }
  }
}

Attach a file from an upstream node to a new comment:

{
  "type": "twist",
  "parameters": {
    "resource": "comment",
    "operation": "create",
    "threadId": "{{ $json.threadId }}",
    "content": "Report attached.",
    "additionalFields": {
      "binaryProperties": "data"
    }
  }
}

Error Handling

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes failed items to Error output port

Tips

Manage channels, comments, messages, and threads in Twist.

Parameter Dependencies

The Twist tool has a hierarchical parameter dependency structure:

  1. resourceoperation (determines available operations)
  2. resource + operation → determines required ID parameters
  3. operation type → determines available field collections
  4. returnAll → controls limit parameter visibility
  5. field collections → contain operation-specific nested fields

Always ensure the correct ID parameters are provided based on the resource and operation combination.

Attachments and Mentions

  • Attachments are read from the input item’s binary properties. Name them in Attachments (Binary Property); separate several with commas, and match the exact case shown in the upstream node’s Binary Data panel.
  • Direct Mentions takes Twist user IDs, not @handles. Each ID is prepended to the content as a Twist mention link.

Frequently asked questions

How are the parameters organised?

Hierarchically: resource determines available operations, resource plus operation determines which ID parameters are required, and the operation type determines which field collections appear.

When does the limit parameter appear?

When Return All is off — that is what controls its visibility.

What is the difference between a thread and a comment?

A thread is the topic; comments are the replies within it. Twist's model is thread-first, which is what makes it asynchronous rather than a live chat.

Which credential does it need?

A Twist OAuth2 credential.

Build with the Twist node

Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Twist OAuth2 API credentials first.

Open BusyBot

Last updated . Spotted something wrong? Tell us.