Questions or issues? Contact us at api-support@manus.ai. After creating a task with task.create, the agent runs asynchronously. Use task.listMessages to poll for events and track progress, or set up Webhooks to receive push notifications when task status changes.Documentation Index
Fetch the complete documentation index at: https://open.manus.ai/docs/llms.txt
Use this file to discover all available pages before exploring further.
Task status
Look forstatus_update events in the response. The agent_status field tells you what to do next:
| agent_status | Meaning | Action |
|---|---|---|
running | Agent is working | Keep polling |
stopped | Task completed | Read assistant_message events for results |
waiting | Needs user confirmation or input | Handle based on event type (see below) |
error | Task failed | Read error_message for details |
Handling waiting status
When agent_status is waiting, the status_detail tells you what the agent needs:
waiting_for_event_type:
messageAskUser— The agent is asking a question. Reply with task.sendMessage. Do not usetask.confirmAction.- All other types — Confirm or reject via task.confirmAction. The
confirm_input_schemafield in the event is a JSON Schema describing the expectedinputformat — use it to validate or dynamically build the confirmation payload.
Using task.confirmAction
input format varies by waiting_for_event_type. The table below lists currently supported event types — new types may be added in the future. Always check the confirm_input_schema returned in each event for the definitive schema.
| Event Type | Description | Example Input |
|---|---|---|
needConnectMyBrowser | Select a browser from browser.onlineList, or skip | { "action": "select", "client_id": "..." } or { "action": "skip" } |
gmailSendAction | Confirm send, or save as draft | { "accept": true } or { "accept": true, "save_draft": true } |
outlookSendMailsAction | Confirm send, or save as draft | { "accept": true } or { "accept": true, "save_draft": true } |
deployAction | Confirm deploy. Set global_allow to skip future confirmations | { "accept": true, "global_allow": true } |
terminalExecute | Confirm command. Set always_allow to skip future confirmations | { "accept": true, "always_allow": true } |
videoGenerate | Select video quality: standard (default) or premium | { "choice": "standard" } |
apiHighCreditNotice | Respond to high-credit notice: accept, reject, or do_not_show_again | { "action": "accept" } |
googleCalendarCreate | Confirm calendar event creation | { "accept": true } |
googleCalendarUpdate | Confirm calendar event update | { "accept": true } |
googleCalendarDelete | Confirm calendar event deletion | { "accept": true } |
outlookCalendarCreate | Confirm calendar event creation | { "accept": true } |
outlookCalendarUpdate | Confirm calendar event update | { "accept": true } |
outlookCalendarDelete | Confirm calendar event deletion | { "accept": true } |
metaMarketingAction | Confirm marketing action. Optionally select ad accounts via selectedAccountIds | { "accept": true, "selectedAccountIds": ["act_123"] } |
metaMarketingActionResult | Confirm marketing result. Optionally specify mode | { "accept": true } |
webdevRunAction | Run web app. mode: quality / speed (default) / max | { "accept": true, "mode": "speed" } |
webdevRunAction (deploy) | Deploy web app. visibility: owner (default) / team / public | { "accept": true, "visibility": "owner" } |
webdevRequestSecrets | Provide secrets as [{key, value}] array, or reject with accept: false | { "accept": true, "secrets": [{"key": "X", "value": "Y"}] } |
connectorOauthExpired | Re-authorize expired connector | { "accept": true } |
mapreduceAction | Confirm map-reduce operation | { "accept": true } |
For event types that support
accept, passing accept: false will not produce any event — the task remains in waiting status. Exception: webdevRequestSecrets where accept: false explicitly rejects the request.Using My Browser
You can let the agent use your local browser. When the agent needs a browser during execution, it will trigger aneedConnectMyBrowser waiting event. Use browser.onlineList to get available clients, then select one via task.confirmAction: