Skip to main content
Questions or issues? Contact us at api-support@manus.ai. The Manus API enforces per-user rate limits on every v2 endpoint. All API keys that belong to the same user share a single counter, and limits are measured in requests per minute. There is currently no tier differentiation — the same limit applies regardless of subscription plan.

Limits by endpoint

Tasks

EndpointLimit
task.create10 / min
task.sendMessage10 / min
task.detail100 / min
task.list100 / min
task.listMessages100 / min
task.update40 / min
task.stop40 / min
task.delete40 / min
task.confirmAction40 / min

Projects

EndpointLimit
project.create40 / min
project.list100 / min

Skills

EndpointLimit
skill.list100 / min

Agents

EndpointLimit
agent.list100 / min
agent.detail100 / min
agent.update40 / min

Files

EndpointLimit
file.upload40 / min
file.detail100 / min
file.delete40 / min

Webhooks

EndpointLimit
webhook.create40 / min
webhook.list100 / min
webhook.delete40 / min

Usage

EndpointLimit
usage.list600 / min
usage.teamStatistic600 / min
usage.teamLog600 / min

Connectors

EndpointLimit
connector.list100 / min

Browser

EndpointLimit
browser.onlineList100 / min

Error response

Requests that exceed the limit return HTTP 429 with the rate_limited error code:
{
  "ok": false,
  "request_id": "req_abc123",
  "error": {
    "code": "rate_limited",
    "message": "Rate limit exceeded. Please retry after a short backoff."
  }
}

Best practices

  • Back off on 429 with exponential delay plus jitter; don’t retry immediately in a tight loop.
  • Prefer webhooks over polling for task progress — see Webhooks. Each task.listMessages poll counts against the 100 / min limit for that endpoint.
  • Use cursor pagination (cursor + next_cursor) on list endpoints so a single logical read can span minutes without a burst.
  • Cache stable values such as the public key returned by webhook.publicKey — it rarely changes.