Create Document Section

With this endpoint, you can add a new section to an existing PandaDoc document (create a bundle).

You can upload a section to the document using a PandaDoc template or a file by URL.

Document Section creation is a non-blocking (asynchronous) operation

The document creation process may take some time.

With a successful request, you receive a response with the created upload ID and status document_sections_upload.uploaded. After processing completes on our servers, usually a few seconds, the document moves to the document_sections_upload.PROCESSED status.

Using a PandaDoc template

Current Version Limitations

Images in sections are currently not supported.

Pricing tables note

Each pricing table must have a unique name to populate it with data correctly.

A PandaDoc template is a document template created and edited in the PandaDoc web application. Our help center has further information on PandaDoc templates.

If you don't have any PandaDoc Template yet, you can easily create one by clicking Copy a Sample PandaDoc template. This will open the PandaDoc application in a new tab, copy the sample template into your account, and create a new document from the template.

Using a File by URL

Using this endpoint you can add a section to the existing document. The section is created from a file you upload. The file can be a PDF, DocX, or RTF.

We've prepared two samples that you can use to test the request.

Download them here:

Limitations

  • This method does not support multiple documents.
  • The maximum supported file size is 50 MB. API returns "413 Request entity too large" in case of bigger files.
  • PandaDoc does not support creating document from a PDF with encrypted files (to check whether a file is encrypted or not, try Get info -> Secure: Password Encrypted).

PDF Form Fields

PandaDoc recognizes PDF form fields. To enable this feature, pass the optional parse_form_fields value as true when making a create document section API call. We support Text fields, Dropdowns, and Signature fields.

If you would like to pass additional parameters to configure PDF form fields, use the PDF field name as an optId. You can use a PDF editor such as Adobe Acrobat, Foxit to get and edit field names in your PDF.

Download a Sample PDF with Form Fields

PDF/DocX/RTF Field Tags

This parsing format allows a word processor such as Microsoft Word or Google Docs to prepare a document and save it in PDF, DocX or RTF format.

Within the text, PandaDoc parses field tags. A field tag starts and ends with brackets. The field tag includes basic information on how to create a form field in the PandaDoc document. The request JSON object optId can also extend this information for even greater control.

Here is an example of how the field tag in a PDF/DocX/RTF is converted to a text field in the PandaDoc document:

Download a Sample PDF with Field Tags

PDF Field Tag Key

NumberKeyDescriptionExample
1fieldTypeField type from the table documented belowsignature, or s for shorthand
2*Optional * denotes the field is not required*
3roleRole name. Associate the field tag with a recipient role. Roles must be assigned to recipients in the request body. In this case we are using role s1 to keep the length short and denote the concept of "signer 1". s1 would be the value passed as role in a recipient JSON object.s1
4optIdOptional field Id. Specify more information about the field tag within the post request by using this id.sigBox17
5_____Use underscores to widen the field if desired. The form fields in PandaDoc will scale to the length and size of your field tag._____

Role names restrictions

Underscores are not supported in role names for a file with a Field Tag.

PDF/DocX/RTF Field Tag Supported Types

Field TypeShort NotationIs PandaDoc Field
textfieldtField
checkboxcField
signaturesField
datedField
initialsiField
dropdownddField
"fields": {  
  "textfield": {  
      "value": "Jane",
      "role": "user"
  },
  "dropdown": {
      "value": "opt1",
      "role": "user",
      "options":[
        "opt1",
        "opt2",
        "opt3"
      ]
  },
  "checkbox": {  
      "value": true,
      "role": "user"
  },
  "date":{
      "value": "2022-05-20",
      "role": "user"
  },
  "signature": {  
      "value": "",
      "role": "user"
  }
}

Fields in PandaDoc

The following article explains how to use Fields: Everything you need to know about Fields

Signing order

Set a signing order for document section sections created from a file.

"recipients": [  
  {  
    "email": "[email protected]",
    "first_name": "Josh",
    "last_name": "Ron",
    "role": "user",
    "signing_order": 1
  }
]

Signing order in PandaDoc

The following article explains how to use signing order: How to use signing order

Error handling

