---
title: "Get document"
method: GET
path: "/document/{document_id}"
---

# Get document

`GET /document/{document_id}`

## Request

- Base URL: `https://api.signnow.com`
- URL: `https://api.signnow.com/document/{document_id}`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/signnow/apis/signnow-api/docs/document/:document_id/get.ts> (a function with typed inputs; its response is checked against the schema)

This endpoint allows API users to retrieve the details of a document.

The **Document** object contains:
* Metadata: file name, size, extension, and ID
* Fields, texts, checks, and signatures
* Invites and their statuses (available statuses are: `created`, `pending`, `fulfilled`, `canceled`, `skipped`)
* Roles:
  - Recipients with a sign action appear in the `roles` array.
  - Recipients with an approve action appear in the `approver_roles` array.
  - Recipients with a view action appear in the `viewer_roles` array.
* Timestamps (date created, and date updated)
* Document group information
* Document group template information
* Originator's organization-level settings
* Integrations settings
* Signing session settings
* Share information
  - `is_team_shared`: Returns `true`, if the file has been shared with a team. 
  - `role`: Indicates the user's access to the document: Allowed values are `sender`, `viewer`, or `owner`. 
  - `is_personally_shared_to_others`: Returns `true` if the template has been personally shared with other users (via the **Share** button). The attribute is visible to the template owner and users with access rights.


Document is a fundamental object of every eSignature workflow.

* To send an invite, select or [upload a document](/docs/document/operations/upload-document).
* When the document is signed, it can be [downloaded in PDF file format](/docs/document/operations/download-document).
* Documents in SignNow can be [turned into templates](/docs/template/operations/create-template).
* API also allows you to create [event subscriptions](/docs/basic-auth/operations/create-event-subscription) triggered by a specific document.

## Response `200`

Successful response. Returns the document with its fields, roles, invites, and settings. To also return smart fields, add `include=integration_objects`.

