Upload a PDF and send to signers

PDF can include text tags and extra fields defined via the API.

Overview

If every PDF you send is unique and requires signers to sign in different locations. Or you need to place text fields in different locations. You can modify the content and add text tags into your document.

Text tags are simple text fields in your document that follow the format:

[tag_type(?)|signer_key|default value|options]

Quick Start Guide
Download the quick start guide v1.5 with examples on how you can add text tags into your document. We then convert these tags into signing and input fields.
Latest update checkbox grouping – supports only one checkbox being active. Example video
Sending a document requiring a witness
Download nda witness.pdf with an example of a signer that must be witnessed.
If your signer needs to be witnessed, you will also need to place witness fields on your document for this signer. The witness fields must have a unique "key". eg witness1.
Your signer payload will now require the "witness_key" to indicate which field is the witness field for this signer.
{
  "key": "signer1",
  "name": "John Ballinger",
  "email": "john@example.com",
  "reminder_days": 1,
  "witness_key": "witness1"
}
End Point
https://goodsign.io/api/uploadpdf
Upload + Send PDF
Upload PDF with a Payload variable
  curl --header 'authorization: Bearer YOUR_API_TOKEN' \
 -F 'file=@./your_file_with_tags.pdf' \
 -F 'xref=[input?|signer1|xref example]' \
 -F 'payload={"doc_name":"your_doc_name.pdf","metadata":["any valid json works"],"webhook":"","cc_email":"","smsverify(optional)":"boolean true or false","send_in_order(optional)":"boolean true or false","duplicate(optional)":"boolean default true for manually created template, false for PDFs loaded via api","email_subject(optional)":"{fullname} has requested your signature on {docname}","email_message(optional)":"extra message to include, not required","ignore_missing_signers(optional)":false,"signers":[{"key":"signer1","name":"Jane_Smith","email":"jane@example.com","reminder_days":1}]}' \
  https://goodsign.io/api/uploadpdf
          

Payload Details

Detailed View of the "payload" variable (from above) no 'extrafields'

{
    "doc_name": "your_doc_name.pdf",
    "metadata": [
        "any valid json works"
    ],
    "webhook": "",
    "cc_email": "",
    "smsverify(optional)": "boolean true or false",
    "send_in_order(optional)": "boolean true or false",
    "duplicate(optional)": "boolean default true for manually created template, false for PDFs loaded via api",
    "email_subject(optional)": "{fullname} has requested your signature on {docname}",
    "email_message(optional)": "extra message to include, not required",
    "ignore_missing_signers(optional)": false,
    "signers": [
        {
            "key": "signer1",
            "name": "Jane_Smith",
            "email": "jane@example.com",
            "reminder_days": 1
        }
    ]
}

Payload With Extra Fields

How to add 'extrafields' onto your PDF via the API, can be used with document tags as well.

{
    "doc_name": "your_doc_name.pdf",
    "metadata": [
        "any valid json works"
    ],
    "webhook": "",
    "cc_email": "",
    "smsverify(optional)": "boolean true or false",
    "send_in_order(optional)": "boolean true or false",
    "duplicate(optional)": "boolean default true for manually created template, false for PDFs loaded via api",
    "email_subject(optional)": "{fullname} has requested your signature on {docname}",
    "email_message(optional)": "extra message to include, not required",
    "ignore_missing_signers(optional)": false,
    "signers": [
        {
            "key": "signer1",
            "name": "Jane_Smith",
            "email": "jane@example.com",
            "reminder_days": 1
        }
    ],
    "extrafields": [
        {
            "key": "signer1",
            "type": "input",
            "opt": "?",
            "value": "Value set via API",
            "style": "color:red",
            "left": "10",
            "top": "10",
            "width": "110",
            "height": "11",
            "page": 1
        },
        {
            "key": "signer1",
            "type": "c1",
            "opt": "",
            "value": "",
            "left": "10",
            "top": "40",
            "width": "110",
            "height": "11",
            "page": 1
        },
        {
            "key": "signer1",
            "type": "c1",
            "opt": "?",
            "value": "",
            "left": "10",
            "top": "60",
            "width": "110",
            "height": "11",
            "page": 1
        },
        {
            "key": "signer1",
            "type": "signxl",
            "left": "10",
            "top": "100",
            "width": "110",
            "height": "11",
            "page": 1
        },
        {
            "key": "signer1",
            "type": "sign",
            "left": "10",
            "top": "150",
            "width": "210",
            "height": "20",
            "page": 1
        },
        {
            "key": "Signer1",
            "type": "date",
            "left": "10",
            "top": "200",
            "width": "210",
            "height": "20",
            "page": 1
        },
        {
            "key": "Signer1",
            "type": "email",
            "left": "10",
            "top": "240",
            "width": "110",
            "height": "11",
            "page": 1
        }
    ]
}

Successful Response

A fully working "send_payload" is returned and can be used for
the method Send Templates

{
    "success": true,
    "doc": {
        "uuid": "4b5238bd-eae7-4d5f-be14-f30076d4a50d",
        "name": "goodsign_guide_v5.pdf",
        "status": "sent",
        "webhook": ""
    },
    "warnings": "",
    "credit": 907
}

Payload With Witness

How to add 'witness' onto your PDF via the API, can be used with document tags as well.

{
    "doc_name": "your_doc_name.pdf",
    "metadata": [
        "any valid json works"
    ],
    "webhook": "",
    "cc_email": "",
    "smsverify(optional)": "boolean true or false",
    "send_in_order(optional)": "boolean true or false",
    "duplicate(optional)": "boolean default true for manually created template, false for PDFs loaded via api",
    "email_subject(optional)": "{fullname} has requested your signature on {docname}",
    "email_message(optional)": "extra message to include, not required",
    "ignore_missing_signers(optional)": false,
    "signers": [
        {
            "key": "signer1",
            "name": "Jane_Smith",
            "email": "jane@example.com",
            "reminder_days": 1,
            "witness_key": "eg witness1 or witness field from pdf"
        }
    ]
}

Successful Response

A fully working "send_payload" is returned and can be used for
the method Send Templates

Successful Response - Bad Tags Found

PDF tags were broken/badly formatted

urx = upper right x, ury = upper right y

{
    "success": true,
    "msg": "Master document has been created",
    "uuid": "2d4e37d9-d1b1-42cb-a1d2-97deff874717",
    "badtags": {
        "15": {
            "text": " ]",
            "valid": false,
            "loc": {
                "urx": 418.26,
                "ury": 379.37
            }
        },
        "16": {
            "text": " ]",
            "valid": false,
            "loc": {
                "urx": 418.01,
                "ury": 400.34
            }
        }
    }
}