SendSafely REST API

Documented endpoints for the SendSafely REST API. To call the endpoints a SendSafely API Key and Secret is required to calculate the request signature. This document is a draft, and should be considered a work in progress.

This is the documentation for version 2.0 of the API. This documentation has been updated on Sep 30, 2019.

Base URL
https://demo.sendsafely.com/api/v2.0

Package

Create package, upload encrypted data, add recipients, and finalize

Create a new package

Create a new package

Headers
  • ss-api-key Required / string

    SendSafely API Key (API_KEY)

  • ss-request-timestamp Required / string

    TIMESTAMP (ex: 2014-01-14T22:24:00+0000)

  • ss-request-signature Required / string

    HmacSHA256(APISECRET, APIKEY + URLPATH + TIMESTAMP + REQUESTBODY)

Body
  • vdr Required / boolean
Responses
  • 200 object
    • packageId string
    • packageCode string
    • serverSecret string
    • response string
Definition
PUT https://demo.sendsafely.com/api/v2.0/package/
Example request
$ curl \ -X PUT https://demo.sendsafely.com/api/v2.0/package/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-timestamp: string" \ -H "ss-request-signature: string" \ -d '{"vdr":true}'
Example response (200)
{ "packageId": "4B88-CV9G", "packageCode": "E8FfOCwV4His4tlezIGi07qi0bQhxGQHcqVKYcqPcgg", "serverSecret": "ACbuj9OpJ7JWMqfYlGxfwH1Yjt39NYL1bQ", "response": "SUCCESS" }

Get package information

Get package information

Headers
  • ss-api-key Required / string
  • ss-request-timestamp Required / string
  • ss-request-signature Required / string
URL parameters
  • packageId Required / string
Responses
  • 200 object
    • packageId string
    • packageCode string
    • serverSecret string
    • recipients array[object]
      • recipients.recipientId string
      • recipients.email string
      • recipients.fullName string
      • recipients.needsApproval boolean
      • recipients.recipientCode string
      • recipients.confirmations object
        • recipients.confirmations.ipAddress string
        • recipients.confirmations.timestamp string
        • recipients.confirmations.timeStampStr string
        • recipients.confirmations.isMessage boolean
      • recipients.isPackageOwner boolean
      • recipients.checkForPublicKeys boolean
      • recipients.roleName string
    • contactGroups array[object]
      • contactGroups.id string
    • files array[object]
      • files.id string
    • directories array[object]
      • directories.id string
    • approverList array[object]
      • approverList. string
    • needsApproval boolean
    • state string
    • passwordRequired boolean
    • life integer
    • isVDR boolean
    • isArchived boolean
    • packageSender string
    • packageTimestamp string
    • rootDirectoryId string
    • response string
Definition
GET https://demo.sendsafely.com/api/v2.0/package/{packageId}/
Example request
$ curl \ -X GET https://demo.sendsafely.com/api/v2.0/package/{packageId}/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-timestamp: string" \ -H "ss-request-signature: string"
Example response (200)
{ "packageId": "GVG2-MNZT", "packageCode": "M0AEMIrTQe9XWRgGDKiKta1pXobmpKwAVafWgXjnBsw", "serverSecret": "ACbuj9NKTkvjZ71Gc0t5zuU1xvba9XAouA", "recipients": [ { "recipientId": "5d504769-78c4-4c0a-b982-945845ea2075", "email": "recip1@example.com", "fullName": "External User", "needsApproval": false, "recipientCode": "YN0P1G0xbS9mBSwohP9xPJSqwgKXMq4bCI5uTcx1KKM", "confirmations": { "ipAddress": "127.0.0.1", "timestamp": "Dec 12, 2018 2:24:38 PM", "timeStampStr": "Dec 12, 2018 at 14:24", "isMessage": true }, "isPackageOwner": false, "checkForPublicKeys": false, "roleName": "VIEWER" } ], "contactGroups": [ { "id": "string" } ], "files": [ { "id": "string" } ], "directories": [ { "id": "string" } ], "approverList": [ { "": "string" } ], "needsApproval": false, "state": "PACKAGE_STATE_IN_PROGRESS", "passwordRequired": false, "life": 10, "isVDR": false, "isArchived": false, "packageSender": "user@companyabc.com", "packageTimestamp": "Feb 1, 2019 2:07:28 PM", "rootDirectoryId": "8c3c2184-e73e-4137-be92-e9c5b5661258", "response": "SUCCESS" }

Update package information

Update package information

Headers
  • ss-api-key Required / string
  • ss-request-signature Required / string
  • ss-request-timestamp Required / string
URL parameters
  • packageId Required / string
Body
  • life integer

    Only applicable to non workspaces

  • label string

    Only applicable to workspaces

Responses
  • 200 object
    • response string
Definition
POST https://demo.sendsafely.com/api/v2.0/package/{packageId}/
Example request
$ curl \ -X POST https://demo.sendsafely.com/api/v2.0/package/{packageId}/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-signature: string" \ -H "ss-request-timestamp: string" \ -d '{"life":10,"label":"Workspace 1"}'
Example response (200)
{ "response": "SUCCESS" }

Delete package

Delete package

Headers
  • ss-api-key Required / string
  • ss-request-signature Required / string
  • ss-request-timestamp Required / string
URL parameters
  • packageId Required / string
Responses
  • 200 object
    • response string
Definition
DELETE https://demo.sendsafely.com/api/v2.0/package/{packageId}/
Example request
$ curl \ -X DELETE https://demo.sendsafely.com/api/v2.0/package/{packageId}/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-signature: string" \ -H "ss-request-timestamp: string"
Example response (200)
{ "response": "SUCCESS" }

