Skip to main content
Questions or issues? Contact us at api-support@manus.ai.

Overview

Webhooks allow you to receive real-time notifications when important events occur in your Manus tasks. When you register a webhook, Manus will send HTTP POST requests to your specified callback URL whenever these events are triggered.

How Webhook Events Work

When you create and execute tasks, these lifecycle events can trigger webhook deliveries:
  • Task Creation: Immediately after a task is successfully created via the API
  • Task State Change: When a task completes, or requires user input
  • Task Deletion: When a task created via the API is deleted, in the Manus app or through the API
Each webhook delivery contains a specific event type identifier and a structured payload with relevant task information. Your endpoint will receive these as standard HTTP POST requests that you can process like any other API call.

Setting Up Webhooks

Manage Webhooks

Open Developers settings to create or manage webhooks.
Before activating a webhook, Manus will send a test request to verify your endpoint is accessible and responding correctly. Your endpoint should:
  • Respond with HTTP status code 200
  • Accept POST requests with JSON payloads
  • Respond within 10 seconds

Event Types and Payloads

task_created Event

When it triggers: Immediately after a new task is successfully created. Why it’s useful: Allows you to track task creation in your own systems, send confirmation emails, or update dashboards in real-time. Payload Schema: Example Payload:

task_stopped Event

When it triggers: When a task reaches a stopping point - either because it completed successfully or needs user input to proceed. Why it’s useful: Essential for knowing when your tasks finish and what the outcome was. Enables automated workflows based on task completion. Payload Schema: question_expectation.event_id identifies the underlying question event, not the webhook notification identified by the top-level event_id. It is not a reply parameter or a send-message idempotency key. In task.listMessages, use the enclosing message’s id; the nested event_id is absent. options contains display text, not option IDs or mandatory exact-match answers. An empty array means free-text input; selection_mode defaults to single and is only a UI hint. For multiple, combine the chosen text into one readable message.content; no delimiter or option-ID array is required, and users may supply their own text. See Answer an agent question for a request example and unknown-method handling. Stop Reason Values:
  • "finish": Task completed successfully and has final results
  • "ask": Task paused and requires user input or confirmation to continue
Attachment Object Schema: Example Payload (Task Completed):
Example Payload (User Input Required):

task_deleted Event

When it triggers: After a task created via the API is deleted, whether in the Manus app or with task.delete. It is not sent when tasks are removed because the account itself is deleted. Why it’s useful: Lets you remove or archive the task in your own systems without polling. Payload Schema: Example Payload:
If your endpoint misses a task_deleted event, call task.list with include_deleted=true. Deleted tasks are returned with status: "deleted" and deleted_at.

Unknown Event Types

Manus may add new event types. Route deliveries by event_type, ignore types you do not handle, and still respond with HTTP 200.

Integration Examples

Slack Integration

Post task updates directly to Slack channels:

Custom Dashboard Updates

Update your internal dashboards in real-time:

Troubleshooting

Common Issues

  • Webhook not receiving events: Verify your URL is accessible and returns 200 status
  • SSL/TLS errors: Ensure your endpoint uses valid HTTPS certificates
  • Timeout errors: Make sure your endpoint responds within 10 seconds

Testing Your Webhook

You can test your webhook endpoint using tools like:
  • webhook.site for quick testing
  • ngrok for local development
  • Postman or curl for manual testing