---
title: "Managing Senders"
slug: "managing-senders"
updated: 2025-07-02T17:40:13Z
published: 2025-07-02T17:40:13Z
canonical: "docs.onespan.com/managing-senders"
---

> ## Documentation Index
> Fetch the complete documentation index at: https://docs.onespan.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Managing Senders

[Java SDK](/v1/docs/managing-senders#java-sdk) [.NET SDK](/v1/docs/managing-senders#net-sdk) [REST API](/v1/docs/managing-senders#rest-api)

## Java SDK

To download the full code sample see our [Code Share](https://community.onespan.com/documentation/onespan-sign/codeshare/managing-senders-java-sdk/) site.

OneSpan Sign provides you with the ability to add users to your account, allowing them to create and send transactions for digital signing .

As an account owner, you will have access to the transactions created by your users. However you can only retrieve these transactions using SDKs or APIs. If you want to access these transactions using the Web UI you will need your users to delegate access to you.

OneSpan Sign allows you to grant others in your organization access to your account. With Access Delegation, your assigned delegate (the person to whom you have granted access) can send and sign documents on your behalf. For more information, see [Delegating Access](/v1/docs/delegating-access).

### Finding Your Users in the UI

First, locate your senders in the OneSpan Sign Web UI. To do this, log into your OneSpan Sign account and click Admin > Users. After running your code, all your users will appear here.

The Users page replaces the Senders page if Roles and Permissions have been enabled. To enable Roles and Permissions contact our [Support Team](https://www.onespan.com/support).

For more information, see Administering Users.

### Adding Users

To add a user to your account, you will need to build an AccountMember object. Then, you can all on your OneSpan Sign AccountService to send an invitation to the user. Once a new user has been invited to join an account, they are automatically added to the account, but in an inactive state. The user will receive an email containing a link that they will need to click to activate their account.

You can skip this verification step by setting the status to ACTIVE when building your AccountMember object.

```java
AccountMember member = AccountMemberBuilder.newAccountMember("john.smith@example.com ")
				.withFirstName("John")
				.withLastName("Smith")
				.withCompany("ABC Bank")
				.withTitle("CEO")
				.withStatus(SenderStatus.ACTIVE)
				.build();
		
client.getAccountService().inviteUser(member);
```

#### Resending an Account Invitation

When a user is invited to join an account, they are sent an email which they must use to activate their account. The following code snippet illustrates how to re-send that email.

```java
eslClient.getAccountService()
         .sendInvite(retrievedSender.getId());
```

### Retrieving Users

The first step to delegating access is to retrieve a list of users from your OneSpan Sign account, which is described in the following code example. Included in this list are your user's email addresses, and their IDs. User IDs are required to add and remove delegates.

The maximum number of users that you can retrieve, as defined by this API, is 100.

Here is some sample code that describes how to do this. In this example, the number of users returned in the list is 5, as defined by PageRequest.

```java
int i = 1;
				Map<String, Sender> accountMembers = client.getAccountService().getSenders(Direction.ASCENDING, new PageRequest(i,5));
		
				while(!accountMembers.isEmpty()) {
				for (Map.Entry entry : accountMembers.entrySet()) {
				String email = (String) entry.getKey();
				Sender sender = (Sender) entry.getValue();
				System.out.println(email + ", " + sender.getId());
				i++;
				}
				accountMembers =  client.getAccountService().getSenders(Direction.ASCENDING, new PageRequest(i,5));
			}
```

### Updating a User

To update a user you will need their user ID. Note that an email address cannot be updated once you’ve created your user. To change an email address you will need to create a new user.

```java
SenderInfo updatedSenderInfo = SenderInfoBuilder.newSenderInfo("john.smith@example.com")
                .withName( "John", "Smith" )
                .withTitle( "CEO" )
                .withCompany("XYZ Bank")
                .build();
 
client.getAccountService().updateSender(updatedSenderInfo, "{senderId}");
```

### Deleting a User

To delete a user you will need their user ID. Here is some sample code that describes how to do this.

If your user has transactions already in their Inbox, or transactions in a Draft status, the user will be locked instead of deleted. They will not be able to create or send any other transactions.

```java
client.getAccountService()
      .deleteSender("{senderId}");
```

### Retrieving a Specific User

The following sample code helps you retrieve a specific user from an account.

```java
Sender retrievedSender = eslClient.getAccountService()
                                  .getSender("senderId");
```

### Sending a Transaction Using a Specific Sender

The sample code below shows you how to build a transaction to be sent by a specific user:

```java
DocumentPackage packageToSend = PackageBuilder.newPackageNamed("Cleaning Contract Example")
			.withSenderInfo(SenderInfoBuilder.newSenderInfo("john.smith@example.com"))
			.withSigner(SignerBuilder.newSignerWithEmail("mary.doe@example.com")
					.withFirstName("Mary")
					.withLastName("Doe")
					.withCustomId("client"))
			.withSigner(SignerBuilder.newSignerWithEmail("john.smith@example.com")
					.withFirstName("John")
					.withLastName("Smith")
					.withCustomId("contractor"))
			.withDocument(DocumentBuilder.newDocumentWithName("Contract.pdf")
					.fromStream(new FileInputStream("DOC_FILE_PATH"), DocumentType.PDF)
					.enableExtraction())
				.build();
```

### Results

After executing your code, you will find your newly created users in your OneSpan Sign account.

![](https://cdn.document360.io/038f59a7-abd0-4c14-9de7-3434d28b49fd/Images/Documentation/senders_java_1.png)

## .NET SDK

To download the full code sample see our [Code Share](https://community.onespan.com/documentation/onespan-sign/codeshare/managing-senders-net-sdk/) site.

OneSpan Sign provides you with the ability to add users to your account, allowing them to create and send transactions for digital signing .

As an account owner, you will have access to the transactions created by your users. However you can only retrieve these transactions using SDKs or APIs. If you want to access these transactions using the Web UI you will need your users to delegate access to you.

For more information, see [Delegating Access](/v1/docs/delegating-access).

### Finding Your Users in the UI

First, locate your senders in the OneSpan Sign Web UI. To do this, log into your OneSpan Sign account and click Admin > Users. After running your code, all your users will appear here.

The Users page replaces the Senders page if Roles and Permissions have been enabled. To enable Roles and Permissions contact our [Support Team](https://www.onespan.com/support).

For more information, see Administering Users.

### Adding Users

To add a user to your account, you will need to build an AccountMember object. Then, you can all on your OneSpan Sign AccountService to send an invitation to the user. Once a new user has been invited to join an account, they are automatically added to the account, but in an inactive state. The user will receive an email containing a link that they will need to click to activate their account.

You can skip this verification step by setting the status to ACTIVE when building your AccountMember object.

```csharp
AccountMember member = AccountMemberBuilder.NewAccountMember("john.smith@example.com")
				.WithFirstName("John")
				.WithLastName("Smith")
				.WithCompany("ABC Bank")
				.WithTitle("CEO")
				.WithStatus(SenderStatus.ACTIVE)
				.Build();
		
client.AccountService.InviteUser(member);
```

#### Resending an Account Invitation

When a user is invited to join an account, they are sent an email which they must use to activate their account. The following code snippet illustrates how to re-send that email.

```csharp
eslClient.AccountService.SendInvite(retrievedSender.Id);
```

### Retrieving Users

The first step to delegating access is to retrieve a list of users from your OneSpan Sign account, which is described in the following code example. Included in this list are your user's email addresses, and their IDs. User IDs are required to add and remove delegates.

The maximum number of users that you can retrieve, as defined by this API, is 100.

Here is some sample code that describes how to do this. In this example, the number of users returned in the list is 5, as defined by PageRequest.

```csharp
int i = 1;
					IDictionary<string, Sender> accountMembers = client.AccountService.GetSenders(Direction.ASCENDING, new PageRequest(i, 5));
					while (accountMembers.Count != 0)
					{
					foreach (var s in accountMembers)
					{
					string email = s.Key.ToString();
					string id = s.Value.Id;
					Debug.WriteLine(email + " " + id);
					i++;
					}
					accountMembers = client.AccountService.GetSenders(Direction.ASCENDING, new PageRequest(i, 5));
				}
```

### Updating a User

To update a user you will need their user ID. Note that an email address cannot be updated once you’ve created your user. To change an email address you will need to create a new user.

```csharp
SenderInfo updatedSenderInfo = SenderInfoBuilder.NewSenderInfo("john.smith@example.com")
                .WithName( "John", "Smith" )
                .WithTitle( "CEO" )
                .WithCompany("XYZ Bank")
                .Build();
 
client.AccountService.UpdateSender(updatedSenderInfo, "{senderId}");
```

### Deleting a User

To delete a user you will need their user ID. Here is some sample code that describes how to do this.

If your user has transactions already in their Inbox, or transactions in a Draft status, the user will be locked instead of deleted. They will not be able to create or send any other transactions.

```csharp
client.AccountService
      .DeleteSender("{senderId}");
```

### Retrieving a Specific User

The following sample code helps you retrieve a specific user from an account.

```csharp
Sender retrievedSender = eslClient.AccountService
                                  .GetSender("senderId");
```

### Sending a Transaction Using a Specific Sender

The sample code below shows you how to build a transaction to be sent by a specific user:

```csharp
DocumentPackage packageToSend = PackageBuilder.NewPackageNamed("Cleaning Contract Example")
                .WithSenderInfo(SenderInfoBuilder.NewSenderInfo("john.smith@example.com"))
                .WithSigner(SignerBuilder.NewSignerWithEmail("mary.doe@example.com ")
                        .WithFirstName("Mary")
                        .WithLastName("Doe")
                        .WithCustomId("client"))
                .WithSigner(SignerBuilder.NewSignerWithEmail("john.smith@example.com")
                        .WithFirstName("John")
                        .WithLastName("Smith")
                        .WithCustomId("contractor"))
                .WithDocument(DocumentBuilder.NewDocumentNamed("Contract.pdf")
                        .FromStream(new FileStream("DOC_FILE_PATH", FileMode.Open), DocumentType.PDF)
                        .EnableExtraction())
                .Build();
```

### Results

After executing your code, you will find your newly created users in your OneSpan Sign account.

![](https://cdn.document360.io/038f59a7-abd0-4c14-9de7-3434d28b49fd/Images/Documentation/senders_net_1.png)

## REST API

To download the full code sample see our [Code Share](https://community.onespan.com/documentation/onespan-sign/codeshare/managing-senders-rest-api) site.

OneSpan Sign provides you with the ability to add users to your account, allowing them to create and send transactions for digital signing .

As an account owner, you will have access to the transactions created by your users. However you can only retrieve these transactions using SDKs or APIs. If you want to access these transactions using the Web UI you will need your users to delegate access to you.

For more information, see [Delegating Access](/v1/docs/delegating-access).

### Senders in the UI

First, locate your senders in the OneSpan Sign Web UI. To do this, log into your OneSpan Sign account and click Admin > Users. After running your code, all your users will appear here.

The Users page replaces the Senders page if Roles and Permissions have been enabled. To enable Roles and Permissions contact our [Support Team](https://www.onespan.com/support).

For more information, see Administering Users.

### Adding Users

To add a user to you account, use the following code examples.

#### HTTP Request

```http
POST /api/account/senders
```

#### HTTP Headers

```http
Accept: application/json 
Content-Type: application/json 
Authorization: Basic api_key
```

#### Request Payload

```json
{
 "email" : "john.smith@example.com",
   "firstName" : "John",
   "lastName" : "Smith",
   "company" : "ABC Bank",
   "title" : "CEO",
   "status" : "ACTIVE"
    }
```

#### Response Payload

```json
{
    "status": "ACTIVE",
    "language": "en",
    "signature": null,
    "id": "gF0JJvbDb2Y0",
    "data": {
        "hasNotCreatedATransaction": true,
        "showIntro": true
    },
    "account": {
        "id": "3vD0Dc9Fh7wQ",
        "data": null,
        "updated": "2016-05-05T19:30:13Z",
        "company": {
            "id": "jVWmyg4cyis8",
            "data": null,
            "address": {
                "address1": null,
                "address2": null,
                "city": null,
                "country": null,
                "zipcode": null,
                "state": null
            },
            "name": "OneSpan Sign"
        },
        "licenses": [
            {
                "status": "ACTIVE",
                "paidUntil": "2020-05-05T00:00:00Z",
                "plan": {
                    "group": "",
                    "description": "E-Sign Hundreds of Documents with Unlimited Signers",
                    "id": "sandbox",
                    "features": null,
                    "price": {
                        "amount": 0,
                        "currency": {
                            "id": "USD",
                            "data": null,
                            "name": "US Dollar"
                        }
                    },
                    "original": null,
                    "cycle": "YEAR",
                    "contract": "YEAR",
                    "freeCycles": null,
                    "quotas": [
                        {
                            "cycle": null,
                            "scope": "ACCOUNT",
                            "limit": 100,
                            "target": "SENDER"
                        },
                        {
                            "cycle": null,
                            "scope": "SENDER",
                            "limit": 500,
                            "target": "DOCUMENT"
                        },
                        {
                            "cycle": null,
                            "scope": "SENDER",
                            "limit": 500,
                            "target": "STORAGE"
                        }
                    ],
                    "data": null,
                    "name": "Sandbox"
                },
                "transactions": [],
                "created": "2016-05-05T19:30:13Z"
            }
        ],
        "logoUrl": "",
        "providers": null,
        "customFields": [
            {
                "required": false,
                "id": "policy_number_id",
                "data": null,
                "translations": [
                    {
                        "description": "Car Insurance Policy Number.",
                        "language": "en",
                        "id": "",
                        "data": null,
                        "name": "Policy Number"
                    }
                ],
                "value": "123-456-789-0",
                "name": ""
            }
        ],
        "created": "2016-05-05T19:30:13Z",
        "owner": "ZQI8k6faVoM8",
        "name": "Haris Haidary"
    },
    "title": "CEO",
    "external": null,
    "updated": "2017-11-20T18:36:02Z",
    "memberships": [],
    "phone": "",
    "professionalIdentityFields": [],
    "userCustomFields": [],
    "locked": null,
    "activated": null,
    "company": "ABC Bank",
    "email": "john.smith@example.com",
    "firstName": "John",
    "lastName": "Smith",
    "type": "REGULAR",
    "name": "",
    "address": null,
    "created": "2017-11-20T18:36:02Z",
    "specialTypes": [],
    "hasDelegates": false
}
```

#### Resending an Account Invitation

When a user is invited to join an account, they are sent an email which they must use to activate their account. The following code snippet illustrates how to re-send that email.

**HTTP Request**

```http
POST /api/account/senders/{senderUid}/invite
```

**HTTP Headers**

```http
Accept: application/json
Content-Type: application/json
Authorization: Basic api_key
```

### Retrieving Users

You can also retrieve your senders:

#### HTTP Request

```http
GET /api/account/senders?from=0&to=1
```

#### HTTP Headers

```http
Accept: application/json
Content-Type: application/json
Authorization: Basic api_key
```

#### Response Payload

```json
{
    "results": [
        {
            "status": "ACTIVE",
            "language": "en",
            "signature": null,
            "id": "IBCyHvarzWsX",
            "data": {
                "hasNotCreatedATransaction": true,
                "showIntro": true
            },
            "account": {
                "id": "3vD0Dc9Fh7wQ",
                "created": "2016-05-05T19:30:13Z",
                "data": null,
                "company": {
                    "id": "jVWmyg4cyis8",
                    "data": null,
                    "address": {
                        "address1": null,
                        "address2": null,
                        "city": null,
                        "country": null,
                        "zipcode": null,
                        "state": null
                    },
                    "name": "OneSpan Sign"
                },
                "updated": "2016-05-05T19:30:13Z",
                "licenses": [
                    {
                        "status": "ACTIVE",
                        "transactions": [],
                        "created": "2016-05-05T19:30:13Z",
                        "paidUntil": "2020-05-05T00:00:00Z",
                        "plan": {
                            "group": "",
                            "description": "E-Sign Hundreds of Documents with Unlimited Signers",
                            "id": "sandbox",
                            "price": {
                                "amount": 0,
                                "currency": {
                                    "id": "USD",
                                    "data": null,
                                    "name": "US Dollar"
                                }
                            },
                            "original": null,
                            "features": null,
                            "data": null,
                            "cycle": "YEAR",
                            "contract": "YEAR",
                            "freeCycles": null,
                            "quotas": [
                                {
                                    "scope": "ACCOUNT",
                                    "cycle": null,
                                    "limit": 100,
                                    "target": "SENDER"
                                },
                                {
                                    "scope": "SENDER",
                                    "cycle": null,
                                    "limit": 500,
                                    "target": "DOCUMENT"
                                },
                                {
                                    "scope": "SENDER",
                                    "cycle": null,
                                    "limit": 500,
                                    "target": "STORAGE"
                                }
                            ],
                            "name": "Sandbox"
                        }
                    }
                ],
                "logoUrl": "",
                "providers": null,
                "customFields": [
                    {
                        "required": false,
                        "id": "policy_number_id",
                        "data": null,
                        "translations": [
                            {
                                "description": "Car Insurance Policy Number.",
                                "language": "en",
                                "id": "",
                                "data": null,
                                "name": "Policy Number"
                            }
                        ],
                        "value": "123-456-789-0",
                        "name": ""
                    }
                ],
                "owner": "ZQI8k6faVoM8",
                "name": "Haris Haidary"
            },
            "title": null,
            "activated": null,
            "company": "",
            "email": "mail73@example.com",
            "firstName": "Peter",
            "lastName": "Pan",
            "external": null,
            "updated": "2017-11-13T15:07:49Z",
            "memberships": [],
            "phone": "",
            "professionalIdentityFields": [],
            "userCustomFields": [],
            "locked": null,
            "address": null,
            "created": "2017-11-13T15:07:49Z",
            "name": "",
            "type": "REGULAR",
            "specialTypes": [],
            "hasDelegates": false
        },
        {
            "status": "ACTIVE",
            "language": "en",
            "signature": null,
            "id": "2q37oSloj5AD",
            "data": {
                "hasNotCreatedATransaction": true,
                "showIntro": true
            },
            "account": {
                "id": "3vD0Dc9Fh7wQ",
                "created": "2016-05-05T19:30:13Z",
                "data": null,
                "company": {
                    "id": "jVWmyg4cyis8",
                    "data": null,
                    "address": {
                        "address1": null,
                        "address2": null,
                        "city": null,
                        "country": null,
                        "zipcode": null,
                        "state": null
                    },
                    "name": "OneSpan Sign"
                },
                "updated": "2016-05-05T19:30:13Z",
                "licenses": [
                    {
                        "status": "ACTIVE",
                        "transactions": [],
                        "created": "2016-05-05T19:30:13Z",
                        "paidUntil": "2020-05-05T00:00:00Z",
                        "plan": {
                            "group": "",
                            "description": "E-Sign Hundreds of Documents with Unlimited Signers",
                            "id": "sandbox",
                            "price": {
                                "amount": 0,
                                "currency": {
                                    "id": "USD",
                                    "data": null,
                                    "name": "US Dollar"
                                }
                            },
                            "original": null,
                            "features": null,
                            "data": null,
                            "cycle": "YEAR",
                            "contract": "YEAR",
                            "freeCycles": null,
                            "quotas": [
                                {
                                    "scope": "ACCOUNT",
                                    "cycle": null,
                                    "limit": 100,
                                    "target": "SENDER"
                                },
                                {
                                    "scope": "SENDER",
                                    "cycle": null,
                                    "limit": 500,
                                    "target": "DOCUMENT"
                                },
                                {
                                    "scope": "SENDER",
                                    "cycle": null,
                                    "limit": 500,
                                    "target": "STORAGE"
                                }
                            ],
                            "name": "Sandbox"
                        }
                    }
                ],
                "logoUrl": "",
                "providers": null,
                "customFields": [
                    {
                        "required": false,
                        "id": "policy_number_id",
                        "data": null,
                        "translations": [
                            {
                                "description": "Car Insurance Policy Number.",
                                "language": "en",
                                "id": "",
                                "data": null,
                                "name": "Policy Number"
                            }
                        ],
                        "value": "123-456-789-0",
                        "name": ""
                    }
                ],
                "owner": "ZQI8k6faVoM8",
                "name": "Haris Haidary"
            },
            "title": null,
            "activated": null,
            "company": "",
            "email": "mail72@example.com",
            "firstName": "Mike",
            "lastName": "Smith",
            "external": null,
            "updated": "2017-11-13T15:07:49Z",
            "memberships": [],
            "phone": "",
            "professionalIdentityFields": [],
            "userCustomFields": [],
            "locked": null,
            "address": null,
            "created": "2017-11-13T15:07:50Z",
            "name": "",
            "type": "REGULAR",
            "specialTypes": [],
            "hasDelegates": false
        }
    ],
    "count": 8
}
```

### Retrieving a Specific User

The following sample code helps you retrieve a specific user from an account.

#### HTTP Request

```http
GET/api/account/senders/{senderId}
```

#### HTTP Headers

```http
Accept: application/json
Content-Type: application/json
Authorization: Basic api_key
```

#### Response Payload

```json
{
    "status": "ACTIVE",
    "language": "en",
    "signature": null,
    "id": "IBCyHvarzWsX",
    "data": {
        "hasNotCreatedATransaction": true,
        "showIntro": true
    },
    "account": {
        "id": "3vD0Dc9Fh7wQ",
        "data": null,
        "updated": "2016-05-05T19:30:13Z",
        "company": {
            "id": "jVWmyg4cyis8",
            "data": null,
            "address": {
                "address1": null,
                "address2": null,
                "city": null,
                "country": null,
                "zipcode": null,
                "state": null
            },
            "name": "OneSpan Sign"
        },
        "licenses": [
            {
                "status": "ACTIVE",
                "paidUntil": "2020-05-05T00:00:00Z",
                "plan": {
                    "group": "",
                    "description": "E-Sign Hundreds of Documents with Unlimited Signers",
                    "id": "sandbox",
                    "features": null,
                    "price": {
                        "amount": 0,
                        "currency": {
                            "id": "USD",
                            "data": null,
                            "name": "US Dollar"
                        }
                    },
                    "original": null,
                    "cycle": "YEAR",
                    "contract": "YEAR",
                    "freeCycles": null,
                    "quotas": [
                        {
                            "cycle": null,
                            "scope": "ACCOUNT",
                            "limit": 100,
                            "target": "SENDER"
                        },
                        {
                            "cycle": null,
                            "scope": "SENDER",
                            "limit": 500,
                            "target": "DOCUMENT"
                        },
                        {
                            "cycle": null,
                            "scope": "SENDER",
                            "limit": 500,
                            "target": "STORAGE"
                        }
                    ],
                    "data": null,
                    "name": "Sandbox"
                },
                "transactions": [],
                "created": "2016-05-05T19:30:13Z"
            }
        ],
        "logoUrl": "",
        "providers": null,
        "customFields": [
            {
                "required": false,
                "id": "policy_number_id",
                "data": null,
                "translations": [
                    {
                        "description": "Car Insurance Policy Number.",
                        "language": "en",
                        "id": "",
                        "data": null,
                        "name": "Policy Number"
                    }
                ],
                "value": "123-456-789-0",
                "name": ""
            }
        ],
        "created": "2016-05-05T19:30:13Z",
        "owner": "ZQI8k6faVoM8",
        "name": "Haris Haidary"
    },
    "title": "CEO",
    "external": null,
    "updated": "2017-11-13T15:07:49Z",
    "memberships": [],
    "phone": "",
    "professionalIdentityFields": [],
    "userCustomFields": [],
    "locked": null,
    "activated": null,
    "company": "ABC Bank",
    "email": "mail73@example.com",
    "firstName": "John",
    "lastName": "Smith",
    "type": "REGULAR",
    "name": "",
    "address": null,
    "created": "2017-11-13T15:07:49Z",
    "specialTypes": [],
    "hasDelegates": false
}
```

### Updating a User

To update a user you will need their user ID. Note that an email address cannot be updated once you’ve created your user. To change an email address you will need to create a new user.

#### HTTP Request

```http
POST/api/account/senders/{senderId}
```

#### HTTP Headers

```http
Accept: application/json
Content-Type: application/json
Authorization: Basic api_key
```

#### Request Payload

```json
{
    "firstName" : "John",
    "lastName" : "Smith",
    "company" : "XYZ Bank",
    "title" : "CEO",
}
```

### Deleting a User

To delete a user you will need their user ID. Here is some sample code that describes how to do this.

If your user has transactions already in their Inbox, or transactions in a Draft status, the user will be locked instead of deleted. They will not be able to create or send any other transactions.

#### HTTP Request

```http
DELETE /api/account/senders/{senderId}
```

#### HTTP Headers

```http
Accept: application/json
Content-Type: application/json
Authorization: Basic api_key
```

### Retrieving the API KEY of a Sender

Below REST API shows you how to retrieve API KEY of your sender using account manager's authorization in request header.

#### HTTP Request

```http
GET /api/account/senders/{senderId}/apiKey
```

#### HTTP Headers

```http
Accept: application/json 
Content-Type: application/json 
Authorization: Basic api_key
```

#### Response Payload

```json
{
"apiKey": "XXXXXXXXXXXXX=="
}
```

### Sending a Transaction Using a Specific Sender

The sample code below shows you how to build a transaction to be sent by a specific user:

#### HTTP Request

```http
POST /api/packages
```

#### HTTP Headers

```http
Accept: application/json 
Content-Type: multipart/form-data 
Authorization: Basic api_key
```

#### Request Payload Table

For a complete description of each field, see this table:

| Property | Type | Editable | Required | Default | Sample Values |
| --- | --- | --- | --- | --- | --- |
| status | string | Yes | No | INVITED | ACTIVE / INVITED / LOCKED |
| email | string | Yes | No | n/a | john.smith@example.com |
| firstName | string | Yes | No | n/a | John |
| lastName | string | Yes | No | n/a | Smith |
| company | string | Yes | No | n/a | ABC Bank |
| title | string | Yes | No | n/a | CEO |
| phoneNumber | string | Yes | No | n/a | +15256951122 |

```json
------WebKitFormBoundary1bNO60n7FqP5WO4t
Content-Disposition: form-data; name="file"; filename="testDocumentExtraction.pdf"
Content-Type: application/pdf
%PDF-1.5
%ÂµÂµÂµÂµ
1 0 obj
<>>>
endobj.... 
------WebKitFormBoundary1bNO60n7FqP5WO4t
Content-Disposition: form-data; name="payload"
{
  "sender": {
    "email": "john.smith@example.com"
  },
  "documents": [
    {
      "extract": true,
      "name": "Contract"
    }
  ],
  "status": "DRAFT",
  "roles": [
    {
      "id": "contractor",
      "type": "SENDER",
      "signers": [
        {
          "email": "john.smith@example.com",
          "firstName": "John",
          "lastName": "Smith",
          "id": "contractor"
        }
      ],
      "name": "contractor"
    },
    {
      "id": "client",
      "type": "SIGNER",
      "signers": [
        {
          "email": "mary.doe@example.com",
          "firstName": "Mary",
          "lastName": "Doe",
          "id": "client"
        }
      ],
      "name": "client"
    }
  ],
  "type": "PACKAGE",
  "name": "Cleaning Contract Example"
}
```

#### Response Payload

```json
{
"id": "9sKhW-h-qS9m6Ho3zRv3n2a-rkI="
}
```