Finalize package

Finalize the packageNote that the message property of the response contains the secure link for accessing the encrypted message. When sharing the link with a recipient, the client-side generated secret should be passed as the value of a keyCode parameter appended as a URL Fragment Identifier. For example:https://companyabc.sendsafely.com:8443/receive/?thread=JRPE-XSR2&packageCode=EsUUhFULgu2H0X0hU8uDHzCBp02k4X62tTic2V1MsBY#keyCode=XXXXYYYYY

Headers
  • ss-api-key Required / string
  • ss-request-timestamp Required / string
  • ss-request-signature Required / string
URL parameters
  • packageId Required / string
Body
  • checksum Required / string
Responses
  • 200 object
    • approvers array[string]
    • recipients array[string]
    • needsLink boolean
    • response string
    • message string
Definition
POST https://demo.sendsafely.com/api/v2.0/package/{packageId}/finalize/
Example request
$ curl \ -X POST https://demo.sendsafely.com/api/v2.0/package/{packageId}/finalize/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-timestamp: string" \ -H "ss-request-signature: string" \ -d '{"checksum":"string"}'
Example response (200)
{ "approvers": [ "string" ], "recipients": [ "string" ], "needsLink": true, "response": "SUCCESS", "message": "https://companyabc.sendsafely.com/receive/?thread=JRPE-XSR2&packageCode=EsUUhFULgu2H0X0hU8uDHzCBp02k4X62tTic2V1MsBY" }

Upload encrypted message

Upload encrypted message. To encrypt the message, you will need to use an encryption library that implements the OpenPGP message format. Specifically, the following is required when encrypting with OpenPGP:The Symmetric-Key Algorithm should be 9 (AES-256)The Compression Algorithm should be 0 (Uncompressed)The Hash Algorithm should be 8 (SHA-256)The 256-bit encryption key is the package server secret concatenated with a random 256-bit secret generated client-side, which will be included as the "keyCode" parameter in the secure link.

Headers
  • ss-api-key Required / string
  • ss-request-timestamp Required / string
  • ss-request-signature Required / string
URL parameters
  • packageId Required / string
Body
  • message Required / string
Responses
  • 200 object
    • response string
    • message string
Definition
PUT https://demo.sendsafely.com/api/v2.0/package/{packageId}/message/
Example request
$ curl \ -X PUT https://demo.sendsafely.com/api/v2.0/package/{packageId}/message/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-timestamp: string" \ -H "ss-request-signature: string" \ -d '{"message":"jA0ECQMCJBbBW/qJuSBg0kwByG9kJ6LTQ6o6hY6aPXiwFeHoRw1odiEUVWmDshYHfW4DxEAxOkt2h2uKiQ6j...}'
Example response (200)
{ "response": "SUCCESS", "message": "Success" }

Add recipient

Add recipient

Headers
  • ss-api-key Required / string
  • ss-request-timestamp Required / string
  • ss-request-signature Required / string
URL parameters
  • packageId Required / string
Body
  • email Required / string
Responses
  • 200 object
    • approvalRequired boolean
    • checkForPublicKeys boolean
    • recipientId string
    • email string
    • phonenumbers array[object]
      • phonenumbers.countryCode integer
      • phonenumbers.phonenumber integer
      • phonenumbers.wasUsedMostRecently boolean
    • fullName string
    • smsAuth boolean
    • isPackageOwner boolean
    • roleName string
    • response string
Definition
PUT https://demo.sendsafely.com/api/v2.0/package/{packageId}/recipient/
Example request
$ curl \ -X PUT https://demo.sendsafely.com/api/v2.0/package/{packageId}/recipient/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-timestamp: string" \ -H "ss-request-signature: string" \ -d '{"email":"string"}'
Example response (200)
{ "approvalRequired": false, "checkForPublicKeys": true, "recipientId": "cd7ba10a-e02d-4c4e-8778-839f37aa6297", "email": "recip1@example.com", "phonenumbers": [ { "countryCode": 1, "phonenumber": 12345678, "wasUsedMostRecently": true } ], "fullName": "External User", "smsAuth": false, "isPackageOwner": false, "roleName": "VIEWER", "response": "SUCCESS" }

Creates a new file within a package

Creates a new file within a package. The unique fileId is returned as a result.

Headers
  • ss-api-key Required / string
  • ss-request-timestamp Required / string
  • ss-request-signature Required / string
URL parameters
  • packageId Required / string
Body
  • filename string
  • parts integer
  • filesize number
Responses
  • 200 object
    • response string
    • message string
Definition
PUT https://demo.sendsafely.com/api/v2.0/package/{packageId}/file/
Example request
$ curl \ -X PUT https://demo.sendsafely.com/api/v2.0/package/{packageId}/file/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-timestamp: string" \ -H "ss-request-signature: string" \ -d '{"filename":"example.txt","parts":4,"filesize":6884230.0}'
Example response (200)
{ "response": "SUCCESS", "message": "string" }

Gets the file part upload URLs for S3

Gets the file part upload URLs for S3. Up to 25 urls are returned at once.

Headers
  • ss-api-key Required / string
  • ss-request-timestamp Required / string
  • ss-request-signature Required / string
URL parameters
  • packageId Required / string
  • fileId Required / string
Body
  • part Required / integer
Responses
  • 200 object
    • uploadUrls array[object]
      • uploadUrls.part integer
      • uploadUrls.url string
