---
title: "Post a message to a conversation"
method: POST
path: "/api/w/{wId}/assistant/conversations/{cId}/messages"
tags: ["Private Messages"]
---

# Post a message to a conversation

`POST /api/w/{wId}/assistant/conversations/{cId}/messages`

Post a new user message to an existing conversation, triggering agent responses.

## Path parameters

- `wId` string, required
- `cId` string, required

## Request body

- object
  - `content` string, required
  - `mentions` PrivateMention[], required
    - `configurationId` string — Agent configuration sId (for agent mentions)
    - `type` 'user' — Present only for user mentions
    - `userId` string — User sId (for user mentions)
  - `context` object, required
    - `timezone` string
    - `profilePictureUrl` string, nullable
    - `origin` string, nullable
    - `clientSideMCPServerIds` string[]
    - `selectedMCPServerViewIds` string[]
    - `selectedSpaceIds` string[]
  - `skipToolsValidation` boolean
  - `modelSelection` object — Optional per-message model override from the input-bar model picker (an explicit model pick).
    - `providerId` string, required
    - `modelId` string, required
    - `reasoningEffort` string

## Response `200`

Successfully posted message

- object
  - `message` PrivateUserMessage — A user message in a conversation.
    - `id` integer
    - `type` 'user_message', required
    - `sId` string, required
    - `created` integer, required
    - `visibility` 'visible' | 'deleted'
    - `version` integer, required
    - `rank` integer, required
    - `branchId` string, nullable — Legacy, always null. Branches were removed.
    - `user` object, nullable — The user who sent the message
      - `sId` string
      - `username` string
      - `fullName` string
      - `image` string, nullable
    - `mentions` PrivateMention[]
      - `configurationId` string — Agent configuration sId (for agent mentions)
      - `type` 'user' — Present only for user mentions
      - `userId` string — User sId (for user mentions)
    - `richMentions` PrivateRichMentionWithStatus[]
      - `id` string, required
      - `type` 'agent' | 'user', required
      - `label` string, required
      - `pictureUrl` string, required
      - `description` string, required
      - `userFavorite` boolean
      - `dismissed` boolean, required
      - `status` 'pending_conversation_access' | 'pending_project_membership' | 'approved' | 'rejected' | 'user_restricted_by_conversation_access' | 'agent_restricted_by_space_usage', required
    - `content` string, required
    - `context` PrivateUserMessageContext — Context metadata for a user message.
      - `username` string, required
      - `fullName` string, nullable
      - `email` string, nullable
      - `profilePictureUrl` string, nullable
      - `timezone` string, required
      - `origin` 'web' | 'project_kickoff' | 'extension' | 'agent_sidekick' | 'api' | 'cli' | 'cli_programmatic' | 'email' | 'excel' | 'gsheet' | 'make' | 'n8n' | 'powerpoint' | 'raycast' | 'slack' | 'slack_workflow' | 'teams' | 'transcript' | 'triggered_programmatic' | 'triggered' | 'wakeup' | 'zapier' | 'zendesk' | 'onboarding_conversation', required
      - `selectedSpaceIds` string[]
    - `reactions` PrivateReaction[]
      - `emoji` string, required
      - `users` object[], required
        - `userId` string, nullable
        - `username` string
        - `fullName` string, nullable
  - `contentFragments` PrivateContentFragment[]
    - `type` 'content_fragment', required
    - `id` integer
    - `sId` string, required
    - `created` integer
    - `visibility` 'visible' | 'deleted'
    - `version` integer
    - `rank` integer
    - `title` string, required
    - `contentType` string, required — MIME type of the content
    - `sourceUrl` string, nullable
    - `context` object
      - `username` string, nullable
      - `fullName` string, nullable
      - `email` string, nullable
      - `profilePictureUrl` string, nullable
    - `contentFragmentId` string
    - `contentFragmentVersion` 'superseded' | 'latest'
    - `contentFragmentType` 'file' | 'content_node', required — Whether this is a file upload or a content node reference
    - `expiredReason` 'data_source_deleted', nullable
    - `fileId` string, nullable — Present for file content fragments
    - `path` string, nullable — Path of this file inside the sandbox conversation mount.
    - `processedPath` string, nullable — Path of the plain-text sibling of this file inside the sandbox conversation mount (e.g. an audio transcript), when it has one.
    - `skipFileProcessing` boolean — Whether upload-time file processing was skipped.
    - `snippet` string, nullable
    - `textUrl` string, nullable
    - `textBytes` integer, nullable
    - `nodeId` string, nullable — Present for content node fragments
    - `nodeDataSourceViewId` string, nullable
  - `agentMessages` PrivateAgentMessage[]
    - `id` integer
    - `agentMessageId` integer
    - `type` 'agent_message', required
    - `sId` string, required
    - `created` integer
    - `completedTs` integer, nullable
    - `visibility` 'visible' | 'deleted'
    - `version` integer, required
    - `rank` integer, required
    - `branchId` string, nullable — Legacy, always null. Branches were removed.
    - `parentMessageId` string, required
    - `parentAgentMessageId` string, nullable — If handover, the agent message that summoned this agent
    - `status` 'created' | 'succeeded' | 'failed' | 'cancelled', required
    - `content` string, nullable
    - `chainOfThought` string, nullable
    - `error` object, nullable
      - `code` string
      - `message` string
      - `metadata` object, nullable
    - `configuration` PrivateLightAgentConfiguration — Agent configuration as returned by the private list endpoint.
      - `id` integer, required
      - `sId` string, required
      - `version` integer, required
      - `versionCreatedAt` string, nullable
      - `versionAuthorId` integer, nullable
      - `name` string, required
      - `description` string, required
      - `instructions` string, nullable
      - `pictureUrl` string, required
      - `status` 'active' | 'archived' | 'draft' | 'pending' | 'disabled_by_admin' | 'disabled_missing_datasource' | 'disabled_free_workspace', required — Agent status
      - `scope` 'global' | 'visible' | 'hidden', required
      - `userFavorite` boolean
      - `model` object, required
        - `providerId` string
        - `modelId` string
        - `temperature` number
        - `reasoningEffort` 'none' | 'light' | 'medium' | 'high'
      - `maxStepsPerRun` integer, required
      - `tags` object[], required
        - `sId` string
        - `name` string
      - `templateId` string, nullable
      - `requestedGroupIds` array[]
        - string[]
      - `requestedSpaceIds` string[]
      - `canRead` boolean
      - `canEdit` boolean
      - `lastAuthors` string[] — Optional, returned when withAuthors query param is set
      - `editors` object[] — Optional, returned when withEditors query param is set
        - `sId` string
        - `fullName` string
        - `image` string, nullable
      - `usage` object — Optional, returned when withUsage query param is set
        - `messageCount` integer
        - `conversationCount` integer
        - `userCount` integer
        - `timePeriodSec` integer
      - `feedbacks` object — Optional, returned when withFeedbacks query param is set
        - `up` integer
        - `down` integer
    - `actions` object[] — MCP actions executed by the agent
    - `contents` object[]
      - `step` integer
      - `content` object
    - `skipToolsValidation` boolean
    - `richMentions` PrivateRichMentionWithStatus[]
      - `id` string, required
      - `type` 'agent' | 'user', required
      - `label` string, required
      - `pictureUrl` string, required
      - `description` string, required
      - `userFavorite` boolean
      - `dismissed` boolean, required
      - `status` 'pending_conversation_access' | 'pending_project_membership' | 'approved' | 'rejected' | 'user_restricted_by_conversation_access' | 'agent_restricted_by_space_usage', required
    - `completionDurationMs` integer, nullable
    - `reactions` PrivateReaction[]
      - `emoji` string, required
      - `users` object[], required
        - `userId` string, nullable
        - `username` string
        - `fullName` string, nullable
    - `costCredits` integer, nullable — Cost of producing this agent message, in credits (intelligence + tool credits). Null when no billable usage is attributed to the message.
    - `subAgentCostCredits` number, nullable — Aggregated credit cost of all sub-agents (run_agent / agent_handover) spawned recursively by this message. Computed only on single-message fetches. Null otherwise.
    - `resolvedModel` object, nullable — Model triplet used to generate the message. Null when the agent ran its configured model (legacy).
      - `providerId` string
      - `modelId` string
      - `reasoningEffort` string
    - `modelResolutionMethod` 'agent' | 'user' | 'auto', nullable — How resolvedModel was chosen - agent (configured model), user (per-message picker), or auto (routed through the auto model). Null (legacy).

## Other responses

- `401` — Unauthorized

---

[API](https://skmtc.net/dust-tt/apis/dust-api-documentation.md) · [All operations](https://skmtc.net/dust-tt/apis/dust-api-documentation/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/dust-tt/dust-api-documentation/versions/5834d690c29d/schema)
