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
Setting Up Webhooks
Manage Webhooks
- 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:
Stop Reason Values:
"finish": Task completed successfully and has final results"ask": Task paused and requires user input or confirmation to continue
Example Payload (Task Completed):
question_expectation.event_id identifies the underlying question event, not the webhook notification identified by the top-level event_id. This nested ID is webhook-only (v2 message lists use the enclosing message’s id); it is neither required for a reply nor an idempotency key.
options contains candidate display text. Use selection_mode (single or multiple) as a UI hint, not as an enforced answer schema. Users may reply with their own text. For multiple selections, combine the selected text into one readable prompt; no delimiter or option-ID array is required. For free-text questions, options is []; single is the default mode, not a restriction on the text.
The fixed response_method: "send_message" means an ordinary conversational reply. In v1 this maps to POST /v1/tasks, not a separate message endpoint. For example, reply with:
task_deleted Event
When it triggers: After a task created via the API is deleted, whether in the Manus app or with Delete Task. 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:
task_deleted event, the v2 task.list endpoint with include_deleted=true returns deleted tasks with status: "deleted" and deleted_at.
Unknown Event Types
Manus may add new event types. Route deliveries byevent_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