Definition
PUT https://demo.sendsafely.com/api/v2.0/package/{packageId}/file/{fileId}/upload-urls/
Example request
$ curl \ -X PUT https://demo.sendsafely.com/api/v2.0/package/{packageId}/file/{fileId}/upload-urls/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-timestamp: string" \ -H "ss-request-signature: string" \ -d '{"part":1}'
Example response (200)
{ "uploadUrls": [ { "part": 1, "url": "https://sendsafely-dual-region-us.s3-accelerate.amazonaws.com/commercial/AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE/11111111-2222-3333-4444-555555555555-1?AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE&Expires=1554862678&Signature=OTP5Z0DIutXKbRRT4NwmxQG9jFk%3D" } ] }

Sets the file upload status as complete

Sets the file upload status as complete. The server will verify that all segments are present within S3.

Headers
  • ss-api-key Required / string
  • ss-request-timestamp Required / string
  • ss-request-signature Required / string
URL parameters
  • packageId Required / string
  • fileId Required / string
Body
  • complete Required / boolean
Responses
  • 200 object
    • response string
    • message string
Definition
POST https://demo.sendsafely.com/api/v2.0/package/{packageId}/file/{fileId}/upload-complete/
Example request
$ curl \ -X POST https://demo.sendsafely.com/api/v2.0/package/{packageId}/file/{fileId}/upload-complete/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-timestamp: string" \ -H "ss-request-signature: string" \ -d '{"complete":true}'
Example response (200)
{ "response": "SUCCESS", "message": "true" }

Get package publickeys

Get package PublicKeys

Headers
  • ss-api-key Required / string
  • ss-request-timestamp Required / string
  • ss-request-signature Required / string
URL parameters
  • packageId Required / string
Responses
  • 200 object
    • publicKeys array[object]
      • publicKeys.id string
      • publicKeys.key string
    • response string
Definition
GET https://demo.sendsafely.com/api/v2.0/package/{packageId}/public-keys/
Example request
$ curl \ -X GET https://demo.sendsafely.com/api/v2.0/package/{packageId}/public-keys/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-timestamp: string" \ -H "ss-request-signature: string"
Example response (200)
{ "publicKeys": [ { "id": "string", "key": "-----BEGIN PGP PUBLIC KEY BLOCK----- -----END PGP PUBLIC KEY BLOCK-----\r\n\r\n" } ], "response": "SUCCESS" }

Get package keycode by public key id

Add Keycode to Package

Headers
  • ss-api-key Required / string
  • ss-request-timestamp Required / string
  • ss-request-signature Required / string
URL parameters
  • packageId Required / string
  • publicKeyId Required / string
Responses
  • 200 object
    • message string
    • response string
Definition
GET https://demo.sendsafely.com/api/v2.0/package/{packageId}/link/{publicKeyId}/
Example request
$ curl \ -X GET https://demo.sendsafely.com/api/v2.0/package/{packageId}/link/{publicKeyId}/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-timestamp: string" \ -H "ss-request-signature: string"
Example response (200)
{ "message": "-----BEGIN PGP PUBLIC KEY BLOCK----- -----END PGP PUBLIC KEY BLOCK-----\r\n\r\n", "response": "SUCCESS" }

Add Keycode by public key id

Add Keycode to Package

Headers
  • ss-api-key Required / string
  • ss-request-timestamp Required / string
  • ss-request-signature Required / string
URL parameters
  • packageId Required / string
  • publicKeyId Required / string
Responses
  • 200 object
    • response string
Definition
PUT https://demo.sendsafely.com/api/v2.0/package/{packageId}/link/{publicKeyId}/
Example request
$ curl \ -X PUT https://demo.sendsafely.com/api/v2.0/package/{packageId}/link/{publicKeyId}/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-timestamp: string" \ -H "ss-request-signature: string"
Example response (200)
{ "response": "SUCCESS" }

Get package recipient by id

Get package recipent by id

Headers
  • ss-api-key Required / string
  • ss-request-signature Required / string
  • ss-request-timestamp Required / string
URL parameters
  • packageId Required / string
  • recipientId Required / string
Responses
  • 200 object
    • approvalRequired boolean
    • checkForPublicKeys boolean
    • recipientId string
    • email string
    • phonenumbers array[object]
      • phonenumbers.countryCode integer
      • phonenumbers.phonenumber integer
      • phonenumbers.wasUsedMostRecently boolean
    • fullName string
    • smsAuth boolean
    • isPackageOwner boolean
    • roleName string
    • response string
Definition
GET https://demo.sendsafely.com/api/v2.0/package/{packageId}/recipient/{recipientId}/
Example request
$ curl \ -X GET https://demo.sendsafely.com/api/v2.0/package/{packageId}/recipient/{recipientId}/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-signature: string" \ -H "ss-request-timestamp: string"
Example response (200)
{ "approvalRequired": false, "checkForPublicKeys": true, "recipientId": "cd7ba10a-e02d-4c4e-8778-839f37aa6297", "email": "recip1@example.com", "phonenumbers": [ { "countryCode": 1, "phonenumber": 12345678, "wasUsedMostRecently": true } ], "fullName": "External User", "smsAuth": false, "isPackageOwner": false, "roleName": "VIEWER", "response": "SUCCESS" }

Update recipient

Update Recipent

Headers
  • ss-api-key Required / string
  • ss-request-signature Required / string
  • ss-request-timestamp Required / string
URL parameters
  • packageId Required / string
  • recipientId Required / string
Body
  • phoneNumber string

    (123) 456-7890

  • countrycode string

    US

  • role string

    VIEWER | CONTRIBUTOR | MANAGER | OWNER

