Bulksign API

With the Bulksign API you get the flexibility and control to scale from simple eSignature integrations to complex enterprise applications. Using the Bulksign APIs you can:

  • Request legally binding signatures on virtually any type of document
  • Embed the signing or sending workflow into your UI
  • Track documents in real-time
  • Retrieve form-field data
  • Enforce recipient authentication
  • Much more...

General information

  • the BulkSign API is exposed in 2 "flavors" : SOAP and REST. There is no difference in functionality between them. Use whichever is best suited to your environment.

  • there are no feature specific limitations to the API. Everything is exposed in the API from free accounts all the way to the premium ones.

Browse annotated API specifications

Api authentication

The API requires authentication for all its methods. The authentication data is : - Api token : get this from your tokens page - Email address : the email address used to register your Bulksign account.

For SOAP api, the authentication data is passed as first parameter for each method (the authentication type is called BulksignAuthentication). For REST api, the authentication data is passed as the value of a custom HTTP header called X-Bulksign-Authorization. Here's a example of doing a request with curl :

curl --header "X-Bulksign-Authentication:{{ApiToken}};{{Email}}" https://bulksign.com/restapi/v1/GetTemplatesCount -k -X POST -d " " 

Replace {{ApiToken}} and {{Email}} with your valid data.


The api will always return the result wrapped by a object called BulksignResult. This object has the following properties :

  • IsSuccessful : this boolean signals if the call is successful or not. If the value is false look at the ErrorMessage property to see what went wrong.
  • ErrorMessage : In case "IsSuccessful" is false, this contains a descriptive error message.
  • ErrorCode : A specific numeric error code used to identify the error. If the call succeeds, this has value 0. The list of all possible error codes returned by Bulksign is available on GitHub
  • Response : this contains the api call result.


The SOAP API endpoint is located at https://bulksign.com/bulksignapi.asmx


The REST root endpoint is located at https://bulksign.com/restapi/v1/ - all REST API calls should use HTTP POST. - by default the REST API returns JSON. If you prefer XML, you need to set the appropriate Accept-Header value or use the SOAP service. - complex API parameters are passed in the request body as JSON data. Simple parameters can also be passed in the url (here's a example)

POST https://bulksign.com/restapi/v1/DeleteDraft/?draftPublicId={{CorrectValueHere}} 

List of API methods

Browse annotated API specifications

Push Events

Bulksign supports push events (using HTTP for SAAS version and/or custom for private versions) when the bundle status is changing and when a recipient is finishing/rejecting the document to sign.

Notifications for following bundle statuses are supported :

2 - Completed

3 - Canceled

4 - Expired

Notifications are also supported for the following signer related events :

1- Opened : sent when a signer opened the document for the first time.

2 - Signed : recipient has signed and finished the document.

3 - Rejected : recipient has rejected to sign the document.

4 - Next signer : only in a serial bundle, it's triggered when a new recipient has to sign.

To enable push notifications for bundles, when sending one just set a url for "StatusChangedNotificationUrl". The following url parameters are usable :

  • {{#bundleid#}} : this will be replaced with the id of the bundle for which the callback is called.
  • {{#status#}} : this will be replaced with the bundle status value.

Here's a url example for reciving notifications about the bundle status changes : http://localhost/mysite/notifications?id={{#bundleid#}}&status={{#status#}}

To enable push notifications for signer events, when sending one just set a url for "RecipientActionNotificationUrl". The following url parameters are usable :

  • {{#recipientEmail#}} : the email of the recipient.
  • {{#recipientStatus#}} : this will be replaced with the recipient status value.

Here's a url example for reciving notifications about the signer events : http://localhost/mysite/notifications?email={{#recipientEmail#}}&recipientStatus={{#recipientstatus#}}

Please note that these notifications/callbacks are only triggered once


Is there any sample code that describes different integration scenarios ?

We have lots of sample code on Github

How automatic field mapping works when creating drafts/templates and sending bundles?

Automatic field assignment works depending on the number of recipients per bundle:

  • for 1 recipient, unless FieldMapping is specified, all existing form fields will be by default assigned to that recipient.

  • for bulk bundles , unless FieldMapping is specified, all existing fields will be assigned by default to all recipients.

How do i use the FieldMapping to assign fields already existing in the document to different recipients :

First, for each document that will be part of the bundle to be sent, you will need to call AnalyzeFile. That API method will return a list with all form fields (id and types). With the result of AnalyzeFile, you can build a FieldMapping structure that allows assignment of form fields to specific recipients. The content of FieldMapping is :

FieldId : the id of the form field obtained with AnalyzeFile. 
MappingIdentifier : the mapping identifier can have one of these 3 values : 
- the '*' character to assign that particular field to all recipients (usable for bulk bundles).
- the email address of the recipient to whom the field will be assigned. 
- the name of the recipient (this should be used only in the scenario of disabling email notifications for multiple recipients) 
How can i create a new signature field from the API ?

You can accomplish this using "NewSignature" :

Width : the width of the signature field (in pixels). 
Height : the height of the signature field (in pixels). 
Top : the position (in pixels) from the top side of the page. 
Left : the position (in pixels) from the left side of the page. 
PageIndex : the index of page to which this new signature will be added. 
MappingIdentifier : use the recipient email address to assign this to a specific recipient or character '*' to assign field to all recipients (in bulk scenarios). 

Integrate signing directly into your application/website

It's very easy to integrate signing directly into your website/application, here is some sample code for multiple scenarios :

Integration sample for web application

Integration sample for Universal Windows Platforms apps

Integration sample for Android (using Xamarin)



Out .NET SDK can be installed directly from Nuget.org. From the Nuget console, just run :

install-package BulksignSdk
Javascript / Typescript

Our JS/TS SDK is available in this Github repository

Java, Ruby and Python

You can also download bindings for Java , Ruby and Python