Error descriptionTypeRoot cause
Document version 1 is not supported.Validation errors: Form fieldsThe creation document section is supported only for document version 2
PDF content hasn't been processed: document is broken or lockedProcessing errors: Failed to process document contentDocument converter service can’t process PDF. This may be caused by locked PDF or if it’s broken.
Error occurred while parsing PDF field tags. Please try PDF flattening or reach out to supportProcessing errors: Field tag / Form field validation errorDoc converter managed to parse PDF and extract tags, but at least 1 of them is invalid (having negative position, for example). Usually we recommend PDF flattening and it helps
No role='{role}' for field tag specified in recipients found, roles passed were {roles}Validation errors: Field tagsRole is invalid. When the role specified in field tag is empty or wasn’t provided in a payload for any recipient
All field tags within PDF must be declared within fields  object of the JSON Payload. No field with optId='{optid}' found in fields object, fields passed were {optids}Validation errors: Field tagsLabel is invalid. Occurs when optId specified in field tag is empty or no field with name = optId was provided in a payload
One of field tags in PDF with type='{field}' doesn't have a roleValidation errors: Field tagsField tag in PDF has no role. One of field tags in PDF with type=% doesn't have a role.
Role for form field with name='{role}' is not provided in payloadValidation errors: Form fieldsRole for form field with ‘name’ is not provided. Occurs when role for form field with name=%s  is not provided in payload
Field for form field with name='{name}' is not specified in payload, available names are {names}Validation errors: Form fieldsField ‘name’ is not specified in payload. Occurs when no field with name = form field name was provided in a payload
No role='{role}' for form field specified in 'recipients' found, roles passed were {roles}"Validation errors: Form fieldsFailed to resolve field actor for role in form field with ‘name’.   Occurs when role from the form field is not found in recipient’s from payload
Failed to download file from link {url}.Source errorsError on attempt to download file.  An error has occurred on an attempt to download file using the provided ‘url’ in payload
Failed to download file from link {url} (status code: {status code})Source errorsError with HTTP status code on attempt to download file.  An error has occurred on an attempt to download file using the provided ‘url’ in payload - remote server responded with the HTTP status code
Content type='{type}' is not supported, available types are {types}Source errorsContent type is not supported.  Content type should be one of the following: PDF, ZIP, doc, docx, RTF
The maximum file size is exceeded, limit is {limit} MBSource errorsThe file size has exceeded the allowed limits. An error occurred while trying to download a file that is too large (limit is 50M)
Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Path Params
string
required

Document ID

Query Params
string
enum

Determines how the fields are mapped when creating a section.

  • document: Default value. The fields of the entire document are updated.
  • upload: Only the fields from the created section are updated. The merge field is appended with the upload ID.
Allowed:
Body Params
string
required

The ID of a template you want to use. You can copy it from an in app template url such as https://app.pandadoc.com/a/#/templates/{ID}/content. A template ID is also obtained by listing templates.

pricing_tables
array of objects

Information to construct or populate a pricing table can be passed when creating a document. All product information must be passed when creating a new document. Products stored in PandaDoc cannot be used to populate table rows at this time. Keep in mind that this is an array, so multiple table objects can be passed to a document. Make sure that "Automatically add products to this table" is enabled in the PandaDoc template pricing tables you wish to populate via API. Each pricing table must have a unique name to populate it with data correctly.

pricing_tables
content_placeholders
array of objects

You may replace Content Library Item Placeholders with a few content library items each and pre-fill fields/variables values, pricing table items, and assign recipients to roles from there.

content_placeholders
fields
object

You can pass a list of fields/values to pre-fill fields used in a template. Note that the Signature field can't be pre-filled. Field values with the same merge id will override field values of the whole document by default, unless you set the merge_field_scope=upload query parameter.

string

Name the document you are creating.

recipients
array of objects
required

The list of recipients you're sending the document to. Every object must contain the email parameter. The role, first_name and last_name parameters are optional. If the role parameter is passed, a person is assigned all fields matching their corresponding role. If a role was not passed, a person receives a read-only link to view the document. If the first_name and last_name are not passed, the system does this 1. Creates a new contact, if none exists with the given email; or 2. Gets the existing contact with the given email that already exists.

recipients*
tokens
array of objects

You may pass a list of tokens/values to pre-fill tokens (variables) used in a template. Name is a token (variable) name in a template. Value is a real value you would like to replace a token (variable) with.

tokens
tags
array of strings

Mark your document with one or several tags.

tags
Responses

Language
Credentials
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json