# Users

The user's APIs are primarily used to interact with the BoldSign application to create, send, and manage documents. This section demonstrates how to create users, update user roles, cancel user invitations, resend user invitations and get user details. Users can be created programmatically or via the BoldSign web interface and they can be used by your application.

## Create users

{% post /%}
{% path text="/v1/users/create" /%}

The create user API is used to invite new users to their BoldSign organization with their unique email addresses if they don't already have one. You can create the maximum number of users based on their BoldSign subscription plan.

All newly invited users will receive a verification email from BoldSign, and a member account will be created by default. After verification, the invited user can create a password.

## Code snippet

{% codetab %}

cURL

```shell
curl -X POST 'https://api.boldsign.com/v1/users/create' \
-H 'accept: */*' \
-H 'X-API-KEY: {your API key}' \
-H 'Content-Type: application/json' \
-d '[
    {
        "EmailId": "luthercooper@cubeflakes.com",
        "TeamId": "xxc5b097-xxxx-xxxx-xxxx-afd07c66xxxx",
        "UserRole": "Admin",
        "MetaData": {
            "Employee": "Permanent",
            "Department": "Sales",
            "Designation": "Sales Manager"
        }
    },
    {
        "EmailId": "hankwhite@cubeflakes.com",
        "TeamId": "xxc5b097-xxxx-xxxx-xxxx-afd07c66xxxx",
        "UserRole": "Member",
        "MetaData": {
            "Employee": "Contract",
            "Department": "Sales",
            "Designation": "Sales Executive"
        }
    }
]'
```

C#

```csharp
var apiClient = new ApiClient("https://api.boldsign.com", "Your_API_Key");

var userClient = new UserClient(apiClient);

var createUserRequest = new List<CreateUserRequest>()
{
    new CreateUserRequest()
    {
        EmailId = "luthercooper@cubeflakes.com",
        TeamId = "YOUR_TEAM_ID",
        UserRole = UserRoleType.TeamAdmin,
    },
};

var userCreated = userClient.CreateUser(createUserRequest);
```

Python

```python
import boldsign

configuration = boldsign.Configuration(host = "https://api.boldsign.com", api_key="YOUR_API_KEY")

with boldsign.ApiClient(configuration) as api_client:
    
    user_api = boldsign.UserApi(api_client)
	
    create_user_request = boldsign.CreateUser(
        emailId= "luthercooper@cubeflakes.com",
        teamId="YOUR_TEAM_ID",
        userRole="Admin")
    
    user_created = user_api.create_user([create_user_request])
```

PHP

```php
<?php require_once "vendor/autoload.php";

use BoldSign\Configuration;
use BoldSign\Api\UserApi;
use BoldSign\Model\CreateUser;

$config = new Configuration();
$config->setHost('https://api.boldsign.com');
$config->setApiKey('YOUR_API_KEY');

$user_api = new UserApi($config);

$create_user_request = new CreateUser();
$create_user_request->setEmailId('luthercooper@cubeflakes.com');
$create_user_request->setTeamId('YOUR_TEAM_ID');
$create_user_request->setUserRole('Member');

$user_created = $user_api->createUser([$create_user_request]);
```

Java

```java
ApiClient client = Configuration.getDefaultApiClient();
client.setBasePath("https://api.boldsign.com");
client.setApiKey("YOUR_API_KEY");

UserApi userApi = new UserApi(client);

CreateUser createUserRequest = new CreateUser();
createUserRequest.setEmailId("luthercooper@cubeflakes.com");
createUserRequest.setTeamId("YOUR_TEAM_ID");
createUserRequest.setUserRole(CreateUser.UserRoleEnum.MEMBER);

userApi.createUser(Arrays.asList(createUserRequest));
```

NodeJS

```js
import { UserApi, CreateUser } from "boldsign";

const userApi = new UserApi("https://api.boldsign.com");
userApi.setApiKey("YOUR_API_KEY");

var createUserRequest = new CreateUser();
createUserRequest.emailId = "luthercooper@cubeflakes.com";
createUserRequest.teamId = "YOUR_TEAM_ID";
createUserRequest.userRole = CreateUser.UserRoleEnum.Member;

const userCreated = userApi.createUser([createUserRequest]);
```

{% /codetab %}

## Request body

{% nestedtable %}

- {% arguments name="EmailId" /%}{% batch datatype="string" /%}{% required /%}
- The email address of the user.

---

- {% arguments name="TeamId" /%}{% batch datatype="string" /%}{% required /%}
- The id of the team.

---

- {% arguments name="UserRole" /%}{% batch datatype="string" /%}{% required /%}
- Represents a user role in their organization. They can either be `Admin`, `TeamAdmin`, or `Member`, each with different levels of permissions and access.

---

- {% arguments name="MetaData" /%}{% batch datatype="dictionary" /%}
- Additional information about the user in the form of key-value pairs. Up to 50 key-value pairs can be added. The key is limited to 50 characters, and the value is limited to 500 characters.

{% /nestedtable %}

## Example response

**_200 Success_**

```json
{
  "users": [
    {
      "emailId": "luthercooper@cubeflakes.com",
      "userId": "e892ea92-xxxx-xxxx-xxxx-bbdbcaa5xxxx",
      "teamId": "xxc5b097-xxxx-xxxx-xxxx-afd07c66xxxx"
    },
    {
      "emailId": "hankwhite@cubeflakes.com",
      "userId": "8eec6e8d-xxxx-xxxx-xxxx-bfc81abcxxxx",
      "teamId": "xxc5b097-xxxx-xxxx-xxxx-afd07c66xxxx"
    }
  ]
}
```
