Build Status


Ruby Gem to consume Adobe's EchoSign e-signature service - REST service v5


gem install echosign


The bulk of the API is on the Echosign::Client class

You can read Echosign's full API Documentation

It wouldn't hurt to read Adobe's Echosign API documentation


Initializing a client with an existing refresh token

require 'echosign'

credentials =, app_secret)
access_token = credentials.refresh_access_token(refresh_token)

client =

Initializing a client with an authorization code

Workflow before authorizing:

  • redirect_uri must be set in the EchoSign API configuration
  • scope will typically be something like 'agreement_write:account agreement_send:account'
require 'echosign'

credentials =, app_secret)
redirect_to credentials.authorize_url(redirect_uri, scope)

Workflow after authorizing:

require 'echosign'

credentials =, app_secret)
token = credentials.get_token(params[:code], redirect_uri)

# you should persist credentials.refresh_token somewhere to use in future

client =

Initializing a client with a legacy integration key

require 'echosign'

client =

Setting up a new agreement from a URL

url_file_params = {
      url:      '',
      mimeType: 'application/pdf',
      name:     'contract.pdf'

file_info_params = {

recipient_params = {
     role: 'SIGNER', email: '[email protected]'

agreement_info = {
     fileInfos:       [ ],
     recipientSetInfos: [],
     signatureFlow:   "SENDER_SIGNS_LAST",
     signatureType:   "ESIGN",
     name:            "Rumplestiltskin Contract"

agreement =, sender_email, agreement_info) 

agreement_id = client.create_agreement(agreement)

Cancelling a pending agreement

result = client.cancel_agreement(agreement_id, true, 'Because...blah blah.')

Creating a user

user_params = {
      firstName:  'JohnQ',
      lastName:   'Public',
      email:      '[email protected]',
      password:   'kN12oK9p!3',
      title:      'Hedge Wizard'

user =

user_id = client.create_user(user)

Sending a transient document for later referral

tran_doc_id = client.create_transient_document(file_name, mime_type,'myfile.pdf'))