Setup with a Guest signer object (In-Person signing)

Signing with a Guest signer, or In-Person signing - having the documents signed within your website or app using one Guest Signer account.

Every signing session in this scenario is set up using the same user ID. It’s usually configured for situations when a quick signature is required and the Signer’s identity can be verified on-site.

Remember that you don’t get any online identity verification for the signer with this method of embedded signing. If you’d like a digital record that contains a unique user ID and email, try configuration from the next article.

Steps

  1. One-time setup

1.1. Create a Sender account
1.2. Get an access token for the Sender

You can use your own token and account credentials as Sender’s.

1.3. Create a Signer account for the “Guest Signer”
1.4. Get an access token for the Signer
1.5. Turn off reusable signatures for the “Guest Signer”

  1. Setup for every document you’d like to embed

2.1. Create a document as Sender (3 methods)
2.2. Create the invite to sign that document
2.3. Generate restricted scope access token for a signing link
2.4. Generate the signing link to the document

▶ Create a Sender account (1.1)

The Sender’s email address and password are used as sender_email and sender_password values below.

You can use your own account credentials as Sender account or create a separate user.

▶ Get an access token for the Sender (1.2)

Use your own bearer token as Sender’s access token, or generate a new access token if you created a new user for the Sender.

Use the Sender’s token as sender_access_token value in the next steps.

Create a Signer account. (1.3)

Only one Signer account is needed and it will be re-used for every signing event. Keep this email address and password, you’ll use it as signer_email and signer_password values below.

curl -X POST \
  https://api-eval.signnow.com/user \
  -H 'Authorization: Basic {{basic_authorization_token}}' \
  -H 'content-type: application/json' \
  -d '{
      "first_name":"Guest"
      "last_name":"Signer"
      "email":"{{signer_email}}"
      "password":"{{signer_password}}"
      }'

▶ Get an access token for the Signer (1.4)

Use Signer’s token as signer_access_token in the next steps.

curl -X POST \
  https://api-eval.signnow.com/oauth2/token \
  -H 'Authorization: Basic {{basic_authorization_token}}' \
  -H 'Content-Type: multipart/form-data;' \
  -F 'username={{signer_email}}' \
  -F 'password={{signer_password}}' \
  -F 'grant_type=password' \
  -F 'scope=*'

▶ Turn off reusable signatures for the “Guest Signer” (1.5)

curl -X PUT \
  https://api-eval.signnow.com/user/setting/no_user_signature_return \
  -H 'Authorization: Bearer {{signer_access_token}}' \
  -data '{"active":1}' 

▶ Create a document as Sender (2.1)

Method 1: Use a template that has been previously created in your account.

Generate a document from a template with one role.

curl -X POST \
  https://api-eval.signnow.com/template/{{sender_template_id}}/copy \
  -H 'Authorization: Bearer {{sender_access_token}}' \
  -H 'Content-Type: application/json' \
  -d '{"document_name":"doc_from_template"}'

Method 2: Upload a document with text tags on it.

curl -X POST \
  https://api-eval.signnow.com/document/fieldextract \
  -H 'Authorization: Bearer {{sender_access_token}}' \
  -H 'Content-Type: multipart/form-data' \
  -F 'file=@/path/to /your/file/pdf-test.pdf' \
  -F 'Tags=[
  {
    "tag_name": "email",
    "role": "Signer 1",
    "label": "email",
    "required": true,
    "type": "text",
    "prefilled_text": "test@example.com",
    "validator_id": "7cd795fd64ce63b670b52b2e83457d59ac796a39",
    "height": 15,
    "width": 100
  },
  {
    "tag_name": "name",
    "role": "Signer 1",
    "label": "name",
    "required": true,
    "type": "text",
    "height": 15,
    "width": 100
  }
]'

Method 3: Upload a plain document and then add fields to it using the API.

Upload document
curl -X POST \
  https://api-eval.signnow.com/document \
  -H 'Authorization: Bearer {{sender_access_token}}' \
  -H 'content-type: multipart/form-data' \
  -F 'file=@/path/to/your/document/pdf-test.pdf'