Responses
  • 200 object
    • approvalRequired boolean
    • checkForPublicKeys boolean
    • recipientId string
    • email string
    • phonenumbers array[object]
      • phonenumbers.countryCode integer
      • phonenumbers.phonenumber integer
      • phonenumbers.wasUsedMostRecently boolean
    • fullName string
    • smsAuth boolean
    • isPackageOwner boolean
    • roleName string
    • response string
Definition
POST https://demo.sendsafely.com/api/v2.0/package/{packageId}/recipient/{recipientId}/
Example request
$ curl \ -X POST https://demo.sendsafely.com/api/v2.0/package/{packageId}/recipient/{recipientId}/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-signature: string" \ -H "ss-request-timestamp: string" \ -d '{"phoneNumber":"(123) 456-7890","countrycode":"US","role":"VIEWER | CONTRIBUTOR | MANAGER | OWNER"}'
Example response (200)
{ "approvalRequired": false, "checkForPublicKeys": true, "recipientId": "cd7ba10a-e02d-4c4e-8778-839f37aa6297", "email": "recip1@example.com", "phonenumbers": [ { "countryCode": 1, "phonenumber": 12345678, "wasUsedMostRecently": true } ], "fullName": "External User", "smsAuth": false, "isPackageOwner": false, "roleName": "VIEWER", "response": "SUCCESS" }

Delete package recipient by id

Delete package recipent by id

Headers
  • ss-api-key Required / string
  • ss-request-signature Required / string
  • ss-request-timestamp Required / string
URL parameters
  • packageId Required / string
  • recipientId Required / string
Responses
  • 200 object
    • response string
Definition
DELETE https://demo.sendsafely.com/api/v2.0/package/{packageId}/recipient/{recipientId}/
Example request
$ curl \ -X DELETE https://demo.sendsafely.com/api/v2.0/package/{packageId}/recipient/{recipientId}/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-signature: string" \ -H "ss-request-timestamp: string"
Example response (200)
{ "response": "SUCCESS" }

Get package directory file information

Get package directory file information

Headers
  • ss-api-key Required / string
  • ss-request-signature Required / string
  • ss-request-timestamp Required / string
URL parameters
  • packageId Required / string
  • directoryId Required / string
  • fileId Required / string
Responses
  • 200 object
    • file object
      • file.file object
        • file.file.fileId string
        • file.file.fileName string
        • file.file.fileSize string
        • file.file.createdByEmail string
        • file.file.uploaded string
        • file.file.uploadedStr string
        • file.file.oldVersions array[object]
          • file.file.oldVersions.fileId string
          • file.file.oldVersions.fileName string
          • file.file.oldVersions.fileSize string
          • file.file.oldVersions.createdByEmail string
          • file.file.oldVersions.uploaded string
          • file.file.oldVersions.uploadedStr string
          • file.file.oldVersions.fileParts integer
        • file.file.fileParts integer
    • response string
Definition
GET https://demo.sendsafely.com/api/v2.0/package/{packageId}/directory/{directoryId}/file/{fileId}
Example request
$ curl \ -X GET https://demo.sendsafely.com/api/v2.0/package/{packageId}/directory/{directoryId}/file/{fileId} \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-signature: string" \ -H "ss-request-timestamp: string"
Example response (200)
{ "file": { "file": { "fileId": "string", "fileName": "string", "fileSize": "string", "createdByEmail": "string", "uploaded": "Aug 22, 2019 6:27:02 PM", "uploadedStr": "Thu Aug 22 at 18:27 (EDT)", "oldVersions": [ { "fileId": "string", "fileName": "string", "fileSize": "string", "createdByEmail": "string", "uploaded": "Aug 22, 2019 6:27:02 PM", "uploadedStr": "Thu Aug 22 at 18:27 (EDT)", "fileParts": 1 } ], "fileParts": 1 } }, "response": "SUCCESS" }

Get directory information

Get directory information

Headers
  • ss-api-key Required / string
  • ss-request-signature Required / string
  • ss-request-timestamp Required / string
URL parameters
  • packageId Required / string
  • directoryId Required / string
Responses
  • 200 object
    • directoryName string
    • directoryId string
    • files array[object]
    • subDirectories array[object]
    • response string
Definition
GET https://demo.sendsafely.com/api/v2.0/package/{packageId}/directory/{directoryId}
Example request
$ curl \ -X GET https://demo.sendsafely.com/api/v2.0/package/{packageId}/directory/{directoryId} \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-signature: string" \ -H "ss-request-timestamp: string"
Example response (200)
{ "directoryName": "string", "directoryId": "string", "files": [ { } ], "subDirectories": [ { } ], "response": "SUCCESS" }

Rename workspace directory

Rename workspace directory

Headers
  • ss-api-key Required / string
  • ss-request-signature Required / string
  • ss-request-timestamp Required / string
URL parameters
  • packageId Required / string
  • directoryId Required / string
Body
  • directoryName string

    Workspace directory name

Responses
  • 200 object
    • response string
Definition
POST https://demo.sendsafely.com/api/v2.0/package/{packageId}/directory/{directoryId}
Example request
$ curl \ -X POST https://demo.sendsafely.com/api/v2.0/package/{packageId}/directory/{directoryId} \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-signature: string" \ -H "ss-request-timestamp: string" \ -d '{"directoryName":"test"}'
Example response (200)
{ "response": "SUCCESS" }

Get package activity log

Get package activity log

Headers
  • ss-api-key Required / string
  • ss-request-signature Required / string
  • ss-request-timestamp Required / string
URL parameters
  • packageId Required / string
