--- 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 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?sv=2026-02-06&spr=https&st=2026-11-04T14%3A06%3A47Z&se=2026-11-04T15%3A06%3A47Z&sr=c&sp=r&sig=12K3zCS3LQR7wfBps8uTlgvH%2BCYWcKjs2%2FFoWmlvkqY%3D) ## .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 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?sv=2026-02-06&spr=https&st=2026-11-04T14%3A06%3A47Z&se=2026-11-04T15%3A06%3A47Z&sr=c&sp=r&sig=12K3zCS3LQR7wfBps8uTlgvH%2BCYWcKjs2%2FFoWmlvkqY%3D) ## 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=" } ```