---
title: "Service: /groups/{group}/members [POST]"
source: https://dev.pageseeder.com/api/services/memberships-POST.html
description: "Creates a new member in PageSeeder and adds them to a group. Requires email or username, with optional password, activation, and group-specific settings like role and notification preferences."
last_updated: 2026-09-02T11:36:04+10:00
document_type: api_endpoint
operation_id: membership-POST
resource_id: membership
path_template: /groups/{group}/members
http_method: POST
api_category: membership
implementation_version: 6.2004
api_since: 4.9100
deprecated_since: null
obsolete_since: null
api_support: supported
cache_control: N/A
generated_at: 2026-09-02
tokens: ~1730
---

# /groups/\{group\}/members \[POST\]

## Description

Create a member and add the member to a group.

Creates a new member in PageSeeder and invites the member to a group.

This service can also be used to register the new [Member](../../reference/glossary/member.md) to a [Group](../../reference/glossary/group.md).

### Member details

Both the firstname and surname are limited to 50 characters. If the first name is not specified, it defaults to `Member`.

The member-username must be less than 100 characters, unique and cannot contain a ‘@’. The username is required unless an email address is specified.

The email must be less than 100 characters, unique and be a valid Email address. The email address is required unless a username is specified.

### Password details

The member-password must be less than 100 characters. When the [Password](../../reference/glossary/password.md) is not specified, the member’s email is used if no confirmation is needed, otherwise, a new password is generated.

Passwords must satisfy a given strength check to be accepted:

- Regular members must have at least a **MEDIUM** strength
- Administrators must use a **STRONG** password

### Other member options

It is possible to create a personal group using the personal-group boolean parameter.

To send a welcome email to the new member, use the welcome-email boolean parameter.

The account can be automatically activated by using the auto-activate boolean parameter. If the member-password is not set, then the member’s status is `set-password` (not `activated`) even if auto-activate is `true`.

### Group membership parameters

If a group is specified on the request, the new member is also added to the group. All group membership parameters are optional and default to the group’s default values.

The notification parameter must be one of `immediate`, `essential`, `daily`, `weekly` or `none`. Users are able to subsequently change this setting through the user interface in their group registration options.

The role parameter must be one of `guest`, `reviewer`, `contributor`, `manager`, `approver`, `moderator-and-approver`, `moderator`.

The listed boolean parameter can be used to override the group’s default setting. It affects whether other group members are able to see the member’s user details. Users are able to subsequently change this setting through the user interface in their group registration options.

The invitation parameter can be used to force the group invitation email to be sent to the new member or to prevent that email to be sent. The default behavior follows the value of the project property `acceptInvitationRequired`.

Additional information specific to the group can also be attached to the user using the details fields field1 to field15.

> **Warning:** The assignment of the group specific fields might change in future releases.

## Parameters

| Name | Description | Required | Type | Default |
| --- | --- | --- | --- | --- |
| email | The new member’s email address (required if no member-username) | yes | email | `No Email` *(if username specified)* |
| member-username | The new member’s username, defaults to the member's email address (required if no email) | yes | string | *member’s email* |
| auto-activate | Whether to activate the new member automatically (member-password should also be set) | no | boolean | `false` |
| field1 | Custom field #1 | no | string |  |
| field10 | Custom field #10 | no | string |  |
| field11 | Custom field #11 | no | string |  |
| field12 | Custom field #12 | no | string |  |
| field13 | Custom field #13 | no | string |  |
| field14 | Custom field #14 | no | string |  |
| field15 | Custom field #15 | no | string |  |
| field2 | Custom field #2 | no | string |  |
| field3 | Custom field #3 | no | string |  |
| field4 | Custom field #4 | no | string |  |
| field5 | Custom field #5 | no | string |  |
| field6 | Custom field #6 | no | string |  |
| field7 | Custom field #7 | no | string |  |
| field8 | Custom field #8 | no | string |  |
| field9 | Custom field #9 | no | string |  |
| firstname | The new member’s given/other name | no | string | `Member` |
| invitation | Whether to create an invitation, otherwise force membership | no | boolean | *depends on project property* |
| listed | Whether the member’s email address is listed in the group | no | boolean | `false` |
| member-password | The new member’s password, is generated if unspecified | no | string | *(generated)* |
| notification | The member’s notification option in the group | no  | enum | *depends on group flags* |
| personal-group | Whether to create the personal group | no | boolean | `false` |
| role | The member’s role in the group | no  | enum | *depends on group flags * |
| surname | The new members family name | no | string | *4 random digits* |
| welcome-email | Whether to send a welcome email to the new member | no | boolean | `true` |
| notify-async | Whether to send emails asynchronously (for slow email servers) | no | boolean | `false` |

## Permission

This service requires administrator.

## Response

If successful, this service returns the membership that was created as a [\<membership\>](../elements/element_membership.md) element wrapped in `<membership-creation>` element.

The `@welcome-email-failed` attribute is only included if PageSeeder was unable to send the welcome email.

```xml

<membership-creation [welcome-email-failed="true"]>
  <membership id="[membershipid]" 
              email-listed="[true|false]" 
              notification="[none|essential|immediate|daily|weekly]"
              flags="[flags]"
              status="[invited|normal]"
              role="[role]">
    <member id="[member id]"
            firstname="[first name]"
            surname="[surname]"
            username="[username]"
            email="[email]"
            status="[activated|unactivated|set-password]">
      <fullname>[full name]</fullname>
    </member>
    <group id="[group id]"
           name="[name]"
           flags="[flags]"
           visibility="[visibility]"
           template="[template]">
      <description>[description]</description>
    </group>
  </membership>
</membership-creation>
```

## Error Handling

| Code | Cause / Description |
| --- | --- |
| 0x100A | The email is too long |
| 0x100D | Specified role is not valid |
| 0x1001 | If the username contains the character ‘@’ |
| 0x1002 | If the email address is invalid |
| 0x1003 | If the specified group is a personal group |
| 0x1004 | If the username or email are already in use |
| 0x1005 | If the maximum number of members on the server has been reached |
| 0x1007 | The firstname or surname is too long |
| 0x1008 | The email or member-username must be specified |
| 0x1009 | The member-username is too long |
| 0x1015 | Password is not strong enough |
| 0x1016 | Password is equal to username |
| 0x0202 | Group was not found |