Responses
  • 200 object
    • activityLogEntries array[object]
      • activityLogEntries.activityLogId string
      • activityLogEntries.timestamp string
      • activityLogEntries.timestampStr string
      • activityLogEntries.ipAddress string
      • activityLogEntries.packageId string
      • activityLogEntries.targetId string
      • activityLogEntries.actionDescription string
      • activityLogEntries.action string
      • activityLogEntries.user object
        • activityLogEntries.user.userEmail string
        • activityLogEntries.user.userId string
    • response string
Definition
POST https://demo.sendsafely.com/api/v2.0/package/{packageId}/activityLog/
Example request
$ curl \ -X POST https://demo.sendsafely.com/api/v2.0/package/{packageId}/activityLog/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-signature: string" \ -H "ss-request-timestamp: string"
Example response (200)
{ "activityLogEntries": [ { "activityLogId": "string", "timestamp": "Aug 22, 2019 6:27:02 PM", "timestampStr": "Aug 22, 2019 at 18:27", "ipAddress": "string", "packageId": "string", "targetId": "string", "actionDescription": "Added a new file test.txt", "action": "FILE_CREATED", "user": { "userEmail": "string", "userId": "string" } } ], "response": "SUCCESS" }

Download file

Download file

Headers
  • ss-api-key Required / string
  • ss-request-signature Required / string
  • ss-request-timestamp Required / string
URL parameters
  • packageId Required / string
  • fileId Required / string
Responses
  • default

    no response description was provided for this operation

Definition
POST https://demo.sendsafely.com/api/v2.0/package/{packageId}/file/{fileId}/download/
Example request
$ curl \ -X POST https://demo.sendsafely.com/api/v2.0/package/{packageId}/file/{fileId}/download/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-signature: string" \ -H "ss-request-timestamp: string"
Example response (default)
No content

Delete workspace file

Delete workspace file

Headers
  • ss-api-key Required / string
  • ss-request-signature Required / string
  • ss-request-timestamp Required / string
URL parameters
  • packageId Required / string
  • directoryId Required / string
  • fileId Required / string
Responses
  • 200 object
    • response string
Definition
DELETE https://demo.sendsafely.com/api/v2.0/package/{packageId}/directory/{directoryId}/file/{fileId}/
Example request
$ curl \ -X DELETE https://demo.sendsafely.com/api/v2.0/package/{packageId}/directory/{directoryId}/file/{fileId}/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-signature: string" \ -H "ss-request-timestamp: string"
Example response (200)
{ "response": "SUCCESS" }

Delete workspace directory

Delete workspace directory

Headers
  • ss-api-key Required / string
  • ss-request-signature Required / string
  • ss-request-timestamp Required / string
URL parameters
  • packageId Required / string
  • directoryId Required / string
Responses
  • 200 object
    • response string
Definition
DELETE https://demo.sendsafely.com/api/v2.0/package/{packageId}/directory/{directoryId}/
Example request
$ curl \ -X DELETE https://demo.sendsafely.com/api/v2.0/package/{packageId}/directory/{directoryId}/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-signature: string" \ -H "ss-request-timestamp: string"
Example response (200)
{ "response": "SUCCESS" }

Move workspace directory

Move workspace directory

Headers
  • ss-api-key Required / string
  • ss-request-signature Required / string
  • ss-request-timestamp Required / string
URL parameters
  • packageId Required / string
  • sourcedirectoryId Required / string
  • targetdirectoryId Required / string
Responses
  • 200 object
    • response string
Definition
POST https://demo.sendsafely.com/api/v2.0/package/{packageId}/move/{sourcedirectoryId}/{targetdirectoryId}/
Example request
$ curl \ -X POST https://demo.sendsafely.com/api/v2.0/package/{packageId}/move/{sourcedirectoryId}/{targetdirectoryId}/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-signature: string" \ -H "ss-request-timestamp: string"
Example response (200)
{ "response": "SUCCESS" }

Get organization packages

Returns packages in the current user's organization based on provided search criteria. The search defaults to returning all packages up to the current date and time, if a specific value is not passed for each search criteria. A maximum of 100 records will be returned per method call. The calling user must be a SendSafely Enterprise Administrator.

Headers
  • ss-api-key Required / string
  • ss-request-timestamp Required / string
  • ss-request-signature Required / string
Body
  • fromDate string

    01/01/2019

  • toDate string

    01/01/2019

  • filename string
  • sender string
  • recipient string
  • status string

    all | picked-up | incomplete | archived | active | expired

Responses
  • 200 object
    • packages array[object]
      • packages.packageId string
      • packages.packageCode string
      • packages.serverSecret string
      • packages.recipients array[object]
        • packages.recipients.recipientId string
        • packages.recipients.email string
        • packages.recipients.fullName string
        • packages.recipients.needsApproval boolean
        • packages.recipients.recipientCode string
        • packages.recipients.confirmations object
          • packages.recipients.confirmations.ipAddress string
          • packages.recipients.confirmations.timestamp string
          • packages.recipients.confirmations.timeStampStr string
          • packages.recipients.confirmations.isMessage boolean
        • packages.recipients.isPackageOwner boolean
        • packages.recipients.checkForPublicKeys boolean
        • packages.recipients.roleName string
      • packages.contactGroups array[object]
        • packages.contactGroups.id string
      • packages.files array[object]
        • packages.files.id string
      • packages.directories array[object]
        • packages.directories.id string
      • packages.approverList array[object]
        • packages.approverList. string
      • packages.needsApproval boolean
      • packages.state string
      • packages.passwordRequired boolean
      • packages.life integer
      • packages.isVDR boolean
      • packages.isArchived boolean
      • packages.packageSender string
      • packages.packageTimestamp string
      • packages.rootDirectoryId string
      • packages.response string
