---
title: Unthread API Integration on Truto
slug: unthread
category: Helpdesk
canonical: "https://truto.one/integrations/detail/unthread/"
---

# Unthread API Integration on Truto



**Category:** Helpdesk  
**Status:** Beta

## MCP-ready AI tools

Truto exposes 66 tools for Unthread that AI agents can call directly.

- **create_a_unthread_account** — Create a new account in Unthread. Returns the created account including id, name, primarySupportAssigneeId, primarySupportAssigneeType, secondarySupportAssigneeId, secondarySupportAssigneeType, emailsAndDomains, slackChannelIds, slackTeamIds, customFields, supportSteps, imageUrl, externalCrmMetadata, createdAt, updatedAt, createdBy, updatedBy, slackChannels, slackTeams, and tags. Required: name.
- **get_single_unthread_account_by_id** — Get a single Unthread account by id. Returns the account including id, name, emailsAndDomains, slackChannelIds, slackTeamIds, customFields, supportSteps, imageUrl, externalCrmMetadata, createdAt, updatedAt, createdBy, updatedBy, slackChannels, slackTeams, and tags. Required: id.
- **update_a_unthread_account_by_id** — Update a Unthread account by id. All fields from the create request schema can be updated. Returns the updated account including id, name, emailsAndDomains, slackChannelIds, slackTeamIds, customFields, supportSteps, imageUrl, externalCrmMetadata, createdAt, updatedAt, createdBy, updatedBy, slackChannels, slackTeams, and tags. Required: id.
- **delete_a_unthread_account_by_id** — Delete a Unthread account by id. Returns an empty 204 response on success. Required: id.
- **list_all_unthread_accounts** — List Unthread accounts following the standard list conventions with select, order, where, and descending filters. Returns each account with id, name, emailsAndDomains, slackChannelIds, slackTeamIds, customFields, supportSteps, imageUrl, externalCrmMetadata, createdAt, updatedAt, createdBy, updatedBy, slackChannels, slackTeams, and tags. Max 100 per page.
- **create_a_unthread_approval_request** — Create an approval request for a conversation in Unthread. Returns the newly created approval request including id, status, conversationId, tenantId, and createdAt. Required: conversation_id. Settable fields: title, assignedToUserId, assignedToGroupId.
- **list_all_unthread_approval_requests** — List approval requests for a conversation in Unthread. Returns ApprovalRequest objects including status, id, tenantId, assignedToGroupId, assignedToUserId, statusChangedAt, conversationId, title, notes, createdAt, approverUser, and approverGroup. Required: conversation_id.
- **create_a_unthread_automation** — Create a new automation in Unthread. Returns the created automation object including its id, name, status, trigger, steps, and conditions. Required: name, trigger, steps. Automations are only available if custom actions are enabled for the tenant.
- **unthread_automations_create_function** — Upload shared code library external functions for automations in Unthread. Returns an object with a version number for subsequent activation. Required: code. The projectId query parameter is optional; omit it for tenant-level automations.
- **unthread_automations_activate_function** — Activate a specific version of a shared code library function for automations in Unthread. Returns the activated function version number. Required: version. The projectId query parameter is optional; omit it for tenant-level automations. Activating a previous version can be used to roll back changes.
- **list_all_unthread_collaborator_types** — List collaborator types in Unthread following the standard list conventions. Returns: id. Max 100 per page.
- **create_a_unthread_conversation** — Create a new conversation in Unthread. Behavior varies by type — Slack (channel/DM), triage (internal discussion), or email (email replies). Returns the created conversation including its id, title, initialMessage (ts, text), and tags. Required: type, markdown, status.
- **get_single_unthread_conversation_by_id** — Get a single Unthread conversation by id. Returns the full conversation object including id, status, title, initialMessage, tags, customerId, createdAt, and updatedAt. Required: id.
- **update_a_unthread_conversation_by_id** — Update an Unthread conversation by id. Supports updating status, priority, title, assignedToUserId, customerId, ticketTypeId, ticketTypeFields, metadata, and more. Returns the updated conversation including id, title, initialMessage, and tags. Required: id. Optional query params: mergeTicketTypeFields, useFullContent.
- **list_all_unthread_conversations** — List conversations in Unthread using the standard list conventions (select, order, where, descending). Returns an array of conversation records each including id, title, initialMessage (ts, text), and tags. Max 100 per page.
- **unthread_conversations_download_file** — Download the full contents of a file attachment from an Unthread conversation. Returns the raw file content as binary data. Required: conversation_id, file_id.
- **unthread_conversations_add_follower** — Add a follower to an Unthread conversation. Returns: entityId, userId, groupId, id, title, content, url, status, userGroupIds, createdAt, updatedAt. Required: conversation_id, entityId, entityType.
- **unthread_conversations_remove_follower** — Remove a follower from an Unthread conversation by entityId. Returns the updated conversation including its id, title, status, and tags. Required: conversation_id, entityId.
- **unthread_conversations_assign_collaborator** — Assign a collaborator with a given collaborator type to an Unthread conversation. Returns the updated conversation including id, title, status, collaborators, and tags. Required: conversation_id, collaborator_type_id. The request body requires entityId and entityType (either "user" or "group").
- **unthread_conversations_create_external_task** — Create an external task for a conversation in Unthread, sending it to a configured task manager integration such as Linear. Returns the created external task including id, title, description, integrationId, assigneeId, and providerConfig. Required: conversation_id, title, integrationId.
- **create_a_unthread_customer** — Create a new customer in Unthread. A Slack channel is created automatically if the createChannel flag is set to true. Returns the created customer object including id, name, slackChannelId, createdAt, updatedAt, tags, and projectId. Required: name.
- **get_single_unthread_customer_by_id** — Get a single Unthread customer by id. Returns the full customer object including name, slackChannelId, primarySupportAssigneeId, botHandling, autoresponder, supportSteps, tags, slackChannel, createdAt, updatedAt, and projectId. Required: id.
- **update_a_unthread_customer_by_id** — Update an existing Unthread customer by id. Returns the updated customer object including name, slackChannelId, botHandling, autoresponder, supportSteps, tags, slackChannel, createdAt, updatedAt, and projectId. Required: id.
- **delete_a_unthread_customer_by_id** — Delete an Unthread customer by id. Returns an empty 204 response on success. Required: id.
- **list_all_unthread_customers** — List Unthread customers following the standard list conventions with select, order, where, and descending filter parameters. Returns: id, name, primarySupportAssigneeId, primarySupportAssigneeType, secondarySupportAssigneeId, secondarySupportAssigneeType, replyTimeoutMinutes, defaultTriageChannelId, disableAutomatedTicketing, botHandling, autoresponder, supportSteps, slackTeamId,…
- **unthread_knowledge_base_query** — Query the Unthread knowledge base for articles matching a search string, with optional context parameters to influence results. Returns: id, title, content, url, status, userGroupIds, createdAt, updatedAt. Required: query.
- **create_a_unthread_outbound** — Create an outbound message in Unthread. The outbound is sent immediately unless status is set to "draft". Returns: id, status, deliveryMethod, subject, blocks, recipients, sendAs, runAt, title, content, url, userGroupIds, createdAt, updatedAt.
- **update_a_unthread_outbound_by_id** — Update an outbound message in Unthread by id. Drafts can be sent by updating the status to "scheduled". Returns: id, status, deliveryMethod, subject, blocks, recipients, sendAs, runAt, title, content, url, userGroupIds, createdAt, updatedAt. Required: id.
- **list_all_unthread_outbounds** — List all outbound messages in Unthread. Returns: id, status, deliveryMethod, subject, blocks, recipients, sendAs, runAt, title, content, url, userGroupIds, createdAt, updatedAt.
- **get_single_unthread_outbound_by_id** — Get a single outbound message in Unthread by id. Returns: id, status, deliveryMethod, subject, blocks, recipients, sendAs, runAt, title, content, url, userGroupIds, createdAt, updatedAt. Required: id.
- **unthread_reporting_time_series** — Get time-series conversation metrics from Unthread grouped by date and optional dimensions. Returns: data, dates, lookups, id, title, content, url, status, userGroupIds, createdAt, updatedAt. Required: startDate, endDate, metric. Timezone defaults to UTC; response and resolution times are in seconds.
- **list_all_unthread_surveys** — List surveys in Unthread following the standard list conventions. Returns: id, createdAt, updatedAt. Max 100 per page.
- **unthread_surveys_list_responses** — List responses for a specific survey in Unthread following the standard list conventions. Returns: id, createdAt, updatedAt. Required: survey_id. Max 100 per page.
- **unthread_surveys_get_analytics** — Get CSAT analytics for a specific survey in Unthread. Returns: id, title, content, url, status, userGroupIds, createdAt, updatedAt. Required: survey_id.
- **unthread_slack_bulk_update** — Update a Slack user group mapping in Unthread by providing the user's email and Slack handle. Returns: email, slackHandle, id, title, content, url, status, userGroupIds, createdAt, updatedAt. Required: email, slackHandle.
- **create_a_unthread_tag** — Create a new tag in Unthread. Returns the created tag object including id, name, description, autoTaggingEnabled, and projectId. Required: name.
- **get_single_unthread_tag_by_id** — Get a single Unthread tag by id. Returns: id, name, description, autoTaggingEnabled, projectId, title, content, url, status, userGroupIds, createdAt, updatedAt. Required: id.
- **update_a_unthread_tag_by_id** — Update an Unthread tag by id. Returns the updated tag including id, name, description, autoTaggingEnabled, and projectId. Required: id.
- **delete_a_unthread_tag_by_id** — Delete an Unthread tag by id. Returns an empty 204 response on success. Required: id.
- **list_all_unthread_tags** — List Unthread tags following the standard list conventions. Returns: id, name, description, autoTaggingEnabled, projectId. Max 100 per page.
- **unthread_tags_link_customers** — Assign a tag to multiple Unthread customers by providing an array of customer IDs. Returns an empty 204 response on success. Required: tag_id, and a request body array of customer IDs.
- **unthread_tags_link_conversations** — Assign a tag to multiple Unthread conversations by providing an array of conversation IDs. Returns an empty 204 response on success. Required: tag_id, and a request body array of conversation IDs.
- **unthread_tags_unlink_customers** — Remove a tag from multiple Unthread customers by providing an array of customer IDs. Returns an empty 204 response on success. Required: tag_id, and a request body array of customer IDs.
- **unthread_tags_unlink_conversations** — Remove a tag from multiple Unthread conversations by providing an array of conversation IDs. Returns an empty 204 response on success. Required: tag_id, and a request body array of conversation IDs.
- **create_a_unthread_ticket_type** — Create a new ticket type in Unthread with custom fields and conditional visibility rules. Returns: id, name, projectId, description, createdAt, updatedAt, fields, title, content, url, status, userGroupIds. Required: name, description.
- **update_a_unthread_ticket_type_by_id** — Update a ticket type in Unthread by id, including its name, description, and field definitions. Returns: id, name, projectId, description, createdAt, updatedAt, fields, title, content, url, status, userGroupIds. Required: id.
- **delete_a_unthread_ticket_type_by_id** — Delete a ticket type in Unthread by id. Returns an empty 204 response on success. Required: id.
- **list_all_unthread_ticket_types** — List ticket types in Unthread using the standard list conventions with select, order, where, and descending parameters. Returns: id, name, projectId, description, createdAt, updatedAt, fields.
- **get_single_unthread_ticket_type_by_id** — Get a single ticket type in Unthread by id. Returns: id, name, projectId, description, createdAt, updatedAt, fields, title, content, url, status, userGroupIds. Required: id.
- **list_all_unthread_users** — List Unthread users synced from your Slack workspace. Returns: id. Pass includeExternalUsers as true to also return external users. Max 100 per page.
- **get_single_unthread_user_by_id** — Get a single Unthread user by id. Returns: id, name, email, slackId, photo, customFields, title, content, url, status, userGroupIds, createdAt, updatedAt. Required: id.
- **update_a_unthread_user_by_id** — Update an Unthread user by id. Returns the updated user with id, name, email, slackId, photo, and customFields. Required: id.
- **list_all_unthread_user_groups** — List user groups in Unthread following the standard list conventions with support for select, order, where, and descending parameters. Returns: id. Max 100 per page.
- **get_single_unthread_user_group_by_id** — Get a single Unthread user group by id. Returns: id, description, isExternal, filters, projectId, title, content, url, status, userGroupIds, createdAt, updatedAt. Required: id.
- **update_a_unthread_user_group_by_id** — Update an Unthread user group by id. Returns the updated user group including id, description, isExternal, filters, and projectId. Required: id.
- **create_a_unthread_webhook_subscription** — Create a webhook subscription in Unthread. Returns: id, url, enabled, title, content, status, userGroupIds, createdAt, updatedAt. Required: url.
- **update_a_unthread_webhook_subscription_by_id** — Update a webhook subscription in Unthread by id. Returns: id, url, enabled, title, content, status, userGroupIds, createdAt, updatedAt. Required: id.
- **delete_a_unthread_webhook_subscription_by_id** — Delete a webhook subscription in Unthread by id. Returns an empty 204 response on success.
- **list_all_unthread_webhook_subscriptions** — List webhook subscriptions in Unthread. Returns: id, url, enabled, title, content, status, userGroupIds, createdAt, updatedAt.
- **list_all_unthread_conversation_messages** — List messages for a given Unthread conversation. Returns: ts, userId, userTeamId, botId, botName, text, subtype, conversationId, timestamp, threadTs, conversation, user, metadata. Required: conversation_id.
- **create_a_unthread_conversation_message** — Create a new message in an Unthread conversation, posted into the Slack thread. Returns the created message including ts, text, userId, conversationId, timestamp, botName, and metadata. Required: conversation_id. Either body, blocks, or markdown must be provided.
- **create_a_unthread_knowledge_base_article** — Create a new knowledge base article in Unthread. Returns: id, title, content, url, status, userGroupIds, createdAt, updatedAt. Required: title, content.
- **get_single_unthread_knowledge_base_article_by_id** — Get a single knowledge base article in Unthread by id. Returns: id, title, content, url, status, userGroupIds, createdAt, updatedAt. Required: id.
- **update_a_unthread_knowledge_base_article_by_id** — Update an existing knowledge base article in Unthread by id. Returns: id, title, content, url, status, userGroupIds, createdAt, updatedAt. Required: id.
- **delete_a_unthread_knowledge_base_article_by_id** — Delete a knowledge base article in Unthread by id. Returns an empty 204 response on success. Required: id.
- **list_all_unthread_knowledge_base_articles** — List knowledge base articles in Unthread following standard list conventions with support for field selection, filtering, and sorting. Returns: id, title, content, url, status, userGroupIds, createdAt, updatedAt. Max 100 per page.