Add fields
curl -X PUT \
  https://api-eval.signnow.com/document/{{document_id}} \
  -H 'Authorization: Bearer {{sender_access_token}}' \
  -H 'Content-Type: application/json' \
  -d '{
  "fields": [
    {
      "x": 305,
      "y": 18,
      "width": 122,
      "height": 10,
      "page_number": 0,
      "label": "first_name",
      "role": "Signer 1",
      "required": true,
      "type": "text",
      "prefilled_text": "John"
    },
    {
      "x": 305,
      "y": 38,
      "width": 122,
      "height": 10,
      "page_number": 0,
      "label": "last_name",
      "role": "Signer 1",
      "required": true,
      "type": "text",
      "prefilled_text": "Doe"
    },
    {
      "x": 305,
      "y": 67,
      "width": 100,
      "height": 34,
      "page_number": 0,
      "label": "a sample label",
      "role": "Signer 1",
      "required": true,
      "type": "signature"
    }
  ]
}'

Create the invite to sign that document (2.2)

Make a POST /document/{{document_id}}/invite?email=disable call, with email=disable to prevent the delivery of an email invite:

curl -X POST \
  https://api-eval.signnow.com/document/{{document_id}}/invite?email=disable \
  -H 'Authorization: Bearer {{sender_access_token}}' \
  -d '{
  "to": [
    {
      "email": "{{signer_email}}",
      "role": "Signer 1",
      "order": 1,
      "role_id": ""
    }
  ],
  "from": "{{sender_email}}",
  "cc": [],
  "subject": "You received a signature request",
  "message": "Please, fill in and sign the attached document"
}'

▶ Generate restricted scope access token for a signing link (2.3)

Get an access_token with a scope specific to that document by making a POST /oauth2/token request for signer.

This returns signer_limited_scope_token.

curl -X POST \
  https://api-eval.signnow.com/oauth2/token \
  -H 'Authorization: Basic {{basic_authorization_token}}' \
  -H 'content-type: multipart/form-data;' \
  -F 'username={{signer_email}}' \
  -F 'password={{signer_password}}' \
  -F 'grant_type=password' \
  -F 'scope=signer_limited_scope_token document/{{document_id}}'

Generate the signing link to the document (2.4)

The base URL for the link is: https://eval.signnow.com/dispatch?route=assign

The link requires the query parameters document_id and access_token.

https://eval.signnow.com/dispatch?route=fieldinvite&document_id={{DOCUMENT_ID}}&access_token={{signer_limited_scope_token}}

The signing link accepts optional query parameters:

  • redirect_uri: displays a ‘Thank you’ message after the document was signed
  • theme: displays neutral light-gray standard SignNow theme for the document signing session
  • disable_email: prevents sending the signed copy via email

Example query string: redirect_uri=%2Fdocument-saved-successfully&theme=neutral&disable_email=true

The full link will then be:

https://eval.signnow.com/dispatch?route=fieldinvite&document_id={{document_id}}&access_token={{signer_limited_scope_token}}&redirect_uri=%2Fdocument-saved-successfully&theme=neutral&disable_email=true

Alternative Signing Link

This signing link automatically provides a mobile app signing link for iOS and Android device users:

https://eval.signnow.com/app/session/{{document_id}}?access_token={{signer_restricted_token}}

Optional Parameters: redirect_uri=%2Fdocument-saved-successfully

If a user is signing from a mobile device, add mobileweb=mobileweb_only query parameter to direct the user to the mobile web. If a user is on a desktop system, they are automatically directed to desktop signing.

To allow users to sign using the mobile web signature panel, add &use_signature_panel=1.

https://eval.signnow.com/app/session/d9a500741e0ffd412d3b06e35dec4d14d7fa40b2?access_token=fec20321cc3f2a69b052bc475d1824df898322cac51062b3528e8ddeb971dc4b&mobileweb=mobileweb_only&use_signature_panel=1