Definition
POST https://demo.sendsafely.com/api/v2.0/package/organization/
Example request
$ curl \ -X POST https://demo.sendsafely.com/api/v2.0/package/organization/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-timestamp: string" \ -H "ss-request-signature: string" \ -d '{"fromDate":"01/01/2019","toDate":"01/01/2019","filename":"string","sender":"test@sendsafely.com...}'
Example response (200)
{ "packages": [ { "packageId": "GVG2-MNZT", "packageCode": "M0AEMIrTQe9XWRgGDKiKta1pXobmpKwAVafWgXjnBsw", "serverSecret": "ACbuj9NKTkvjZ71Gc0t5zuU1xvba9XAouA", "recipients": [ { "recipientId": "5d504769-78c4-4c0a-b982-945845ea2075", "email": "recip1@example.com", "fullName": "External User", "needsApproval": false, "recipientCode": "YN0P1G0xbS9mBSwohP9xPJSqwgKXMq4bCI5uTcx1KKM", "confirmations": { "ipAddress": "127.0.0.1", "timestamp": "Dec 12, 2018 2:24:38 PM", "timeStampStr": "Dec 12, 2018 at 14:24", "isMessage": true }, "isPackageOwner": false, "checkForPublicKeys": false, "roleName": "VIEWER" } ], "contactGroups": [ { "id": "string" } ], "files": [ { "id": "string" } ], "directories": [ { "id": "string" } ], "approverList": [ { "": "string" } ], "needsApproval": false, "state": "PACKAGE_STATE_IN_PROGRESS", "passwordRequired": false, "life": 10, "isVDR": false, "isArchived": false, "packageSender": "user@companyabc.com", "packageTimestamp": "Feb 1, 2019 2:07:28 PM", "rootDirectoryId": "8c3c2184-e73e-4137-be92-e9c5b5661258", "response": "SUCCESS" } ] }

Create workspace subdirectory

Create workspace subdirectory

Headers
  • ss-api-key Required / string
  • ss-request-signature Required / string
  • ss-request-timestamp Required / string
  • content-type Required / string
URL parameters
  • packageId Required / string
  • directoryId Required / string
Body
  • directoryName string
Responses
  • 200 object
    • response string
Definition
PUT https://demo.sendsafely.com/api/v2.0/package/{packageId}/directory/{directoryId}/subdirectory/
Example request
$ curl \ -X PUT https://demo.sendsafely.com/api/v2.0/package/{packageId}/directory/{directoryId}/subdirectory/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-signature: string" \ -H "ss-request-timestamp: string" \ -H "content-type: string" \ -d '{"directoryName":"string"}'
Example response (200)
{ "response": "SUCCESS" }

Get package recipient public keys

Headers
  • ss-api-key Required / string
  • ss-request-signature Required / string
  • ss-request-timestamp Required / string
  • content-type Required / string
URL parameters
  • packageId Required / string
  • recipientId Required / string
Responses
  • 200 object
    • publicKeys array[object]
      • publicKeys.id string
      • publicKeys.key string
    • response string
Definition
GET https://demo.sendsafely.com/api/v2.0/package/{packageId}/{recipientId}/public-keys/
Example request
$ curl \ -X GET https://demo.sendsafely.com/api/v2.0/package/{packageId}/{recipientId}/public-keys/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-signature: string" \ -H "ss-request-timestamp: string" \ -H "content-type: string"
Example response (200)
{ "publicKeys": [ { "id": "string", "key": "-----BEGIN PGP PUBLIC KEY BLOCK----- -----END PGP PUBLIC KEY BLOCK-----\r\n\r\n" } ], "response": "SUCCESS" }

Add recipients to package

Headers
  • ss-api-key Required / string
  • ss-request-signature Required / string
  • ss-request-timestamp Required / string
  • content-type Required / string
URL parameters
  • packageId Required / string
Body
  • emails array[string]
Responses
  • 200 object
    • approvalRequired boolean
    • recipients array[object]
      • recipients.recipientId string
      • recipients.email string
      • recipients.fullName string
      • recipients.needsApproval boolean
      • recipients.recipientCode string
      • recipients.confirmations object
        • recipients.confirmations.ipAddress string
        • recipients.confirmations.timestamp string
        • recipients.confirmations.timeStampStr string
        • recipients.confirmations.isMessage boolean
      • recipients.isPackageOwner boolean
      • recipients.checkForPublicKeys boolean
      • recipients.roleName string
    • response string
Definition
PUT https://demo.sendsafely.com/api/v2.0/package/{packageId}/recipients/
Example request
$ curl \ -X PUT https://demo.sendsafely.com/api/v2.0/package/{packageId}/recipients/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-signature: string" \ -H "ss-request-timestamp: string" \ -H "content-type: string" \ -d '{"emails":["string"]}'
Example response (200)
{ "approvalRequired": false, "recipients": [ { "recipientId": "5d504769-78c4-4c0a-b982-945845ea2075", "email": "recip1@example.com", "fullName": "External User", "needsApproval": false, "recipientCode": "YN0P1G0xbS9mBSwohP9xPJSqwgKXMq4bCI5uTcx1KKM", "confirmations": { "ipAddress": "127.0.0.1", "timestamp": "Dec 12, 2018 2:24:38 PM", "timeStampStr": "Dec 12, 2018 at 14:24", "isMessage": true }, "isPackageOwner": false, "checkForPublicKeys": false, "roleName": "VIEWER" } ], "response": "SUCCESS" }

User