## How it works

1. **Link your customer's Unthread account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Unthread.** The Proxy API is a 1-to-1 mapping of the Unthread API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Sync engineering bugs to Slack support threads** — Issue trackers and project management tools can let their users escalate Unthread conversations into engineering tickets, then push status updates back into the original Slack thread so support agents never leave their workflow.
- **Feed documentation into Unthread's AI agent** — Wiki, CMS, and knowledge management platforms can push published articles into Unthread's knowledge base so the Slack AI bot uses fresh, ground-truth content to auto-resolve customer questions.
- **Enrich support conversations with CRM context** — CRM and Customer Success platforms can sync ARR, health scores, and account metadata into Unthread customer records so agents see full account context the moment a Slack ticket opens.
- **Track support health as a churn signal** — CS platforms can pull Unthread reporting time-series and CSAT survey analytics to correlate SLA breaches and ticket spikes with account health, surfacing at-risk customers automatically.
- **Automate approvals for internal helpdesk requests** — HR, IT, and procurement tools can listen for tagged Unthread conversations, trigger approval requests, and assign the right collaborator once approved — turning Slack channels into fully governed request workflows.

## What you can build

- **Bidirectional ticket sync** — Link Unthread conversations to external tasks in your product and mirror status changes and comments back into the Slack thread using conversation messages.
- **Knowledge base publishing pipeline** — Push articles from your docs platform into Unthread's KB with scoped visibility per user group, and keep them updated as content changes.
- **Customer context enrichment** — Sync account metadata, custom fields, and CRM identifiers into Unthread customer objects so support agents see enriched data on every conversation.
- **Support analytics dashboards** — Pull time-series reporting and CSAT survey responses to build health scores, SLA tracking, and churn-risk indicators inside your product.
- **On-call and collaborator routing** — Map on-call schedules or team rosters to Unthread user groups and auto-assign the right collaborator to conversations based on priority or tag.
- **Tag-driven approval workflows** — Subscribe to conversation events via webhooks, trigger Unthread approval requests based on tags, and complete the loop by assigning fulfillers once decisions are made.

