Skip to main content
POST
/
api
/
user
/
manage
/
v1
/
users
Create User
curl --request POST \
  --url https://api.manus.im/api/user/manage/v1/users \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "email": "new.user@example.com",
  "role": "member"
}
'
{
  "email": "user@example.com",
  "userName": "Jane Doe",
  "firstName": "Jane",
  "lastName": "Doe",
  "status": "active",
  "role": "member"
}
Questions or issues? Contact us at api-support@manus.ai.
Auth: Bearer access token from oauth.token.Auto-provisioning: If the email does not yet have a Manus account, a personal account is created automatically (deactivated outside the team). The team membership is then attached to that account.Role: Required. Accepts super_admin, admin, member, or free_tier_member. owner is read-only and rejected. free_tier_member is a non-paying role that does not consume a Stripe seat.Display name: If firstName and/or lastName are provided, the team display name is firstName lastName. Otherwise userName is used as-is.Idempotency: Not idempotent — calling twice with the same email returns 409 USER_ALREADY_EXISTS. Look up first via users.detail if you may be retrying.

Authorizations

Authorization
string
header
required

OAuth 2.0 Client Credentials access token issued by /api/user/manage/v1/oauth/token. Lifetime is 1 hour.

Body

application/json
email
string<email>
required
Example:

"new.user@example.com"

role
enum<string>
required

Initial team role. free_tier_member is a non-paying member that does not consume a Stripe seat.

Available options:
super_admin,
admin,
member,
free_tier_member
Example:

"member"

userName
string

Display name. Optional.

Example:

"New User"

firstName
string
Example:

"New"

lastName
string
Example:

"User"

Response

User created.

A team member.

email
string<email>
Example:

"user@example.com"

userName
string
Example:

"Jane Doe"

firstName
string
Example:

"Jane"

lastName
string
Example:

"Doe"

status
enum<string>
Available options:
active,
inactive
Example:

"active"

role
enum<string>

owner is read-only — it cannot be set or changed via API. free_tier_member is a non-paying member that does not consume a Stripe seat.

Available options:
owner,
super_admin,
admin,
member,
free_tier_member
Example:

"member"