Get, modify user

Get user information

Get user information

Headers
  • ss-api-key Required / string
  • ss-request-signature Required / string
  • ss-request-timestamp Required / string
Responses
  • 200 object
    • id string
    • email string
    • clientKey string
    • firstName string
    • lastName string
    • betaUser boolean
    • adminUser boolean
    • publicKey boolean
    • packageLife integer
    • response string
Definition
GET https://demo.sendsafely.com/api/v2.0/user/
Example request
$ curl \ -X GET https://demo.sendsafely.com/api/v2.0/user/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-signature: string" \ -H "ss-request-timestamp: string"
Example response (200)
{ "id": "string", "email": "string", "clientKey": "string", "firstName": "string", "lastName": "string", "betaUser": false, "adminUser": true, "publicKey": false, "packageLife": 10, "response": "SUCCESS" }

Contact group

Create/delete contact group, add/delete contact group user

Create contact group

Create contact group

Headers
  • ss-api-key Required / string
  • ss-request-signature Required / string
  • ss-request-timestamp Required / string
Body
  • groupName string
  • isEnterpriseGroup boolean
Responses
  • 200 object
    • contactGroupId string
    • contactGroupName string
    • contactGroupUserEmails array[string]
    • response string
Definition
PUT https://demo.sendsafely.com/api/v2.0/group/
Example request
$ curl \ -X PUT https://demo.sendsafely.com/api/v2.0/group/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-signature: string" \ -H "ss-request-timestamp: string" \ -d '{"groupName":"string","isEnterpriseGroup":false}'
Example response (200)
{ "contactGroupId": "string", "contactGroupName": "string", "contactGroupUserEmails": [ "string" ], "response": "SUCCESS" }

Add contact group user

Headers
  • ss-api-key Required / string
  • ss-request-signature Required / string
  • ss-request-timestamp Required / string
URL parameters
  • groupId Required / string
Body
  • userEmail string
Responses
  • 200 object
    • userId string
    • userEmail string
    • response string
Definition
PUT https://demo.sendsafely.com/api/v2.0/group/{groupId}/user/
Example request
$ curl \ -X PUT https://demo.sendsafely.com/api/v2.0/group/{groupId}/user/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-signature: string" \ -H "ss-request-timestamp: string" \ -d '{"userEmail":"string"}'
Example response (200)
{ "userId": "string", "userEmail": "string", "response": "SUCCESS" }

Delete contact group user

Delete contact group user

Headers
  • ss-api-key Required / string
  • ss-request-signature Required / string
  • ss-request-timestamp Required / string
URL parameters
  • groupId Required / string
  • userId Required / string
Responses
  • 200 object
    • response string
Definition
DELETE https://demo.sendsafely.com/api/v2.0/group/{groupId}/{userId}/
Example request
$ curl \ -X DELETE https://demo.sendsafely.com/api/v2.0/group/{groupId}/{userId}/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-signature: string" \ -H "ss-request-timestamp: string"
Example response (200)
{ "response": "SUCCESS" }

Delete contact group

Delete contact group

Headers
  • ss-api-key Required / string
  • ss-request-signature Required / string
  • ss-request-timestamp Required / string
URL parameters
  • groupId Required / string
Responses
  • 200 object
    • response string
    • message string
Definition
DELETE https://demo.sendsafely.com/api/v2.0/group/{groupId}/
Example request
$ curl \ -X DELETE https://demo.sendsafely.com/api/v2.0/group/{groupId}/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-signature: string" \ -H "ss-request-timestamp: string"
Example response (200)
{ "response": "SUCCESS", "message": "Contact Group has been deleted" }

Key management

Sync keycodes, add/get/delete public key

Sync keycodes by public key id

Sync keycodes by public key id

Headers
  • ss-api-key Required / string
  • ss-request-signature Required / string
  • ss-request-timestamp Required / string
  • content-type Required / string
URL parameters
  • publicKeyId Required / string
Responses
  • 200 object
    • keycodes array[string]
    • publicKeys array[object]
      • publicKeys.id string
      • publicKeys.key string
    • response string
Definition
GET https://demo.sendsafely.com/api/v2.0/sync/{publicKeyId}/
Example request
$ curl \ -X GET https://demo.sendsafely.com/api/v2.0/sync/{publicKeyId}/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-signature: string" \ -H "ss-request-timestamp: string" \ -H "content-type: string"
Example response (200)
{ "keycodes": [ "string" ], "publicKeys": [ { "id": "string", "key": "-----BEGIN PGP PUBLIC KEY BLOCK----- -----END PGP PUBLIC KEY BLOCK-----\r\n\r\n" } ], "response": "SUCCESS" }

Add public key

Add public key

Headers
  • ss-api-key Required / string
  • ss-request-signature Required / string
  • ss-request-timestamp Required / string
  • content-type Required / string
Body
  • publicKey string
  • description string
Responses
  • 200 object
    • id string
    • description string
    • dateStr string
    • response string
Definition
PUT https://demo.sendsafely.com/api/v2.0/public-key/
Example request
$ curl \ -X PUT https://demo.sendsafely.com/api/v2.0/public-key/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-signature: string" \ -H "ss-request-timestamp: string" \ -H "content-type: string" \ -d '{"publicKey":"string","description":"string"}'
Example response (200)
{ "id": "string", "description": "string", "dateStr": "18:27 on Aug 22, 2019", "response": "SUCCESS" }

Get public key by id

Get public key by id

Headers
  • ss-api-key Required / string
  • ss-request-signature Required / string
  • ss-request-timestamp Required / string
  • content-type Required / string
