---
title: "Add Document"
method: POST
path: "/v1/transactions/{id}/documents"
tags: ["Documents"]
---

# Add Document

`POST /v1/transactions/{id}/documents`

## Path parameters

- `id` string, required

## Query parameters

- `document_url_version` 'v1' | 'v2'

## Request body

- DocumentCreationParams
  - `filename` string — Plain language name given to the document. If this parameter is not provided, Proof will automatically assign a name using the end of the page path of the resource URL.
  - `resource` string — The document file resource. Accepted values can be a URL pointing to the PDF file, the full contents of the PDF file in Base64 encoding, the file itself as a direct upload, or a template permalink string pointing to a preconfigured PDF. The maximum accepted file size is 30MB.
  - `document` string
  - `requirement` string — Completion requirement for the document. Accepted values can be notarization, esign, identity_confirmation (identity confirmation feature), readonly, and non_essential. Completion requirement for the document. If the value is set to non_essential, the document will be hidden from signers before the notary meeting and values for customer_can_annotate and witness_required will be ignored and set to false. identity_confirmation is used to support signing of PS Form 1583 for signers without a US SSN. Note: if identity_confirmation is set as the document requirement, ensure that all requiring notarization in the transaction also use identity confirmation as the requirement to avoid requiring KBA on the transaction. Read more about document requirements.
  - `notarization_required` boolean
  - `bundle_position` integer — Position to put document in bundle
  - `witness_required` boolean — Boolean flag indicating whether an additional witness must be present for this document's signing. A witness is a third person, in addition to the signer and the notary, who must be physically located with the signer.
  - `esign_required` boolean
  - `identity_confirmation_required` boolean
  - `signing_requires_meeting` boolean
  - `customer_can_annotate` boolean — Boolean flag indicating whether a signer can add their own annotations onto the document. Defaults to false, limiting the signer to only filling out designated fields setup on the document or as directed by a notary.
  - `pdf_bookmarked` boolean — Boolean flag indicating whether the document is a bookmarked PDF. If passed true the document will be split by bookmark into multiple documents.
  - `tracking_id` string — External tracking identifier such as a UUID string that can be useful for mapping documents back to your own system.
  - `text_tag_syntax` string
  - `authorization_header` string — Used to fetch doc URLs. Value passed should be in the form of a key-value pair with format "header_name:header_value"
  - `signing_designations` SigningDesignation[] — This array contains a prescribed list of designations for signers and/or a notary to annotate the document.
    - `id` string
    - `signer_identifier` string — For signers, the external_id value set on the signers array when creating a transaction; for witnesses, `witness{n}` i.e. `witness1` or `witness2`; for notaries, `notary`
    - `page_number` integer — The page of the designation, starting at 0
    - `x` integer — The X coordinate (from bottom left)
    - `y` integer — The Y coordinate (from bottom left)
    - `height` integer — Height
    - `width` integer — Width
    - `hint` string — Hint
    - `type` 'date_signed' | 'day_signed' | 'month_signed' | 'year_signed' | 'first_name' | 'middle_name' | 'last_name' | 'full_name' | 'signature' | 'initials' | 'checkmark' | 'radio_checkmark' | 'free_text' | 'signature_and_date' | 'dob' | 'email' | 'address_line1' | 'address_line2' | 'address_zip5' | 'address_state' | 'address_city' | 'representative_capacity_type' | 'disclosure' | 'notary_id' | 'seal' | 'commission_expiration_date' | 'commission_state' | 'county' | 'commission_county' | 'principal_id_type' | 'notary_city' — The type of field designation. Accepted values for signers: dob, email, address_line1, address_line2, address_zip5, address_state, address_city, representative_capacity_type. Accepted values for notaries: disclosure, notary_id, seal, commission_expiration_date, commission_state, county, commission_county, principal_id_type, notary_city. Universal types: date_signed, day_signed, month_signed, year_signed, first_name, middle_name, last_name, full_name, signature, initials, checkmark, radio_checkmark, free_text, signature_and_date
    - `designation_group_id` string, nullable
    - `signing_designation_group` SigningDesignationGroup
      - `name` string — The specified name of the group, type string. Use a naming convention of your choice, the only restrictions are that the name must be between 1 and 64 characters and can consist of alpha-numeric characters, hyphens, parentheses, and underscores. Valid regular expression for you tech nerds is /^[a-zA-Z0-9_-()]{1,64}$/
      - `min_required` integer — a positive integer between 0 and N where N is the minimum number of designations in the group that must be fulfilled (checked).
      - `max_required` integer — a positive integer between min_required and N where N is the maximum number of designations in the group that are allowed to be fulfilled. NOTE: max_required cannot be set to greater than 1 for designation groups used with radio_checkmark type signing designations.
    - `optional` boolean — Non-notary designation that is not part of a group can be set as optional
    - `instruction` string — Instruction specific to this signing designation to be shown to the signer
    - `primary_designation` object, nullable
      - `id` string
    - `primary_designation_identifier` string — Unique identification string to denote this designation is the primary designation
    - `conditional_on_primary` string — Identification string that denotes this designation is conditional on the designation with the same value set for primary_designation_identifier
  - `signing_designation_groups` SigningDesignationGroup[] — This array contains a specified list of groups for radio_checkmark and checkmark designations. Grouped designations can be used to logically enforce minimum and/or maximum fulfillment requirements. For example a group of three radio_checkmark designations that require one to be fulfilled (checked) or a group of five checkmark designations that are optional (none or all 5 may be checked).
    - `name` string — The specified name of the group, type string. Use a naming convention of your choice, the only restrictions are that the name must be between 1 and 64 characters and can consist of alpha-numeric characters, hyphens, parentheses, and underscores. Valid regular expression for you tech nerds is /^[a-zA-Z0-9_-()]{1,64}$/
    - `min_required` integer — a positive integer between 0 and N where N is the minimum number of designations in the group that must be fulfilled (checked).
    - `max_required` integer — a positive integer between min_required and N where N is the maximum number of designations in the group that are allowed to be fulfilled. NOTE: max_required cannot be set to greater than 1 for designation groups used with radio_checkmark type signing designations.