## FAQs

### How is authentication to Unthread handled?

Truto manages Unthread API credentials on behalf of your end users, so you don't need to build a token exchange, storage, or refresh layer. You call Truto's endpoints and we route the request to the correct Unthread account.

### Can I sync messages bidirectionally between my product and Unthread's Slack threads?

Yes. You can list conversation messages and create new messages via the API — messages you create are natively posted into the associated Slack thread with the correct bot and user metadata.

### How do I get notified when an Unthread conversation changes?

Unthread supports webhook subscriptions, which you can create, update, list, and delete through the available tools. Use them to react to conversation status changes, new messages, or tag events instead of polling.

### Can I attach custom metadata from my system to Unthread customers?

Yes. The customer object supports external CRM metadata and custom fields, so you can persist ARR tier, health score, account IDs, or any other data from your product for agents to see in Slack.

### How do I hand off an Unthread conversation to my own product as a linked task?

Use the create external task action on a conversation. It returns integration and provider identifiers so you can maintain a durable link between your task and the Unthread conversation for status sync.

### What analytics can I pull for reporting or health scoring?

You can pull time-series reporting metrics (response and resolution times grouped by date and dimensions), list survey responses, and fetch survey analytics tied to conversations — enough to power SLA dashboards and CSAT-based signals.

## Related reading

- [Connect Unthread to ChatGPT: Automate Support and Customer Tracking](https://truto.one/blog/connect-unthread-to-chatgpt-automate-support-and-customer-tracking/) — Learn how to connect Unthread to chatgpt using Truto. Step-by-step guide to tool calling, API quirks, and autonomous workflows.
- [Connect Unthread to Claude: Manage Support Knowledge and Metrics](https://truto.one/blog/connect-unthread-to-claude-manage-support-knowledge-and-metrics/) — Learn how to connect Unthread to Claude using a managed MCP server. This guide covers setup, tool calling, and automating support workflows and metric analysis.
- [Connect Unthread to AI Agents: Orchestrate Support Tasks and Tags](https://truto.one/blog/connect-unthread-to-ai-agents-orchestrate-support-tasks-and-tags/) — Learn how to connect Unthread to ai agents using Truto. Step-by-step guide to tool calling, API quirks, and autonomous workflows.
