Communication
Communication with the Assently API is done over encrypted HTTP (HTTPS).
Data for input as well as output is in JSON format. This is because the API is intended for use both from front-end (JavaScript) and from back-end of other systems. All requests to the system should use the Content-Type "application/json; charset=utf-8" in your requests in order to communicate with the service.
Successful requests return a HTTP 200 status code.
New fields may be introduced to JSON data models over time and is not considered a breaking change. Integrators must ensure that their integrations ignore unknown fields by default.
What you need
An Account with API access. You can create a trial account to get started. If you want to use electronic ID (eID), make sure you choose the country you want to try below:
An Agent connected to the account. When you create an account, you will be added as an agent and you can add more agents in the settings.
An API Key and Secret for your Agent. You can generate those on your API Settings page.
For .NET users, we provide an API Client available via NuGet. Some of the examples may be useful even if you're developing on a different stack.
Authentication
Authentication with the Assently API is done with Basic Authentication. For Basic Authentication the structure looks like Basic username:password where username:password is base64 encoded as one string in this case it would be dXNlcm5hbWU6cGFzc3dvcmQ= so in completeness it would look like Basic dXNlcm5hbWU6cGFzc3dvcmQ=. The API Key is your username, and the API Secret your password. When authentication fails the client will get an HTTP 401 status code.
For acting on sub accounts using master account api keys the API Key structure for username have to be: masteraccountapikey\subaccountIDorsubaccountexternalID
Security
The majority of the API commands will require an authenticated user. Usernames and passwords remains secured over the wire by utilizing secure HTTP (HTTPS).
We treat API secrets as passwords. We cannot recover a secret if you lose it, you will have to generate new keys. Keep your API Secret safe, do not share it with unauthorized people, do not send in emails or over unencrypted wires.
Formats and Languages
All times are UTC, formatted as ISO-dates. For example: 2048-04-12T20:44:55
Notifications, signing instructions and agent UI are available in en-US, sv-SE, fi-FI, da, fr, de, no and es-ES. Notifications and signing instructions are available in some additional languages.
Working with Cases
Create a case
POST /api/v2/createcase
| Parameter |
Description |
Type |
Required |
| Id |
Set a GUID for the Case. You can use it to do additional requests quickly. |
Guid |
|
| Name |
Name of the case. If omitted will be set to empty string. |
String |
|
| NameAlias |
Alias for internal use. Shown in internal listings but not visible to parties. If omitted will be set to empty string. |
String |
|
| Parties |
Parties who should sign. See Party subtype for more information. |
List of PartyModels |
|
| Documents |
Documents to sign. See Document subtype for more information. |
List of DocumentModels |
|
| AllowedSignatureTypes |
Allowed signature types. Any combination of methods is allowed. See information on signature types in Basics section. |
List of strings (electronicid, touch, sms or quickintent) |
|
| AgentUsername |
Optionally specify an agent responsible for this case. When omitted, agent will be the authenticated user. Username is either your ExternalId or the Agents EmailAdress. |
String |
|
| AgentUsernameType |
AgentUsernameType determines the exact type of username. The types are Id and EmailAddress. UsernameType is required when Agent Id has a format similar to EmailAddress. |
String |
|
| Visibility |
Controls how cases are visible to other agents. By default, cases are visible to other agents ('group'). |
String (group, private or inherit) |
|
| Description |
A short description of the case, included in emails to parties. If omitted will be set to an empty string. |
String |
|
| Stakeholders |
List of email addresses for stakeholders. Stakeholders are notified once a case is signed. |
List of StakeholderModels |
|
| Metadata |
Metadata for this case. You can use metadata to find it later. |
Key/value dictionary |
|
| CancelUrl |
URL where user is sent when rejecting the case. |
String |
|
| ContinueUrl |
URL to continue to when signature has been completed. If omitted will be set to empty string. |
String |
|
| ContinueName |
Name of URL to continue to when signature has been completed. If omitted will be set to empty string. |
String |
|
| ContinueAuto |
Automatically continues to the ContinueUrl when the signature has been added.The case can have a status of Sent, Signed or Finished at the time of addition of signature. The case will have status Sent for multi-party cases where the last party has not yet signed. The case will have a status of either Signed or Finished when all parties have signed. |
Boolean |
|
| NotificationMethods |
Determines how to notify parties of signature requests and finished cases. Default when omitted is Email. |
List of strings (none, email or sms) |
|
| SendSignRequestEmailToParties |
Send signature request notifications to all parties when the case is created. If false, no messages of this type will be sent, regardless of NotificationMethods. |
Boolean |
|
| SendFinishEmailToCreator |
Send email notifications to creator when the case has been finished. |
Boolean |
|
| SendFinishEmailToParties |
Send email notifications to parties when the case has been finished. If false, no messages of this type will be sent, regardless of NotificationMethods. |
Boolean |
|
| SendRecallEmailToParties |
Send email notifications to parties when the case has been recalled. |
Boolean |
|
| RequestMessage |
Custom message used in the request to sign notification email. Overrides the system default message. |
String |
|
| RequestMessageSms |
Custom message used in the request to sign notification SMS. Overrides the system default message. |
String |
|
| FinishedMessage |
Custom message used in the notification email to parties when all parties have signed. Overrides the system default message. |
String |
|
| FinishedMessageSms |
Custom message used in the notification SMS to parties when all parties have signed. Overrides the system default messages. |
String |
|
| Culture |
Culture of case. If omitted, Agent's culture will be used. If no Agent is specified the authenticated user's culture will be used. |
String |
|
| SignInSequence |
Enforce a signing order. When false, parties are notified and can sign simultaneously. |
Boolean |
|
| AccessControl |
Define whether parties must provide additional credentials to access the case. |
String (default, sms or electronicid) |
|
| IdentityCheck |
Party is required to take a photo of ID before signing. |
Boolean |
|
| IsEditable |
Indicates that documents in this case (provided that they contain form fields) can be edited by agent or party prior to first signature. |
Boolean |
|
| MergeOnSend |
For cases where IsEditable is enabled, this setting will merge and make the document(s) read-only when the case is sent. |
Boolean |
|
| UseGroupNames |
Display the group name fields (known as Company Name in the UI) for each party. If true, group name for each party must be set before the case can be sent. |
Boolean |
|
| ExpireAfterDays |
Signing deadline, relative to when the case is sent. ExpireOn overrides this property. Default when omitted is 0. |
Number |
|
| ExpireOn |
Absolute signing deadline. If set, the case will expire on this date and time. Date must be specifed in UTC format YYYY-MM-DDThh:mm:ss |
DateTime |
|
| RemindAfterDays |
A reminder will be sent automatically to parties that haven't signed after the specified number of days. Default when omitted is 0. |
Number |
|
| EventCallback |
We'll send a server side callback when one of your subscribed events occur. |
CaseEventSubscription |
|
| Procedure |
Process defaults. |
String (default, form, payload or batch) |
|
| ApprovalRequired |
Approval from a manager is required to send the case. When set, cases must be sent using /api/v2/requestapproval. |
Boolean |
|
| ApprovalType |
Approval requirements that must be met. When set, cases must be sent using /api/v2/requestapproval. |
String (requireall or requireany) |
|
| Approvers |
Approvers are notified that the case must be reviewed and approved before being sent. |
List of StakeholderModels |
|
| DisablePartyQuestion |
Determines if parties can ask questions |
Boolean |
|
| SendRejectNotification |
Send email notifications to creator when the case has been rejected. |
Boolean |
|
| AllowEditApprover |
Allow agents to change approver details if this is true. When set, cases must be sent using /api/v2/requestapproval. |
Boolean |
|
Example
POST /api/v2/createcase
{
"Id": "5a0e0866-252e-4b79-8a9b-466ea5cca5ce",
"Name": "Employment agreement 4132",
"Parties": [
{
"Id": "s4jf",
"Name": "Michael J. Fox",
"EmailAddress": "michael.j.fox@example.com",
"AnyoneCanSign": false,
"SignatureType": "Unknown",
"ShowInternalInformation": false,
"Assignable": false,
"HasIdCheckDocument": false
}
],
"Documents": [
{
"Filename": "agreement.pdf",
"Data": "",
"ContentType": "application/pdf",
"Size": 43242,
"Type": "Original",
"FormFields": {},
"IsRequired": false
}
],
"AllowedSignatureTypes": [
"ElectronicId"
],
"Visibility": "Group",
"Stakeholders": [],
"Metadata": {},
"ContinueAuto": false,
"NotificationMethods": [],
"SendSignRequestEmailToParties": true,
"SendFinishEmailToCreator": true,
"SendFinishEmailToParties": true,
"SendRecallEmailToParties": true,
"Culture": "en-US",
"SignInSequence": false,
"AccessControl": "Default",
"IdentityCheck": false,
"IsEditable": false,
"MergeOnSend": false,
"UseGroupNames": false,
"ExpireAfterDays": 0,
"RemindAfterDays": 0,
"EventCallback": {
"Events": [
"Created",
"Signed",
"SignatureAdded",
"Finished"
],
"Url": ""
},
"Procedure": "Default",
"ApprovalRequired": false,
"Approvers": [],
"DisablePartyQuestion": false,
"SendRejectNotification": false,
"AllowEditApprover": false
}
Response: 200 OK
Expand
Collapse
cURL
curl --location --request POST 'https://app.assently.com/api/v2/createcase' \
--header 'Authorization: Basic APIKEY' \
--header 'ContentType: application/json' \
--data-raw '
{
"Id": "5a0e0866-252e-4b79-8a9b-466ea5cca5ce",
"Name": "Employment agreement 4132",
"Parties": [
{
"Id": "s4jf",
"Name": "Michael J. Fox",
"EmailAddress": "michael.j.fox@example.com",
"AnyoneCanSign": false,
"SignatureType": "Unknown",
"ShowInternalInformation": false,
"Assignable": false,
"HasIdCheckDocument": false
}
],
"Documents": [
{
"Filename": "agreement.pdf",
"Data": "",
"ContentType": "application/pdf",
"Size": 43242,
"Type": "Original",
"FormFields": {},
"IsRequired": false
}
],
"AllowedSignatureTypes": [
"ElectronicId"
],
"Visibility": "Group",
"Stakeholders": [],
"Metadata": {},
"ContinueAuto": false,
"NotificationMethods": [],
"SendSignRequestEmailToParties": true,
"SendFinishEmailToCreator": true,
"SendFinishEmailToParties": true,
"SendRecallEmailToParties": true,
"Culture": "en-US",
"SignInSequence": false,
"AccessControl": "Default",
"IdentityCheck": false,
"IsEditable": false,
"MergeOnSend": false,
"UseGroupNames": false,
"ExpireAfterDays": 0,
"RemindAfterDays": 0,
"EventCallback": {
"Events": [
"Created",
"Signed",
"SignatureAdded",
"Finished"
],
"Url": ""
},
"Procedure": "Default",
"ApprovalRequired": false,
"Approvers": [],
"DisablePartyQuestion": false,
"SendRejectNotification": false,
"AllowEditApprover": false
}'
Expand
Collapse
Create from template
POST /api/v2/createcasefromtemplate
Creates a case based on a template. Set agentUsername to either ID or email address to specify an issuing agent other than the one that makes the API call. If agentUsername is omitted, the calling agent will be used.
| Parameter |
Description |
Type |
Required |
| templateId |
A UUID for the template |
Guid |
|
| newCaseId |
A UUID for the new case |
Guid |
|
| agentUsername |
Optionally specify an agent responsible for this case. When omitted, agent will be the authenticated user. Username is either the Agents ExternalId or EmailAdress. |
String |
|
| agentUsernameType |
AgentUsernameType determines the exact type of username. The types are Id and EmailAddress. UsernameType is required when Agent Id has a format similar to EmailAddress. |
String |
|
Example
cURL
curl --location --request POST 'https://app.assently.com/api/v2/createcasefromtemplate' \
--header 'Authorization: Basic APIKEY' \
--form 'templateId=Guid' \
--form 'newCaseId=Guid' \
--form 'agentUsername=String' \
--form 'agentUsernameType=String'
Expand
Collapse
Update a case
POST /api/v2/updatecase
Updates properties and collections of a case. It is recommended to use 'Get a case' request before making an update. Collections: missing items will be removed, others updated or added. Documents collection: Only filename and formfields can be changed. To modify size, hash or data, the document must be removed first and a new document (with a new id) must be added.
| Parameter |
Description |
Type |
Required |
| Id |
Case Id. |
Guid |
|
| Name |
Name of the case. If omitted, will be set to an empty string. |
String |
|
| NameAlias |
Alternate name for internal use. Not visible to parties. If set it substitutes the Name property. When the case is created from a template, this property is always empty. If omitted, will be set to an empty string. |
String |
|
| AccountId |
Account Id of the case. The Account connected to the case cannot be updated. |
Number |
|
| MasterAccountId |
Master account Id of the case. The master account connected to the case cannot be updated. |
Number |
|
| Parties |
Parties who should sign. See Party subtype for more information. |
List of PartyModels |
|
| Documents |
List of documents to sign. See Document subtype for more information. |
List of DocumentModels |
|
| Visibility |
Controls how cases are visible to other agents. By default, cases are visible to other agents ('group'). |
String (group, private or inherit) |
|
| AllowedSignatureTypes |
Allowed signature types. Any combination of methods is allowed. See information on signature types in Basics section |
List of strings (electronicid, touch, sms or quickintent) |
|
| Description |
Description of the case, included in emails to parties. If omitted will be set to empty string. |
String |
|
| Stakeholders |
Stakeholders, notified once a case is signed. |
List of StakeholderModels |
|
| Metadata |
Metadata for this case. Metadata can be used when searching for cases. |
Key/value dictionary |
|
| CancelUrl |
URL where user is sent when rejecting the case. |
String |
|
| ContinueUrl |
URL to continue to when signature has been completed. If omitted will be set to empty string. |
String |
|
| ContinueName |
Name of URL to continue to when signature has been completed. If omitted will be set to empty string. |
String |
|
| ContinueAuto |
Automatically continues to the ContinueUrl when the signature has been added. The case can have a status of Sent, Signed or Finished at the time of addition of signature. The case will have status Sent for multi-party cases where the last party has not yet signed. The case will have a status of either Signed or Finished when all parties have signed. |
Boolean |
|
| NotificationMethods |
Determines how to notify parties of signature requests and finished cases. Default when omitted is Email. |
List of strings (none, email or sms) |
|
| SendSignRequestEmailToParties |
Send signature request notifications to all parties when the case is created. If false, no messages of this type will be sent, regardless of NotificationMethods. |
Boolean |
|
| SendFinishEmailToCreator |
Send email notifications to creator when the case has been finished. |
Boolean |
|
| SendFinishEmailToParties |
Send email notifications to parties when the case has been finished. If false, no messages of this type will be sent, regardless of NotificationMethods. |
Boolean |
|
| SendRecallEmailToParties |
Send email notifications to parties when the case has been recalled. |
Boolean |
|
| RequestMessage |
Custom message used the request to sign notification email. Overrides the system default message. |
String |
|
| RequestMessageSms |
Custom message used in the request to sign notification SMS. Overrides the system default message. |
String |
|
| FinishedMessage |
Custom message used in the notification email to parties when all parties have signed. Overrides the system default message. |
String |
|
| FinishedMessageSms |
Custom message used in the notification SMS to parties when all parties have signed. Overrides the system default messages. |
String |
|
| Culture |
Culture of case. Will be set to the authenticated user's culture if omitted. |
String |
|
| SignInSequence |
Enforce a signing order. When false, parties are notified and can sign simultaneously. |
Boolean |
|
| AccessControl |
Define whether parties must provide additional credentials to access the case. |
String (default, sms or electronicid) |
|
| IdentityCheck |
Party is required to take a photo of ID before signing. |
Boolean |
|
| IsEditable |
Indicates that documents in this case (provided that they contain form fields) can be edited by agent or party prior to first signature. |
Boolean |
|
| MergeOnSend |
For cases where IsEditable is enabled, this setting will merge and make the document(s) read-only when the case is sent. |
Boolean |
|
| UseGroupNames |
Display the group name fields (known as Company Name in the UI) for each party. If true, group name for each party must be set before the case can be sent. |
Boolean |
|
| ExpireAfterDays |
Signing deadline, relative to when the case is sent. ExpireOn overrides this property. Default when omitted is 0. |
Number |
|
| ExpireOn |
Absolute signing deadline. If set, the case will expire on this date and time. Date specified in UTC format YYYY-MM-DDThh:mm:ss. |
DateTime |
|
| RemindAfterDays |
A reminder will be sent automatically to parties that haven't signed after the specified number of days. Default when omitted is 0. |
Number |
|
| ApprovalRequired |
Approval from a manager is required to send the case. When set, cases must be sent using /api/v2/requestapproval. |
Boolean |
|
| ApprovalType |
Approval requirements that must be met. When set, cases must be sent using /api/v2/requestapproval. |
String (requireall or requireany) |
|
| Approvers |
Approvers are notified that the case must be reviewed and approved before being sent. |
List of StakeholderModels |
|
| EventCallback |
We'll send a server side callback when one of your subscribed events occur. |
CaseEventSubscription |
|
| DisablePartyQuestion |
Determines if parties can ask questions |
Boolean |
|
| SendRejectNotification |
Determines if email notifications are sent to creator when the case has been rejected. |
Boolean |
|
| TemporaryId |
An ephemeral ID that can be used for quick lookups, valid for 24 hours after the case is created. |
Number |
|
| AllowEditApprover |
Allow agents to change approver details if this is true. When set, cases must be sent using /api/v2/requestapproval. |
Boolean |
|
Example
POST /api/v2/updatecase
{
"Id": "5a0e0866-252e-4b79-8a9b-466ea5cca5ce",
"Status": 0,
"Name": "Employment agreement 4132-X",
"AccountId": 0,
"Parties": [
{
"Id": "s4jf",
"Name": "Michael Foxly",
"EmailAddress": "michael.foxly@example.com",
"AnyoneCanSign": false,
"SignatureType": 0,
"ShowInternalInformation": false,
"Assignable": false,
"HasIdCheckDocument": false
}
],
"Documents": [],
"Visibility": "Group",
"AllowedSignatureTypes": [],
"Stakeholders": [],
"Metadata": {},
"ContinueAuto": false,
"NotificationMethods": [],
"SendSignRequestEmailToParties": false,
"SendFinishEmailToCreator": false,
"SendFinishEmailToParties": false,
"SendRecallEmailToParties": false,
"SignInSequence": false,
"IdentityCheck": false,
"IsEditable": false,
"MergeOnSend": false,
"ExpireAfterDays": 0,
"RemindAfterDays": 0,
"CreatedOn": "0001-01-01T00:00:00",
"Approvers": [],
"Procedure": "Default",
"SendRejectNotification": false
}
Response: 200 OK
Expand
Collapse
cURL
curl --location --request POST 'https://app.assently.com/api/v2/updatecase' \
--header 'Authorization: Basic APIKEY' \
--header 'ContentType: application/json' \
--data-raw '
{
"Id": "5a0e0866-252e-4b79-8a9b-466ea5cca5ce",
"Status": 0,
"Name": "Employment agreement 4132-X",
"AccountId": 0,
"Parties": [
{
"Id": "s4jf",
"Name": "Michael Foxly",
"EmailAddress": "michael.foxly@example.com",
"AnyoneCanSign": false,
"SignatureType": 0,
"ShowInternalInformation": false,
"Assignable": false,
"HasIdCheckDocument": false
}
],
"Documents": [],
"Visibility": "Group",
"AllowedSignatureTypes": [],
"Stakeholders": [],
"Metadata": {},
"ContinueAuto": false,
"NotificationMethods": [],
"SendSignRequestEmailToParties": false,
"SendFinishEmailToCreator": false,
"SendFinishEmailToParties": false,
"SendRecallEmailToParties": false,
"SignInSequence": false,
"IdentityCheck": false,
"IsEditable": false,
"MergeOnSend": false,
"ExpireAfterDays": 0,
"RemindAfterDays": 0,
"CreatedOn": "0001-01-01T00:00:00",
"Approvers": [],
"Procedure": "Default",
"SendRejectNotification": false
}'
Expand
Collapse
POST /api/v2/updatecasemetadata
Allows updating metadata regardless of the case status. Existing metadata will be replaced with new metadata. Metadata cannot be complex objects.
| Parameter |
Description |
Type |
Required |
| Id |
Case Id. |
Guid |
|
| Metadata |
Case Metadata (key/value). |
Key/value dictionary |
|
Example
POST /api/v2/updatecasemetadata
{
"id": "5a0e0866-252e-4b79-8a9b-466ea5cca5ce",
"metadata": {
"Country": "Sweden",
"ExternalReferenceId": "3D2V1WF3C4"
}
}
Response: 200 OK
Expand
Collapse
cURL
curl --location --request POST 'https://app.assently.com/api/v2/updatecasemetadata' \
--header 'Authorization: Basic APIKEY' \
--header 'ContentType: application/json' \
--data-raw '
{
"id": "5a0e0866-252e-4b79-8a9b-466ea5cca5ce",
"metadata": {
"Country": "Sweden",
"ExternalReferenceId": "3D2V1WF3C4"
}
}'
Expand
Collapse
Send a case
POST /api/v2/sendcase
Changes the status of the case to Sent, making it available for signing. In order to send a case the parameters Parties, Documents and AllowedSignatureTypes must be specified on the case. If notifications are enabled, parties will be notified.
| Parameter |
Description |
Type |
Required |
| id |
|
Guid |
|
Example
cURL
curl --location --request POST 'https://app.assently.com/api/v2/sendcase' \
--header 'Authorization: Basic APIKEY' \
--form 'id=Guid'
Expand
Collapse
Send a reminder
POST /api/v2/remindcase
Sends reminders to all parties that have not yet signed. If signing order is enforced, only the next party in turn will be reminded.
| Parameter |
Description |
Type |
Required |
| id |
|
Guid |
|
Example
cURL
curl --location --request POST 'https://app.assently.com/api/v2/remindcase' \
--header 'Authorization: Basic APIKEY' \
--form 'id=Guid'
Expand
Collapse
Delete a case
POST /api/v2/deletecase
Case is deleted permanently. If the case is sent, it will be recalled prior to deletion.
| Parameter |
Description |
Type |
Required |
| id |
|
Guid |
|
Example
cURL
curl --location --request POST 'https://app.assently.com/api/v2/deletecase' \
--header 'Authorization: Basic APIKEY' \
--form 'id=Guid'
Expand
Collapse
Recall a case
POST /api/v2/recallcase
If the case is sent, it will be recalled. Finished cases cannot be recalled.
| Parameter |
Description |
Type |
Required |
| id |
|
Guid |
|
Example
cURL
curl --location --request POST 'https://app.assently.com/api/v2/recallcase' \
--header 'Authorization: Basic APIKEY' \
--form 'id=Guid'
Expand
Collapse
Get a case
GET /api/v2/getcase
Gets a case based on its id.
GetCase supports an optional additional query parameter IncludeAllStatuses which when set to true will return all statuses. June 13, 2018 release of Assently E-sign app includes PAdES which introduces a new case status called Signed. (Ref: to Statuses documentation). For backward compatibility, the Signed status is returned as Sent by default. If IncludeAllStatuses is set to true, the Signed status will be returned as is. All Assently API clients released after September 13, 2018 will return the new Signed status. For backward compatibility, the PendingApproval status is returned as Draft by default. If includePendingApprovalStatus is set to true, the PendingApproval status will be returned as is.
| Parameter |
Description |
Type |
Required |
| Id |
The UUID for the Case to get. |
Guid |
|
Return type
CaseModel as application/json
Example
GET /api/v2/getcase ?id=5a0e0866-252e-4b79-8a9b-466ea5cca5ce
Response: 200 OK <CaseModel> {
"Id": "5a0e0866-252e-4b79-8a9b-466ea5cca5ce",
"Status": "Sent",
"Name": "Employment agreement 4132",
"AccountId": 0,
"Parties": [
{
"Name": "Michael J. Fox",
"EmailAddress": "michael.j.fox@example.com",
"AnyoneCanSign": false,
"SignatureType": 0,
"ShowInternalInformation": false,
"Assignable": false,
"NotificationStatus": {
"Email": "Sent"
},
"HasIdCheckDocument": false,
"Reviewed": false
}
],
"Documents": [
{
"Filename": "agreement.pdf",
"ContentType": "application/pdf",
"Size": 43242,
"Hash": "",
"Type": "Original",
"FormFields": {},
"IsRequired": false
}
],
"Visibility": "Group",
"AllowedSignatureTypes": [
"ElectronicId"
],
"Stakeholders": [],
"Metadata": {},
"ContinueAuto": false,
"NotificationMethods": [],
"SendSignRequestEmailToParties": true,
"SendFinishEmailToCreator": true,
"SendFinishEmailToParties": true,
"SendRecallEmailToParties": true,
"Culture": "en-US",
"SignInSequence": false,
"IdentityCheck": false,
"IsEditable": false,
"MergeOnSend": false,
"ExpireAfterDays": 0,
"RemindAfterDays": 0,
"CreatedOn": "2048-12-12T13:37:00",
"Approvers": [],
"Procedure": "Default",
"SendRejectNotification": false
}
Expand
Collapse
cURL
curl --location --request GET 'https://app.assently.com/api/v2/getcase?id=5a0e0866-252e-4b79-8a9b-466ea5cca5ce' \
--header 'Authorization: Basic APIKEY'
Expand
Collapse
Get a case by temporary id
GET /api/v2/getcasebytemporaryid
Gets a case by its temporaryId. A temporary id is a 4+ digit number that is only valid for 24 hours.
| Parameter |
Description |
Type |
Required |
| id |
|
Number |
|
Return type
CaseModel as application/json
Example
GET /api/v2/getcasebytemporaryid ?id=1234
Response: 200 OK <CaseModel> {
"Id": "5a0e0866-252e-4b79-8a9b-466ea5cca5ce",
"Status": "Sent",
"Name": "Employment agreement 4132",
"AccountId": 0,
"Parties": [
{
"Name": "Michael J. Fox",
"EmailAddress": "michael.j.fox@example.com",
"AnyoneCanSign": false,
"SignatureType": 0,
"ShowInternalInformation": false,
"Assignable": false,
"NotificationStatus": {
"Email": "Sent"
},
"HasIdCheckDocument": false,
"Reviewed": false
}
],
"Documents": [
{
"Filename": "agreement.pdf",
"Data": "",
"ContentType": "application/pdf",
"Size": 43242,
"Type": "Original",
"FormFields": {},
"IsRequired": false
}
],
"Visibility": "Group",
"AllowedSignatureTypes": [
"ElectronicId"
],
"Stakeholders": [],
"Metadata": {},
"ContinueAuto": false,
"NotificationMethods": [],
"SendSignRequestEmailToParties": true,
"SendFinishEmailToCreator": true,
"SendFinishEmailToParties": true,
"SendRecallEmailToParties": true,
"Culture": "en-US",
"SignInSequence": false,
"IdentityCheck": false,
"IsEditable": false,
"MergeOnSend": false,
"ExpireAfterDays": 0,
"RemindAfterDays": 0,
"CreatedOn": "2048-12-12T13:37:00",
"Approvers": [],
"Procedure": "Default",
"SendRejectNotification": false
}
Expand
Collapse
cURL
curl --location --request GET 'https://app.assently.com/api/v2/getcasebytemporaryid?id=1234' \
--header 'Authorization: Basic APIKEY'
Expand
Collapse
Find and list cases
GET /api/v2/findcases
Finds and Lists cases based upon the input parameters.
FindCases supports an optional additional query parameter IncludeAllStatuses which when set to true will return all statuses. June 28, 2018 release of Assently E-sign app includes PAdES which introduces a new case status called Signed. (Ref: to Statuses documentation). For backward compatibility, the Signed status is returned as Sent by default. If IncludeAllStatuses is set to true, the Signed status will be returned as is. All Assently API clients released after September 13, 2018 will return the new Signed status.
For backward compatibility, the PendingApproval status is returned as Draft by default. If
includePendingApprovalStatus is set to true, the PendingApproval status will be returned as is.
This method supports strict/partial matching based on the field. Strict match means that the whole search text must exactly match value of the field. Partial match means that the search text must match 100% but can be a subset of the value of the field. Below is a list of fields that are searchable and the type of supported matching:
Following fields support strict matching:
AgentUsername (agent id or email address)
Status
Metadata (key)
Documents.FormData (key)
Following fields support partial matching:
Description
Name
NameAlias
Metadata (value)
Stakeholders.Name
Stakeholders.EmailAddress
Stakeholders.MobilePhone
Stakeholders.NationalID
Stakeholders.EidSerialNumber
Approvers.Name
Approvers.EmailAddress
Approvers.MobilePhone
Approvers.NationalID
Documents.Filename
Documents.FormData (value)
Parties.Name
Parties.CaseMobilePhone
Parties.EmailAddress
Parties.GroupName
Parties.SocialSecurityNumber
Parties.EidSerialNumber
When returned results are based on partial matching, non unique values or values that can be subset to other values will return multiple results. Special care should therefore be taken for situations where a specific result is expected based on an exact value.
Search relevancy can be improved by combining different parameters.
| Parameter |
Description |
Type |
Required |
| FromDate |
Include cases created on or after this date. Date must be specifed in UTC format YYYY-MM-DDThh:mm:ss. Set to null to not filter on this parameter. |
DateTime |
|
| ToDate |
Include cases created on or before this date. Date must be specifed in UTC format YYYY-MM-DDThh:mm:ss. Set to null to not filter on this parameter. |
DateTime |
|
| Status |
Include cases with this case status. Set to null to not filter on this parameter. Status uses strict matching. |
String (pending, draft, sent, finished, expired, rejected, signed or pendingapproval) |
|
| Search |
Search cases that have the specified search text. |
String |
|
| AgentUsername |
Include cases belonging to this agent by EmailAddress or Id. If empty, cases from all agents are returned. This filter uses strict matching |
String |
|
| PartySocialSecurityNumber |
Include cases where a party has this social security number. Filter uses partial matching. |
String |
|
| PartyEidSerialNumber |
Include cases where a party has this serial number. Filter uses partial matching. |
String |
|
| PartyEmailAddress |
Include cases where a party has this email address. Filter uses partial matching. |
String |
|
| PartyMobilePhone |
Include cases where a party has this phone number. Filter uses partial matching. |
String |
|
| Metadata |
Include cases where the following metadata matches (key/value). Filter uses partial matching on values. |
Key/value dictionary |
|
| FormData |
Include cases where the following form fields matches (key/value). Filter uses partial matching on values. |
Key/value dictionary |
|
| Sort |
Sort by either Status, Name or Created. Example: 'Created DESC' to sort newest cases first. |
String |
|
| Skip |
For paging purposes, the number of cases to skip before Take. Default is 0. Should be a multiple of Take. The value of Skip and Take combined must not be higher than 10000 |
Number |
|
| Take |
Number of cases to return. Default is 20. Maximum cases that can be returned in one request is 100. Use in combination with Skip to get more cases in multiple requests. |
Number |
|
Return type
List of CaseModels as application/json
Example
cURL
curl --location --request GET 'https://app.assently.com/api/v2/findcases' \
--header 'Authorization: Basic APIKEY' \
--form 'FromDate=DateTime' \
--form 'ToDate=DateTime' \
--form 'Status=String (pending, draft, sent, finished, expired, rejected, signed or pendingapproval)' \
--form 'Search=String' \
--form 'AgentUsername=String' \
--form 'PartySocialSecurityNumber=String' \
--form 'PartyEidSerialNumber=String' \
--form 'PartyEmailAddress=String' \
--form 'PartyMobilePhone=String' \
--form 'Metadata=Key/value dictionary' \
--form 'FormData=Key/value dictionary' \
--form 'Sort=String' \
--form 'Skip=Number' \
--form 'Take=Number'
Expand
Collapse
Request approval to send
POST /api/v2/requestapproval
Used when a case is set to require approval before sent. Sends a request to approver stakeholders to approve and send the case. Approvals are requested in the name of the API user.
| Parameter |
Description |
Type |
Required |
| id |
|
Guid |
|
Example
cURL
curl --location --request POST 'https://app.assently.com/api/v2/requestapproval' \
--header 'Authorization: Basic APIKEY' \
--form 'id=Guid'
Expand
Collapse
Mark that a party has signed a case
POST /api/v2/markassigned
Used when a party signs a physical document with a hand written signature. After receiving and validating the signature, an agent can mark the party as signed on the case in E-Sign.The agent is responsible for the validity, and archival, of the signature.
| Parameter |
Description |
Type |
Required |
| CaseId |
Case reference ID. |
Guid |
|
| PartyId |
ID of the party in the case. |
String |
|
| PartyName |
Name of signing party. Optional unless name was empty |
String |
|
Example
cURL
curl --location --request POST 'https://app.assently.com/api/v2/markassigned' \
--header 'Authorization: Basic APIKEY' \
--form 'CaseId=Guid' \
--form 'PartyId=String' \
--form 'PartyName=String'
Expand
Collapse
Mark that a party will not sign a case
POST /api/v2/markasnotsigned
Used when a party is not going to sign, but the case should still be finished. The party will still appear in the receipt, marked as not signed.
| Parameter |
Description |
Type |
Required |
| caseId |
|
Guid |
|
| partyId |
|
String |
|
Example
cURL
curl --location --request POST 'https://app.assently.com/api/v2/markasnotsigned' \
--header 'Authorization: Basic APIKEY' \
--form 'caseId=Guid' \
--form 'partyId=String'
Expand
Collapse
Find and list templates
GET /api/v2/findtemplates
| Parameter |
Description |
Type |
Required |
| FromDate |
Include templates created on or after this date. Specify date in UTC format YYYY-MM-DDThh:mm:ss. Set to null to not filter on this parameter. |
DateTime |
|
| ToDate |
Include templates created on or before this date. Specify date in UTC format YYYY-MM-DDThh:mm:ss. Set to null to not filter on this parameter. |
DateTime |
|
| AgentUsername |
Include templates belonging to this agent by EmailAddress or Id. If empty, templates for all agents are returned. |
String |
|
| Metadata |
Include templates where the following metadata matches (key/value). |
Key/value dictionary |
|
| FormData |
Include templates where the following form fields matches (key/value). |
Key/value dictionary |
|
| Sort |
Sort by either Status, Name or Created. Example: 'Created DESC' to sort newest templates first. |
String |
|
| Skip |
For paging purposes, the number of items to skip before Take. Default is 0. Should be a multiple of Take. |
Number |
|
| Take |
Number of items to return. Default is 20. Maximum cases that can be returned in one request is 100. Use in combination with Skip to get more cases in multiple requests. |
Number |
|
Return type
List of CaseModels as application/json
Example
GET /api/v2/findtemplates
Response: 200 OK CaseModels>
Expand
Collapse
cURL
curl --location --request GET 'https://app.assently.com/api/v2/findtemplates' \
--header 'Authorization: Basic APIKEY' \
--form 'FromDate=DateTime' \
--form 'ToDate=DateTime' \
--form 'AgentUsername=String' \
--form 'Metadata=Key/value dictionary' \
--form 'FormData=Key/value dictionary' \
--form 'Sort=String' \
--form 'Skip=Number' \
--form 'Take=Number'
Expand
Collapse
Retrieve a document
GET /api/v2/getdocumentdata
Returns the file data of the specified document
| Parameter |
Description |
Type |
Required |
| caseId |
|
Guid |
|
| documentId |
|
String |
|
Return type
Stream as application/octet-stream
Example
cURL
curl --location --request GET 'https://app.assently.com/api/v2/getdocumentdata' \
--header 'Authorization: Basic APIKEY' \
--form 'caseId=Guid' \
--form 'documentId=String'
Expand
Collapse
Working with Agents
Create agent
POST /api/v2/createagent
This action creates the agent and the underlying user if it does not exist. The action is safe to repeat. If the agent already exists, nothing happens.
| Parameter |
Description |
Type |
Required |
| Name |
John Smith, or similar |
String |
|
| EmailAddress |
Notification will be sent to this address. Used as login if Id is omitted. |
String |
|
| Role |
Determines which permissions the agent will have. Standard roles are IsolatedAgent, LimitedAgent, Agent, Manager, Administrator. |
String |
|
| Id |
Id of this agent. Unique within the account to which the agent belongs. You may provide an Id, or one will be generated for you. |
String |
|
| PhoneNumber |
Phone number. |
String |
|
| Culture |
Controls UI language for this agent. |
String |
|
| AllowedLoginTypes |
Allowed login types. Any combination of methods is allowed. For backwards compatibility, If the field is not specified or set to null, web and assentlysso will be set as allowed login types. |
List of strings (web, saml or assentlysso) |
|
Example
POST /api/v2/createagent
{
"Name": "Test User",
"EmailAddress": "test.user@example.com",
"Role": "Agent",
"Id": "cipe-237",
"PhoneNumber": "+46XXXXXXXXX",
"Culture": "en-US",
"AllowedLoginTypes": [
"Web"
]
}
Response: 200 OK
Expand
Collapse
cURL
curl --location --request POST 'https://app.assently.com/api/v2/createagent' \
--header 'Authorization: Basic APIKEY' \
--header 'ContentType: application/json' \
--data-raw '
{
"Name": "Test User",
"EmailAddress": "test.user@example.com",
"Role": "Agent",
"Id": "cipe-237",
"PhoneNumber": "+46XXXXXXXXX",
"Culture": "en-US",
"AllowedLoginTypes": [
"Web"
]
}'
Expand
Collapse
Get agent
GET /api/v2/getagent
This action will return the agent for the current account
| Parameter |
Description |
Type |
Required |
| Username |
Username is either Agent Id or EmailAddress. |
String |
|
| UsernameType |
UsernameType determines the exact type of username. The types are Id and EmailAddress. UsernameType is required when Agent Id has a format similar to EmailAddress. |
String |
|
Example
GET /api/v2/getagent ?username=john.smith%40example.com
Response: 200 OK {
"Id": "cipe-237",
"EmailAddress": "test.user@example.com",
"Name": "Test User",
"Role": "Agent",
"PhoneNumber": "+46XXXXXXXXX",
"Culture": "en-US",
"AllowedLoginTypes": [
"Web"
]
}
Expand
Collapse
cURL
curl --location --request GET 'https://app.assently.com/api/v2/getagent?username=john.smith%40example.com' \
--header 'Authorization: Basic APIKEY'
Expand
Collapse
Update agent or underlying user
POST /api/v2/updateagent
This action will update agent or the underlying user. Missing values will be removed. EmailAddress cannot be updated.
| Parameter |
Description |
Type |
Required |
| Id |
User specified or automatically generated Id of this agent. Id is unique within the account to which the agent belongs. |
String |
|
| EmailAddress |
Email address of the underlying user. Notification will be sent to this email address. EmailAddress can also be used to identify the agent in the account. EmailAddress cannot be updated. |
String |
|
| Name |
Name of the underlying user for this agent. If the value is different from current value, it will be updated |
String |
|
| Role |
Role of the Agent. If the value is different from current value, it will be updated. Standard roles are IsolatedAgent, LimitedAgent, Agent, Manager, Administrator. |
String |
|
| PhoneNumber |
Phone number of the underlying user for this agent. If the value is difference from current value, it will be updated. Missing PhoneNumber will remove any previously set PhoneNumber. |
String |
|
| Culture |
UI language for this agent. If the value is different from current value, it will be updated. Missing Culture will remove any previously set Culture hence setting Culture to Default. |
String |
|
| AllowedLoginTypes |
Allowed login types. Any combination of methods is allowed. If the field is not specified or set to null, the AllowedLoginTypes will be left unchanged. |
List of strings (web, saml or assentlysso) |
|
Example
POST /api/v2/updateagent
{
"Id": "cipe-237",
"EmailAddress": "test.user@example.com",
"Name": "Test User",
"Role": "LimitedAgent",
"Culture": "sv-SE",
"AllowedLoginTypes": [
"Saml"
]
}
Response: 200 OK
Expand
Collapse
cURL
curl --location --request POST 'https://app.assently.com/api/v2/updateagent' \
--header 'Authorization: Basic APIKEY' \
--header 'ContentType: application/json' \
--data-raw '
{
"Id": "cipe-237",
"EmailAddress": "test.user@example.com",
"Name": "Test User",
"Role": "LimitedAgent",
"Culture": "sv-SE",
"AllowedLoginTypes": [
"Saml"
]
}'
Expand
Collapse
Remove agent
POST /api/v2/removeagent
Removing an agent disassociates the underlying user from the account. To switch an agent from one account to another, agent should be provisioned in the new account first and then removed from the old.
| Parameter |
Description |
Type |
Required |
| Username |
Username is either Agent Id or EmailAddress |
String |
|
| UsernameType |
UsernameType determines the exact type of username. The types are Id and EmailAddress. UsernameType is required when Agent Id has a format similar to EmailAddress. |
String |
|
Example
POST /api/v2/removeagent
{
"Username": "test.user@example.com"
}
Response: 200 OK
Expand
Collapse
cURL
curl --location --request POST 'https://app.assently.com/api/v2/removeagent' \
--header 'Authorization: Basic APIKEY' \
--header 'ContentType: application/json' \
--data-raw '
{
"Username": "test.user@example.com"
}'
Expand
Collapse
Agent single sign-on
POST /api/v2/createssoticket
Creates a single sign-on ticket for an agent. Redirect your user to the returned URL to log them in. Ticket is valid for 3 minutes and can only be used once.
| Parameter |
Description |
Type |
Required |
| Username |
Username is either Agent Id or Agent EmailAddress. |
String |
|
| UsernameType |
UsernameType determines the exact type of username. The types are Id and EmailAddress. UsernameType is required when Agent Id has a format similar to EmailAddress. |
String |
|
| TargetUrl |
If supplied, user will be redirected to this address after login. |
String |
|
Example
POST /api/v2/createssoticket
{
"Username": "cipe-237",
"TargetUrl": "https://test.assently.com/a/case/edit/5a0e0866-252e-4b79-8a9b-466ea5cca5ce"
}
Response: 200 OK "https://test.assently.com/user/sso/?token=0ITDig220QiANbkBJxZwqkuXtojY6pBuDx8JxKol&username=cipe-237&redirect=/a/case/edit/5a0e0866-252e-4b79-8a9b-466ea5cca5ce"
Expand
Collapse
cURL
curl --location --request POST 'https://app.assently.com/api/v2/createssoticket' \
--header 'Authorization: Basic APIKEY' \
--header 'ContentType: application/json' \
--data-raw '
{
"Username": "cipe-237",
"TargetUrl": "https://test.assently.com/a/case/edit/5a0e0866-252e-4b79-8a9b-466ea5cca5ce"
}'
Expand
Collapse
Working with LiveID
Start LiveID Authentication
POST /api/v2/liveid/start
Starts a new authentication attempt.
| Parameter |
Description |
Type |
Required |
| EmailAddress |
Specifies customer email address. Format: michael.j.fox@example.com. |
String |
|
| PhoneNumber |
Specifies customer phone number. Format: +4671234567 (phone number with country code included). |
String |
|
| EventCallback |
Specifies at what stages to send callbacks. Available events to get callbacks on are: Started | Verified | Unverified. |
LiveIdEventSubscription |
|
| Culture |
Specifies what language any sms or email will be sent in, can be left blank for the default language, English. Available other languages are: sv-SE for Swedish | da-DK for Danish | fi-FI for Finnish | no for Norwegian. |
String |
|
| AllowedEidProvider |
Specifies the allowed E-identification provider when authenticating, uses the CoreId provider name. Can be left blank to allow all providers. |
String |
|
Example
POST /api/v2/liveid/start
{
"EmailAddress": "john.doe@example.com",
"PhoneNumber": "+46762012345",
"EventCallback": {
"Events": [
"Started",
"Verified",
"Failed"
],
"Url": ""
},
"Culture": "sv-SE"
}
Response: 200 OK {
"Id": "5a0e0866-252e-4b79-8a9b-466ea5cca5ce",
"Status": "Pending",
"Identity": {
"Provider": "Unknown"
},
"EventCallback": {
"Events": [
"Started",
"Verified",
"Failed"
],
"Url": ""
},
"PartyUrl": "https://app.assently.com/liveid/5a0e0866-252e-4b79-8a9b-466ea5cca5ce"
}
Expand
Collapse
cURL
curl --location --request POST 'https://app.assently.com/api/v2/liveid/start' \
--header 'Authorization: Basic APIKEY' \
--header 'ContentType: application/json' \
--data-raw '
{
"EmailAddress": "john.doe@example.com",
"PhoneNumber": "+46762012345",
"EventCallback": {
"Events": [
"Started",
"Verified",
"Failed"
],
"Url": ""
},
"Culture": "sv-SE"
}'
Expand
Collapse
Start Swedish BankId Authentication
POST /api/v2/liveid/swedishbankid
Starts a new authentication attempt using Swedish BankID.
| Parameter |
Description |
Type |
Required |
| NationalId |
Specifies customer swedish national ID. Format: 8-digits with optional dash continued with last 4 digits for the Swedish number (YYYYMMDD[-]NNNN). |
String |
|
| EventCallback |
Specifies at what stages to send callbacks as well as where to send them. Available events to get callbacks on are: Started | Verified | Unverified |
LiveIdEventSubscription |
|
Example
POST /api/v2/liveid/swedishbankid
{
"NationalId": "19910203-1234",
"EventCallback": {
"Events": [
"Started",
"Verified",
"Failed"
],
"Url": ""
}
}
Response: 200 OK {
"Id": "5a0e0866-252e-4b79-8a9b-466ea5cca5ce",
"Status": "Pending",
"Identity": {
"Provider": "Unknown"
},
"EventCallback": {
"Events": [
"Started",
"Verified",
"Failed"
],
"Url": ""
},
"PartyUrl": "https://app.assently.com/liveid/5a0e0866-252e-4b79-8a9b-466ea5cca5ce"
}
Expand
Collapse
cURL
curl --location --request POST 'https://app.assently.com/api/v2/liveid/swedishbankid' \
--header 'Authorization: Basic APIKEY' \
--header 'ContentType: application/json' \
--data-raw '
{
"NationalId": "19910203-1234",
"EventCallback": {
"Events": [
"Started",
"Verified",
"Failed"
],
"Url": ""
}
}'
Expand
Collapse
Get LiveID Authentication Status
GET /api/v2/liveid/status
Returns the status of an on-going authentication attempt.
| Parameter |
Description |
Type |
Required |
| id |
|
Guid |
|
Example
GET /api/v2/liveid/status ?id=5a0e0866-252e-4b79-8a9b-466ea5cca5ce
Response: 200 OK {
"Id": "5a0e0866-252e-4b79-8a9b-466ea5cca5ce",
"Status": "Pending",
"Identity": {
"Name": "Assently Testperson",
"NationalId": "19910203-1234",
"EIdSerialNumber": "ABC0123456789",
"Date": "2026-10-07T22:05:48.9464178Z",
"Provider": "se-bankid"
},
"EventCallback": {
"Events": [
"Started",
"Verified",
"Failed"
],
"Url": ""
},
"PartyUrl": "https://app.assently.com/liveid/5a0e0866-252e-4b79-8a9b-466ea5cca5ce"
}
Expand
Collapse
cURL
curl --location --request GET 'https://app.assently.com/api/v2/liveid/status?id=5a0e0866-252e-4b79-8a9b-466ea5cca5ce' \
--header 'Authorization: Basic APIKEY'
Expand
Collapse