## Response `200`

successful

- Document
  - `id` string
  - `allowed_actions` string[] — List of allowed actions on document.
  - `bundle_position` integer — Position to put document in bundle
  - `completion_state` string
  - `data` string, nullable — base64 encoded document. Present if base64 encoding was specified in request. Currently supported for get_document only.
  - `date_created` string — Date document was created/uploaded.
  - `date_updated` string — Date document was last updated.
  - `document_name` string — Name of document.
  - `esign_required` boolean — Boolean flag indicating whether the document requires esigning.
  - `final_document_url` string, nullable
  - `identity_confirmation_required` boolean — Boolean flag indicating whether the document requires identity confirmation.
  - `is_enote` boolean — Boolean flag indicating whether the document is an eNote.
  - `notarization_required` boolean — Boolean flag indicating whether the document requires notarization. If `true`, identity_confirmation_required must be `false`. If `false`, the document may still be e-signed in the notary meeting. At least one document in a transaction must require notarization or identity confirmation.
  - `permissions` string[]
  - `processing_error` string, nullable — Error message if document processing failed.
  - `processing_state` string, nullable — State of document processing.
  - `rejection_anecdote` string, nullable — Anecdote for document rejection.
  - `rejection_reason` string, nullable — Reason for document rejection.
  - `requirement` string — Completion requirement for the document. Accepted values can be `notarization`, `esign`, `identity_confirmation` **([identity confirmation feature](https://dev.proof.com/docs/enterprise-features))**, `readonly`, and `non_essential`. Completion requirement for the document. If the value is set to `non_essential`, the document will be hidden from signers before the notary meeting and values for `customer_can_annotate` and `witness_required` will be ignored and set to false. `identity_confirmation` is used to support signing of PS Form 1583 for signers without a US SSN. Note: if `identity_confirmation` is set as the document requirement, ensure that all documents requiring notarization in the transaction also use `identity confirmation` as the requirement to avoid requiring KBA on the transaction. [Read more](https://dev.proof.com/docs/document-requirements) about document requirements.
  - `signed_url` string, nullable — Signed URL for the final document PDF.
  - `signing_designation_groups` SigningDesignationGroup[] — This array contains a prescribed list of groups of designations for signers and/or a notary to annotate the document.
    - `name` string — The specified name of the group, type string. Use a naming convention of your choice, the only restrictions are that the name must be between 1 and 64 characters and can consist of alpha-numeric characters, hyphens, parentheses, and underscores. Valid regular expression for you tech nerds is /^[a-zA-Z0-9_-()]{1,64}$/
    - `min_required` integer — a positive integer between 0 and N where N is the minimum number of designations in the group that must be fulfilled (checked).
    - `max_required` integer — a positive integer between min_required and N where N is the maximum number of designations in the group that are allowed to be fulfilled. NOTE: max_required cannot be set to greater than 1 for designation groups used with radio_checkmark type signing designations.
  - `signing_designations` SigningDesignation[] — This array contains a prescribed list of designations for signers and/or a notary to annotate the document.
    - `id` string
    - `signer_identifier` string — For signers, the external_id value set on the signers array when creating a transaction; for witnesses, `witness{n}` i.e. `witness1` or `witness2`; for notaries, `notary`
    - `page_number` integer — The page of the designation, starting at 0
    - `x` integer — The X coordinate (from bottom left)
    - `y` integer — The Y coordinate (from bottom left)
    - `height` integer — Height
    - `width` integer — Width
    - `hint` string — Hint
    - `type` 'date_signed' | 'day_signed' | 'month_signed' | 'year_signed' | 'first_name' | 'middle_name' | 'last_name' | 'full_name' | 'signature' | 'initials' | 'checkmark' | 'radio_checkmark' | 'free_text' | 'signature_and_date' | 'dob' | 'email' | 'address_line1' | 'address_line2' | 'address_zip5' | 'address_state' | 'address_city' | 'representative_capacity_type' | 'disclosure' | 'notary_id' | 'seal' | 'commission_expiration_date' | 'commission_state' | 'county' | 'commission_county' | 'principal_id_type' | 'notary_city' — The type of field designation. Accepted values for signers: dob, email, address_line1, address_line2, address_zip5, address_state, address_city, representative_capacity_type. Accepted values for notaries: disclosure, notary_id, seal, commission_expiration_date, commission_state, county, commission_county, principal_id_type, notary_city. Universal types: date_signed, day_signed, month_signed, year_signed, first_name, middle_name, last_name, full_name, signature, initials, checkmark, radio_checkmark, free_text, signature_and_date
    - `designation_group_id` string, nullable
    - `signing_designation_group` SigningDesignationGroup
      - `name` string — The specified name of the group, type string. Use a naming convention of your choice, the only restrictions are that the name must be between 1 and 64 characters and can consist of alpha-numeric characters, hyphens, parentheses, and underscores. Valid regular expression for you tech nerds is /^[a-zA-Z0-9_-()]{1,64}$/
      - `min_required` integer — a positive integer between 0 and N where N is the minimum number of designations in the group that must be fulfilled (checked).
      - `max_required` integer — a positive integer between min_required and N where N is the maximum number of designations in the group that are allowed to be fulfilled. NOTE: max_required cannot be set to greater than 1 for designation groups used with radio_checkmark type signing designations.
    - `optional` boolean — Non-notary designation that is not part of a group can be set as optional
    - `instruction` string — Instruction specific to this signing designation to be shown to the signer
    - `primary_designation` object, nullable
      - `id` string
    - `primary_designation_identifier` string — Unique identification string to denote this designation is the primary designation
    - `conditional_on_primary` string — Identification string that denotes this designation is conditional on the designation with the same value set for primary_designation_identifier
  - `signing_type` string
  - `tracking_id` string, nullable — The external tracking ID of the document.

## Other responses

- `400` — Bad Request
- `422` — Unprocessable Entity

---

[API](https://skmtc.dev/proof/apis/proof-business-api-specification.md) · [All operations](https://skmtc.dev/proof/apis/proof-business-api-specification/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/proof/proof-business-api-specification/revisions/1adaa0ea25cd/schema)