- object
  - `id` string: Unique identifier of the document.
  - `tags` object[]: List of tags assigned to the document.
    - `name` string: Name of the tag.
    - `type` string: Type of the tag, for example `system`.
  - `lines` object[]: List of line elements drawn on the document.
  - `owner` string: Email address of the document owner.
  - `pages` object[]: List of document page images with size metadata.
    - `src` string: URL of the page image.
    - `size` object: Size of the page.
      - `width` integer: Width of the page, in pixels.
      - `height` integer: Height of the page, in pixels.
  - `roles` object[]: List of signer roles defined for the document.
    - `name` string: Name of the role, for example `Signer 1`.
    - `unique_id` string: ID of the role.
    - `signing_order` string: Position of the role in the signing order.
  - `seals` object[]: List of applied seal elements on the document.
  - `texts` object[]: List of text elements added to the document.
  - `checks` object[]: List of checkmark elements added to the document.
  - `fields` object[]: List of fillable fields defined on the document.
    - `id` string: ID of the field.
    - `role` string: Name of the role the field is assigned to.
    - `type` string: Field type, for example `text`, `signature`, or `checkbox`.
    - `role_id` string: ID of the role the field is assigned to.
    - `field_id` string: ID of the field.
    - `fulfiller` string: Email address of the recipient who filled in the field. `null` if not filled in.
    - `element_id` string: ID of the element that holds the field value. `null` if the field is empty.
    - `originator` string: Email address of the document owner.
    - `json_attributes` object: Position, size, and settings of the field. The set of keys depends on the field type.
      - `x` integer: Horizontal position of the field on the page, in pixels.
      - `y` integer: Vertical position of the field on the page, in pixels.
      - `bold` boolean: `true` if the text is bold.
      - `font` string: Font name, for example `Arial`.
      - `name` string: Name of the field.
      - `size` integer: Font size in the SignNow editor scale.
      - `align` string: Horizontal text alignment: `left`, `center`, or `right`.
      - `color` string: Text color as a 6-character hex code without `#`, for example `000000`.
      - `label` string: Label of the field shown to the recipient. Returned only if a label is set.
      - `width` integer: Width of the field, in pixels.
      - `height` integer: Height of the field, in pixels.
      - `italic` boolean: `true` if the text is italic.
      - `valign` string: Vertical text alignment: `top`, `middle`, or `bottom`.
      - `required` boolean: `true` if the recipient must fill in the field.
      - `font_size` integer: Font size on the document page, in PDF points.
      - `max_chars` integer: Maximum number of characters the recipient can enter. `0` means no limit.
      - `max_lines` integer: Maximum number of lines the recipient can enter. `0` means no limit.
      - `underline` boolean: `true` if the text is underlined.
      - `arrangement` string: How the text is laid out in the field, for example `none`.
      - `page_number` integer: Zero-based number of the page the field is on.
      - `stretch_mode` string: How the field resizes to fit its content, for example `fixed`.
      - `validator_id` string: ID of the validator applied to the field.
      - `allowed_types` string[]: For signature fields: the ways the recipient can add a signature, for example `type` or `draw`.
      - `prefilled_text` string: Prefilled value of the field. `null` if not set.
      - `lock_to_sign_date` boolean: For date fields: `true` if the field is filled with the signing date and cannot be changed.
      - `lock_to_sign_prefill` boolean: `true` if the recipient cannot change the prefilled value.
    - `field_request_id` string: ID of the field request. Use it to resend the invite with `PUT /fieldinvite/{field_request_id}/resend`.
    - `template_field_id` string: ID of the corresponding field in the source template. `null` if the document was not created from a template.
    - `field_request_canceled` string: `"1"` if the field request was canceled. `null` otherwise.
  - `created` string: Unix timestamp when the document was created.
  - `inserts` object[]: List of text inserts added to the document.
  - `updated` string: Unix timestamp of the last document update.
  - `user_id` string: Unique identifier of the document owner.
  - `payments` object[]: List of payment requests attached to the document.
  - `requests` object[]: List of document requests.
  - `settings` object: Document-level settings and feature flags.
  - `template` boolean: Indicates whether the document is a template. `true` if it is a template, `false` otherwise.
  - `parent_id` string: Identifier of the parent document.
  - `thumbnail` object: Links to the document thumbnail images in `small`, `medium`, and `large` sizes.
    - `large` string: URL of the large thumbnail.
    - `small` string: URL of the small thumbnail.
    - `medium` string: URL of the medium thumbnail.
  - `hyperlinks` object[]: List of hyperlink elements on the document.
  - `owner_name` string: Display name of the document owner.
  - `page_count` string: Number of pages in the document, as a string.
  - `share_info` object: Document sharing information (team sharing and personal sharing).
    - `role` string: Access level of the current user: `owner`, `sender`, or `viewer`.
    - `is_team_shared` boolean: `true` if the item is shared with a team.
    - `workspace_role` string: Role of the current user in the workspace. `null` if not applicable.
    - `is_personally_shared_to_others` boolean: `true` if the current user shared the item with other users.
  - `signatures` object[]: List of applied signature elements on the document.
    - `x` string: Horizontal position of the signature on the page, in pixels.
    - `y` string: Vertical position of the signature on the page, in pixels.
    - `id` string: ID of the signature.
    - `data` string: Image of the signature, Base64-encoded.
    - `email` string: Email address of the user who added the signature.
    - `width` string: Width of the signature, in pixels.
    - `height` string: Height of the signature, in pixels.
    - `created` string: Unix timestamp of when the signature was added.
    - `user_id` string: ID of the user who added the signature.
    - `page_number` string: Zero-based number of the page the signature is on.
  - `attachments` object[]: List of file attachments on the document.
    - `x` string: Horizontal position of the attachment field on the page, in pixels.
    - `y` string: Vertical position of the attachment field on the page, in pixels.
    - `id` string: ID of the attachment field.
    - `width` string: Width of the attachment field, in pixels.
    - `height` string: Height of the attachment field, in pixels.
    - `created` string: Unix timestamp of when the attachment was added.
    - `user_id` string: ID of the user who added the attachment.
    - `filename` string: Name under which the attached file is stored.
    - `file_size` string: Size of the attached file, in bytes.
    - `file_type` string: Type of the attached file.
    - `mime_type` string: MIME type of the attached file, for example `jpeg`.
    - `line_height` string: Line height of the attachment field, in pixels.
    - `page_number` string: Zero-based number of the page the attachment field is on.
    - `allow_editing` boolean: `true` if the recipient can replace the attached file.
    - `json_attributes` string: Additional attributes of the attachment field. `null` if none.
    - `original_attachment_name` string: Original name of the attached file.
  - `exported_to` object[]: List of destinations to which the document has been exported.
  - `integrations` object[]: List of third-party integrations associated with the document.
  - `radiobuttons` object[]: List of radio button groups on the document.
  - `version_time` string: Unix timestamp of the document version.
  - `viewer_roles` object[]: List of viewer roles defined for the document.
  - `document_name` string: Name of the document.
  - `field_invites` object[]: List of signer field invites for the document.
    - `id` string: ID of the field invite.
    - `role` string: Name of the recipient role.
    - `email` string: Email address of the signer. For an SMS invite, a generated placeholder address.
    - `pfrid` string: ID of the payment request. `null` if there is no payment request.
    - `status` string: Status of the invite, for example `pending`, `fulfilled`, or `declined`.
    - `created` string: Unix timestamp of when the invite was created.
    - `message` string: Message of the invite email.
    - `pfrtype` string: Type of the payment request, for example `fixed`. `null` if there is no payment request.
    - `role_id` string: ID of the recipient role.
    - `updated` string: Unix timestamp of the last update of the invite.
    - `declined` object[]: Decline details. Empty if the signer has not declined.
    - `language` string: Language of the signing session and notification emails: `en`, `es`, or `fr`. `null` if not set.
    - `reassign` string: `"1"` if the signer can reassign the invite, otherwise `"0"`.
    - `reminder` string: `"1"` if reminders are enabled for the invite, otherwise `"0"`.
    - `pframount` string: Amount of the payment request. `null` if there is no payment request.
    - `pfrstatus` string: Status of the payment request. `null` if there is no payment request.
    - `compliance` object: Compliance settings of the invite.
      - `cfr` string: 21 CFR Part 11 settings of the invite. `null` if not applied.
    - `pfrcreated` string: Unix timestamp of when the payment request was created. `null` if there is no payment request.
    - `email_group` object: Email group the invite was sent to. `id` and `name` are `null` if the invite was sent to a single recipient.
      - `id` string: ID of the email group. `null` if the invite was sent to a single recipient.
      - `name` string: Name of the email group. `null` if the invite was sent to a single recipient.
    - `id_verified` string: ID verification status of the signer, for example `UNVERIFIED`.
    - `is_embedded` boolean: `true` if the invite is an embedded invite.
    - `sender_name` string: Name of the user who sent the invite.
    - `sms_message` string: Text of the SMS with the invite password. `null` if not set.
    - `redirect_uri` string: URL the signer is redirected to after signing.
    - `sender_email` string: Email address of the user who sent the invite.
    - `delivery_type` string: How the invite is delivered: `email` or `sms`.
    - `password_type` string: Type of the invite password. Empty if no password is set.
    - `email_statuses` object[]: List of email delivery events recorded for this invite. Each object represents one event. The array is empty (`[]`) if no email events have been recorded yet.
      - `status` 'sent' | 'mail_open' | 'bounce' | 'mail_click' | 'reminder_sent' | 'undefined': Email delivery event status. Possible values: `sent` — email was successfully sent to the recipient; `mail_open` — email was opened by the recipient; `bounce` — email bounced, delivery failed (e.g. invalid address); `mail_click` — a link in the email was clicked by the recipient; `reminder_sent` — a reminder email was sent to the recipient; `undefined` — the event status is unknown.
      - `created_at` integer: Unix timestamp when the event was recorded.
      - `last_reaction_at` integer: Unix timestamp of the last status update.
    - `pfrmerchant_id` string: ID of the merchant account. `null` if there is no payment request.
    - `short_link_url` string: Short link to the invite. `null` if not generated.
    - `signature_type` string: Type of signature required from the signer. `null` if not set.
    - `signer_user_id` string: ID of the signer user.
    - `embedded_signer` unknown[]: Embedded signer details. Empty if the invite is not embedded.
      - unknown
    - `expiration_time` string: Unix timestamp of when the invite expires.
    - `is_draft_exists` string: `"1"` if the signer has saved a draft, otherwise `"0"`.
    - `password_method` string: Method used to deliver the invite password. Empty if no password is set.
    - `payment_request` string: Payment request attached to the invite. `null` if there is none.
    - `redirect_target` string: Where the redirect URL opens: `self` for the same tab or `blank` for a new tab.
    - `is_full_declined` boolean: `true` if the recipient declined the invite.
    - `pfrcurrency_name` string: Currency of the payment request. `null` if there is no payment request.
    - `pfrmerchant_type` string: Type of the merchant account, for example `Stripe`. `null` if there is no payment request.
    - `max_inactive_time` string: Maximum time the signing session can stay inactive. `null` if not set.
    - `sms_sent_statuses` unknown[]: SMS delivery events of the invite. Empty for email invites.
      - unknown
    - `verification_type` string: Type of signer verification. `null` if not set.
    - `close_redirect_uri` string: URL the signer is redirected to after selecting **Close**.
    - `is_document_locked` string: `"1"` if the document is locked for this signer, otherwise `"0"`.
    - `password_protected` string: `"1"` if the invite is password-protected, otherwise `"0"`.
    - `pfrjson_attributes` string: Additional attributes of the payment request. `null` if there is no payment request.
    - `force_new_signature` integer: `1` if the signer must create a new signature instead of reusing a saved one. `null` if not set.
    - `signer_phone_invite` string: Phone number the SMS invite was sent to. `null` for email invites.
    - `decline_by_signature` string: `"1"` if the signer can decline the invite, otherwise `"0"`. `null` if not set.
    - `decline_redirect_uri` string: URL the signer is redirected to after declining the document.
    - `signing_instructions` string: Instructions shown to the signer. `null` if not set.
    - `electronic_consent_id` string: ID of the electronic consent the signer accepted. `null` if not accepted.
    - `prefill_signature_name` string: Name prefilled in the signature field. `null` if not set.
    - `id_verification_required` string: Whether ID verification is required, for example `NO`.
    - `pfrmerchant_account_name` string: Name of the merchant account that receives the payment. `null` if there is no payment request.
    - `pfrpayment_transaction_id` string: ID of the payment transaction. `null` until the payment is made.
    - `is_close_redirect_canceled` boolean: `true` if the organization redirect after **Close** is turned off for this invite.
    - `electronic_consent_required` integer: `1` if the signer must accept the electronic consent before signing, otherwise `0`.
    - `is_finish_redirect_canceled` boolean: `true` if the organization redirect after completion is turned off for this invite.
    - `expired_session_redirect_uri` string: URL the signer is redirected to when the signing session expires. `null` if not set.
    - `is_decline_redirect_canceled` boolean: `true` if the organization redirect after declining is turned off for this invite.
    - `required_preset_signature_name` string: Name the signer must use in the signature. `null` if not set.
    - `stripe_ach_bank_account_present` string: `"1"` if a Stripe ACH bank account is connected for the payment request, otherwise `"0"`.
    - `stripe_ach_bank_account_verified` string: `"1"` if the Stripe ACH bank account is verified, otherwise `"0"`.
  - `approver_roles` object[]: List of approver roles defined for the document.
  - `notary_invites` object[]: List of notary invites on the document.
  - `origin_user_id` string: Identifier of the user who owns the source document. Can be `null`.
  - `checkbox_groups` object[]: List of checkbox group definitions on the document.
  - `originator_logo` string: URL reference to the document originator's logo.
  - `routing_details` object[]: Invite routing configuration, including signer order, `cc` recipients, and invite link instructions.
    - `cc` object[]: Email addresses that receive a copy of the completed document.
    - `id` string: ID of the routing details.
    - `data` object[]: Signer roles and their invite settings.
      - `name` string: Name of the role.
      - `role_id` string: ID of the role.
      - `inviter_role` boolean: `true` if the document owner is the recipient for this role.
      - `default_email` string: Default email address of the recipient for this role. Empty if not set.
      - `delivery_type` string: How the invite is delivered: `email` or `sms`.
      - `signing_order` integer: Position of the role in the signing order.
    - `cc_step` object[]: Steps after which CC recipients are notified.
    - `created` string: Unix timestamp of when the routing details were created.
    - `updated` string: Unix timestamp of the last update of the routing details.
    - `viewers` unknown[]: Viewer roles and their invite settings. Empty if there are no viewers.
      - unknown
    - `approvers` unknown[]: Approver roles and their invite settings. Empty if there are no approvers.
      - unknown
    - `attributes` unknown[]: Additional routing attributes. Empty if there are none.
      - unknown
    - `invite_link_instructions` string: Instructions shown with the invite link. Empty if not set.
  - `field_validators` object[]: List of field validation rules.
    - `id` string: ID of the validator.
    - `name` string: Name of the validator.
    - `scope` string: Scope of the validator. `system` for built-in validators.
    - `description` string: Description of the expected value.
    - `error_message` string: Message shown when the value does not match.
    - `regex_expression` string: Regular expression the value must match.
    - `formula_calculation` string: `"1"` if the validator can be used in formula fields, otherwise `"0"`.
    - `display_json_attributes` object: Display settings of the validator in the SignNow web app.
      - `common` boolean: `true` if the validator is in the common list.
      - `disabled` boolean: `true` if the validator is disabled.
      - `web_locale_key` string: Localization key of the validator.
      - `web_short_name` string: Short name shown in the web app.
      - `web_description` string: Description shown in the web app.
      - `date_time_field_order` integer: Position of the validator in the date and time list.
  - `scheduled_invite` object: Scheduled invite configuration. Can be `null` if no invite is scheduled.
  - `original_filename` string: Original filename of the uploaded document.
  - `origin_document_id` string: Identifier of the source document if this document was created as a copy. Can be `null`.
  - `document_attributes` object: Additional document attributes such as `from_email` and `from_name`.
    - `from_name` string: Sender name shown in the subject of the invite, reassign, reminder, and completed emails.
    - `from_email` string: Sender email address shown in the invite, reassign, reminder, and completed emails.
  - `document_group_info` object: Document group information if this document belongs to a group.
    - `state` string: State of the document group. `null` if the document is not in a group.
    - `invite_id` string: ID of the document group invite. `null` if no invite has been sent.
    - `invite_status` string: Status of the document group invite. `null` if no invite has been sent.
    - `sign_as_merged` boolean: `true` if the documents in the group are signed as one merged document.
    - `freeform_invite` object: FreeForm invite of the document group.
      - `id` string: ID of the FreeForm invite. `null` if no FreeForm invite was sent.
    - `document_group_id` string: ID of the document group. `null` if the document is not in a group.
    - `doc_count_in_group` integer: Number of documents in the document group. `0` if the document is not in a group.
    - `document_group_name` string: Name of the document group. `null` if the document is not in a group.
  - `enumeration_options` object[]: List of enumeration options for dropdown fields.
  - `integration_objects` object[]: Smart fields added to the document. Returned only if the document has smart fields.
    - `x` string: See the parent object.
    - `y` string: See the parent object.
    - `id` string: See the parent object.
    - `data` string: See the parent object.
    - `font` string: See the parent object.
    - `size` string: See the parent object.
    - `email` string: See the parent object.
    - `created` string: See the parent object.
    - `user_id` string: See the parent object.
    - `line_height` string: See the parent object.
    - `page_number` string: See the parent object.
    - `allow_editing` boolean: See the parent object.
    - `json_attributes` object: See the parent object.
      - `bold` boolean: See the parent object.
      - `color` string: See the parent object.
      - `italic` boolean: See the parent object.
      - `underline` boolean: See the parent object.
    - `api_integration_id` string: See the parent object.
  - `viewer_field_invites` object[]: List of viewer field invites for the document.
  - `approver_field_invites` object[]: List of approver field invites for the document.
  - `signing_session_settings` object: Settings applied to the signing session, such as `welcome_message`.
    - `welcome_message` string: Welcome message shown at the start of the signing session. `null` if not set.
  - `document_group_template_info` object[]: Active document group templates that include this document. Empty if the document isn't part of any document group template.
    - `shared` integer: Whether the document group template is shared with a team: `1` if shared, `0` if not.
    - `document_group_template_id` string: ID of the document group template.
    - `document_group_template_name` string: Name of the document group template.
  - `originator_organization_settings` object[]: Organization-level settings that apply to the document's originator. Each item has a `setting` name and its `value`.
    - `value` string: Value of the setting, as a string.
    - `setting` string: Name of the setting.

## Other responses

- `400`: * Wrong, expired, or missing token. * The document doesn't exist.

---

[API](https://skmtc.dev/signnow/apis/signnow-api.md) - [All operations](https://skmtc.dev/signnow/apis/signnow-api/llms.txt) - [OpenAPI document](https://skmtc.dev/signnow/apis/signnow-api/revisions/1c9c30a6142b?raw)