URL parameters
  • publicKeyId Required / string
Responses
  • 200 object
    • id string
    • publicKey string
    • response string
Definition
GET https://demo.sendsafely.com/api/v2.0/public-key/{publicKeyId}/
Example request
$ curl \ -X GET https://demo.sendsafely.com/api/v2.0/public-key/{publicKeyId}/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-signature: string" \ -H "ss-request-timestamp: string" \ -H "content-type: string"
Example response (200)
{ "id": "string", "publicKey": "string", "response": "SUCCESS" }

Delete public key

Delete public key

Headers
  • ss-api-key Required / string
  • ss-request-signature Required / string
  • ss-request-timestamp Required / string
  • content-type Required / string
URL parameters
  • publicKeyId Required / string
Responses
  • 200 object
    • response string
Definition
DELETE https://demo.sendsafely.com/api/v2.0/public-key/{publicKeyId}/
Example request
$ curl \ -X DELETE https://demo.sendsafely.com/api/v2.0/public-key/{publicKeyId}/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-signature: string" \ -H "ss-request-timestamp: string" \ -H "content-type: string"
Example response (200)
{ "response": "SUCCESS" }

Dropzone management

add/get/delete dropzone recipients and update dropzone configurations

Get dropzone recipients

Get dropzone recipients

Headers
  • ss-api-key Required / string
  • ss-request-signature Required / string
  • ss-request-timestamp Required / string
  • content-type Required / string
Responses
  • 200 object
    • recipientEmailAddresses array[string]
    • response string
Definition
GET https://demo.sendsafely.com/api/v2.0/user/dropzone-recipients/
Example request
$ curl \ -X GET https://demo.sendsafely.com/api/v2.0/user/dropzone-recipients/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-signature: string" \ -H "ss-request-timestamp: string" \ -H "content-type: string"
Example response (200)
{ "recipientEmailAddresses": [ "string" ], "response": "SUCCESS" }

Add dropzone recipients

Add dropzone recipients

Headers
  • ss-api-key Required / string
  • ss-request-signature Required / string
  • ss-request-timestamp Required / string
  • content-type Required / string
Body
  • emails array[string]
Responses
  • 200 object
    • response string
    • message object
      • message.success string
      • message.successEmails array[string]
      • message.warnEmails array[string]
      • message.failEmails array[string]
Definition
PUT https://demo.sendsafely.com/api/v2.0/user/dropzone-recipients/
Example request
$ curl \ -X PUT https://demo.sendsafely.com/api/v2.0/user/dropzone-recipients/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-signature: string" \ -H "ss-request-timestamp: string" \ -H "content-type: string" \ -d '{"emails":["string"]}'
Example response (200)
{ "response": "SUCCESS", "message": { "success": "Your list has been updated. It may take up to 30 minutes for all active items to be updated.", "successEmails": [ "string" ], "warnEmails": [ "string" ], "failEmails": [ "string" ] } }

Delete dropzone recipient

Delete dropzone recipient

Headers
  • ss-api-key Required / string
  • ss-request-signature Required / string
  • ss-request-timestamp Required / string
  • content-type Required / string
Responses
  • 200 object
    • response string
    • message string
Definition
DELETE https://demo.sendsafely.com/api/v2.0/user/dropzone-recipients/
Example request
$ curl \ -X DELETE https://demo.sendsafely.com/api/v2.0/user/dropzone-recipients/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-signature: string" \ -H "ss-request-timestamp: string" \ -H "content-type: string"
Example response (200)
{ "response": "SUCCESS", "message": "Recipient Removed" }

Update dropzone config

Update dropzone config

Headers
  • ss-api-key Required / string
  • ss-request-signature Required / string
  • ss-request-timestamp Required / string
  • content-type Required / string
URL parameters
  • userId Required / string
Body
  • dropzoneTextLabel string
  • dropzoneNotificationType integer

    0 for Do not notify recipients, 1 for notify via email with trusted browser, 2 for notify via email with untrusted browser

  • dropzonePostUrl string
  • dropzoneEnableMessage boolean

    true to enable secure message

  • dropzoneRequireAuthentication boolean

    true to request users to verify email address

Responses
  • 200 object
    • dropzoneRecipients array[string]
    • dropzoneLife integer
    • dropzoneExternalPostUrl string
    • dropzoneTextLabel string
    • dropzoneEnableSecureMessage boolean
    • dropzoneRequireAuthentication boolean
    • dropzoneNotificationType integer
    • dropzoneUrl string
    • publicKey string
    • publicSecret string
    • isDropzoneEnabled boolean
    • response string
    • message string
Definition
POST https://demo.sendsafely.com/api/v2.0/user/{userId}/dropzone/config/
Example request
$ curl \ -X POST https://demo.sendsafely.com/api/v2.0/user/{userId}/dropzone/config/ \ -H "Content-Type: application/json" \ -H "ss-api-key: string" \ -H "ss-request-signature: string" \ -H "ss-request-timestamp: string" \ -H "content-type: string" \ -d '{"dropzoneTextLabel":"string","dropzoneNotificationType":0,"dropzonePostUrl":"https://test.com",...}'
Example response (200)
{ "dropzoneRecipients": [ "string" ], "dropzoneLife": 5, "dropzoneExternalPostUrl": "string", "dropzoneTextLabel": "string", "dropzoneEnableSecureMessage": false, "dropzoneRequireAuthentication": true, "dropzoneNotificationType": 0, "dropzoneUrl": "string", "publicKey": "string", "publicSecret": "string", "isDropzoneEnabled": true, "response": "string", "message": "Dropzone setting successfully updated" }