Skip to main content
POST
SendMessage
Questions or issues? Contact us at api-support@manus.ai.
OAuth scope: create_task or manage_all_tasks — see the Open App guide. With create_task scope, can only access tasks created by this Open App.
Shortcut: Use agent-default-main_task as task_id to send messages to the IM agent directly.Structured Output: Pass structured_output_schema to extract a JSON result when the task next finishes. A new schema replaces the previous one. See the Structured Output guide.Attach files: Upload via file.upload and pass the file_id in the message content, or use file_url / file_data directly. There is no hard limit on the number of attachments.Connectors: Control this task’s connectors with message.connectors and the top-level clear_connectors flag (three states):
  • Override — pass a non-empty message.connectors to replace the task’s connectors with the new list. Get IDs from connector.list or the Connectors guide.
  • Clear — pass clear_connectors: true to remove all connectors from the task.
  • Reuse (default) — omit both to keep the connectors configured at task.create time.
Passing a non-empty message.connectors together with clear_connectors: true returns InvalidArgument.Enable skills: Pass skill IDs from skill.list in message.enable_skills to control which skills are available for the agent. If omitted, the user’s default enabled skills are loaded automatically.Force skills: Pass skill IDs in message.force_skills to ensure the agent invokes them. Forced skills are automatically available even if not listed in enable_skills.Waiting events: Use this endpoint to reply when the agent asks a question (messageAskUser). For other waiting types like gmailSendAction or deployAction, use task.confirmAction instead.
Attachment size limits depend on how you reference the file:
  • file_id — a file pre-uploaded via file.upload. No additional limit here; it is bound only by the upload limits (≤ 512 MB per file).
  • file_url — a direct URL that Manus downloads. Capped at 20 MB.
  • file_data — inline base64 content. Capped at 20 MB after decoding (~26.7 MB of base64 text).
These are two different paths: large files must be uploaded via file.upload first and referenced by file_id. Inline file_url / file_data attachments cannot exceed 20 MB.

Headers

x-manus-api-key
string

API key for direct authentication. Provide either this or Authorization, not both. See Authentication.

Authorization
string

OAuth2 access token in Bearer {token} format. Provide either this or x-manus-api-key, not both. See the Open App guide.

Example:

"Bearer {access_token}"

Body

application/json
task_id
string
required

The unique identifier of the task to send the message to. Supports the shortcut agent-default-main_task for the IM agent's main task.

message
object
required

The follow-up message. Supports the same content formats as task.create (plain text or multi-part with files). Note: message.connectors behaves differently here than in task.create — a non-empty list overrides the task's connectors, while omitting it (or passing an empty array) reuses the connectors configured at task.create time rather than re-resolving project/user defaults. To remove all connectors, use the top-level clear_connectors field instead.

agent_profile
enum<string>

Agent profile to use for this turn. "manus-1.6" — standard capability. "manus-1.6-lite" — lightweight, faster responses. "manus-1.6-max" — maximum capability. Omit (or pass empty string) to keep the task's current profile; this endpoint does not default to manus-1.6 like task.create does. Free personal accounts are downgraded to manus-1.6-lite regardless of the requested value.

Available options:
manus-1.6,
manus-1.6-lite,
manus-1.6-max
structured_output_schema
object

JSON Schema for structured output extraction. Arms the schema for the next time this task finishes (stop_reason: finish). Sending a new schema replaces any previous one. Omitting this field leaves the current schema state unchanged — it does not clear an armed schema. See the Structured Output guide.

clear_connectors
boolean
default:false

Removes all connectors from this task for this and subsequent turns. Combine with message.connectors to form three states: a non-empty message.connectors overrides the task's connectors with the new list; clear_connectors: true clears all connectors; omitting both reuses the connectors configured at task.create time. Passing a non-empty message.connectors together with clear_connectors: true is a conflict and returns InvalidArgument.

Response

Message sent successfully. The task will resume processing.

ok
boolean

Whether the request was successful.

Example:

true

request_id
string

Unique identifier for this API request.

task_id
string

The ID of the task the message was sent to.