---
title: "Document Details"
method: GET
path: "/public/v1/documents/{id}/details"
tags: ["Documents"]
---

# Document Details

`GET /public/v1/documents/{id}/details`

## Request

- Base URL: `https://api.pandadoc.com`
- URL: `https://api.pandadoc.com/public/v1/documents/{id}/details`
- Auth: one of:
  - API key in header `Authorization`
  - OAuth 2
    - Authorization code: `https://app.pandadoc.com/oauth2/authorize`
    - Token URL: `https://api.pandadoc.com/oauth2/access_token`
- TypeScript: <https://skmtc.dev/pandadoc/apis/pandadoc-public-api/docs/public/v1/documents/:id/details/get.ts> (a function with typed inputs; its response is checked against the schema)

Return detailed data about a document. Use Document Status for getting just a basic info and status.

Get details about a document by its `id`. Details include:

- Basic document information (name, document state, owner, sender, grand total, etc.)
- Recipients (completion status, signing order, etc.)
- Fields with values (incl. Collect Files field)
- Tokens (variables) with values
- Pricing information (pricing tables, products, quotes, etc.)
- Content block names for table, image, and text blocks (tables, images, texts)
- Metadata
- Tags
- Linked objects
- [Approval flow](https://support.pandadoc.com/en/articles/9714799-approval-workflow) (if present)
- Active editing lock (holder and expiry), when the document is locked
- Timestamps associated with a document. Note that `date_modified` means any changes associated with the recipients and document status, while `content_date_modified` reflects any changes in the document content.

## Path parameters

- `id` string, required

## Response `200`

OK

- DocumentDetailsResponse
  - `id` string: Document ID.
  - `name` string: Document name.
  - `autonumbering_sequence_name_prefix` unknown
  - `folder_uuid` string, nullable: ID of the folder where the created document should be stored.
  - `date_created` string: Document creation date.
  - `date_modified` string: Document modification date.
  - `date_completed` string, nullable: Document completion date.
  - `content_date_modified` string: Document content modification date.
  - `date_sent` string, nullable: Document sent date.
  - `ref_number` string: Document reference number.
  - `created_by` object: Document creator details.
    - `id` string: Creator ID.
    - `membership_id` string: Creator membership ID.
    - `email` string: Creator email.
    - `first_name` string: Creator first name.
    - `last_name` string: Creator last name.
    - `avatar` string, nullable: Creator avatar URL.
  - `template` object, nullable: Source template of the document. `null` for documents created from multiple templates (bundles) because only a single parent template is stored.
    - `id` string: Template ID.
    - `name` string: Template name.
  - `expiration_date` string, nullable: Document expiration date.
  - `metadata` object: Document metadata.
  - `tokens` Token[]: Document tokens.
    - `name` string, required: Token name.
    - `value` string: Token value.
  - `fields` Field[]: Document fields.
    - union
      - Checkbox
        - `uuid` string
        - `name` string: Name of a field
        - `title` string
        - `placeholder` string: Placeholder of a field
        - `assigned_to` union
          - RecipientAssignedTo: Recipient
            - `id` string
            - `email` string, email
            - `recipient_type` string
            - `roles` string[]
            - `signing_order` integer
            - `has_completed` boolean
            - `first_name` string
            - `last_name` string
            - `phone` string
            - `role` string
            - `delivery_methods` AssignedToRecipientDeliveryMethods
              - …
            - `redirect` RecipientRedirectSettings
              - …
            - `type` 'recipient'
          - RecipientsGroupAssignedTo: Collection of Recipients
            - `id` string
            - `email` string, email
            - `recipient_type` string
            - `roles` string[]
            - `signing_order` integer
            - `has_completed` boolean
            - `name` string
            - `members` object[]
              - …
            - `type` 'recipient_group'
        - `field_id` string
        - `is_filled` boolean: Whether the field has a completed value according to its type.
        - `type` 'checkbox'
        - `value` boolean: Value of the Checkbox field.
        - `merge_field` string
      - CollectFile
        - `uuid` string
        - `name` string: Name of a field
        - `title` string
        - `placeholder` string: Placeholder of a field
        - `assigned_to` union
          - RecipientAssignedTo: Recipient
            - `id` string
            - `email` string, email
            - `recipient_type` string
            - `roles` string[]
            - `signing_order` integer
            - `has_completed` boolean
            - `first_name` string
            - `last_name` string
            - `phone` string
            - `role` string
            - `delivery_methods` AssignedToRecipientDeliveryMethods
              - …
            - `redirect` RecipientRedirectSettings
              - …
            - `type` 'recipient'
          - RecipientsGroupAssignedTo: Collection of Recipients
            - `id` string
            - `email` string, email
            - `recipient_type` string
            - `roles` string[]
            - `signing_order` integer
            - `has_completed` boolean
            - `name` string
            - `members` object[]
              - …
            - `type` 'recipient_group'
        - `field_id` string
        - `is_filled` boolean: Whether the field has a completed value according to its type.
        - `type` 'collect_file'
        - `value` object: Value of the Collect File field.
          - `name` string
          - `url` string
      - Date
        - `uuid` string
        - `name` string: Name of a field
        - `title` string
        - `placeholder` string: Placeholder of a field
        - `assigned_to` union
          - RecipientAssignedTo: Recipient
            - `id` string
            - `email` string, email
            - `recipient_type` string
            - `roles` string[]
            - `signing_order` integer
            - `has_completed` boolean
            - `first_name` string
            - `last_name` string
            - `phone` string
            - `role` string
            - `delivery_methods` AssignedToRecipientDeliveryMethods
              - …
            - `redirect` RecipientRedirectSettings
              - …
            - `type` 'recipient'
          - RecipientsGroupAssignedTo: Collection of Recipients
            - `id` string
            - `email` string, email
            - `recipient_type` string
            - `roles` string[]
            - `signing_order` integer
            - `has_completed` boolean
            - `name` string
            - `members` object[]
              - …
            - `type` 'recipient_group'
        - `field_id` string
        - `is_filled` boolean: Whether the field has a completed value according to its type.
        - `type` 'date'
        - `value` string, date-time: Value of the Date field.
        - `merge_field` string
      - Dropdown
        - `uuid` string
        - `name` string: Name of a field
        - `title` string
        - `placeholder` string: Placeholder of a field
        - `assigned_to` union
          - RecipientAssignedTo: Recipient
            - `id` string
            - `email` string, email
            - `recipient_type` string
            - `roles` string[]
            - `signing_order` integer
            - `has_completed` boolean
            - `first_name` string
            - `last_name` string
            - `phone` string
            - `role` string
            - `delivery_methods` AssignedToRecipientDeliveryMethods
              - …
            - `redirect` RecipientRedirectSettings
              - …
            - `type` 'recipient'
          - RecipientsGroupAssignedTo: Collection of Recipients
            - `id` string
            - `email` string, email
            - `recipient_type` string
            - `roles` string[]
            - `signing_order` integer
            - `has_completed` boolean
            - `name` string
            - `members` object[]
              - …
            - `type` 'recipient_group'
        - `field_id` string
        - `is_filled` boolean: Whether the field has a completed value according to its type.
        - `type` 'dropdown'
        - `value` string: Value of the Dropdown field.
        - `merge_field` string
      - Initials
        - `uuid` string
        - `name` string: Name of a field
        - `title` string
        - `placeholder` string: Placeholder of a field
        - `assigned_to` union
          - RecipientAssignedTo: Recipient
            - `id` string
            - `email` string, email
            - `recipient_type` string
            - `roles` string[]
            - `signing_order` integer
            - `has_completed` boolean
            - `first_name` string
            - `last_name` string
            - `phone` string
            - `role` string
            - `delivery_methods` AssignedToRecipientDeliveryMethods
              - …
            - `redirect` RecipientRedirectSettings
              - …
            - `type` 'recipient'
          - RecipientsGroupAssignedTo: Collection of Recipients
            - `id` string
            - `email` string, email
            - `recipient_type` string
            - `roles` string[]
            - `signing_order` integer
            - `has_completed` boolean
            - `name` string
            - `members` object[]
              - …
            - `type` 'recipient_group'
        - `field_id` string
        - `is_filled` boolean: Whether the field has a completed value according to its type.
        - `type` 'initials'
        - `value` object: Value of the Initials field. Always empty object.
      - Payment
        - `uuid` string
        - `name` string: Name of a field
        - `title` string
        - `placeholder` string: Placeholder of a field
        - `assigned_to` union
          - RecipientAssignedTo: Recipient
            - `id` string
            - `email` string, email
            - `recipient_type` string
            - `roles` string[]
            - `signing_order` integer
            - `has_completed` boolean
            - `first_name` string
            - `last_name` string
            - `phone` string
            - `role` string
            - `delivery_methods` AssignedToRecipientDeliveryMethods
              - …
            - `redirect` RecipientRedirectSettings
              - …
            - `type` 'recipient'
          - RecipientsGroupAssignedTo: Collection of Recipients
            - `id` string
            - `email` string, email
            - `recipient_type` string
            - `roles` string[]
            - `signing_order` integer
            - `has_completed` boolean
            - `name` string
            - `members` object[]
              - …
            - `type` 'recipient_group'
        - `field_id` string
        - `is_filled` boolean: Whether the field has a completed value according to its type.
        - `type` 'payment_details'
        - `value` string: Value of the Payment field. Always empty string.
      - RadioButtons
        - `uuid` string
        - `name` string: Name of a field
        - `title` string
        - `placeholder` string: Placeholder of a field
        - `assigned_to` union
          - RecipientAssignedTo: Recipient
            - `id` string
            - `email` string, email
            - `recipient_type` string
            - `roles` string[]
            - `signing_order` integer
            - `has_completed` boolean
            - `first_name` string
            - `last_name` string
            - `phone` string
            - `role` string
            - `delivery_methods` AssignedToRecipientDeliveryMethods
              - …
            - `redirect` RecipientRedirectSettings
              - …
            - `type` 'recipient'
          - RecipientsGroupAssignedTo: Collection of Recipients
            - `id` string
            - `email` string, email
            - `recipient_type` string
            - `roles` string[]
            - `signing_order` integer
            - `has_completed` boolean
            - `name` string
            - `members` object[]
              - …
            - `type` 'recipient_group'
        - `field_id` string
        - `is_filled` boolean: Whether the field has a completed value according to its type.
        - `type` 'radio_buttons'
        - `value` string: Value of the Radio Buttons field.
        - `merge_field` string
      - Signature
        - `uuid` string
        - `name` string: Name of a field
        - `title` string
        - `placeholder` string: Placeholder of a field
        - `assigned_to` union
          - RecipientAssignedTo: Recipient
            - `id` string
            - `email` string, email
            - `recipient_type` string
            - `roles` string[]
            - `signing_order` integer
            - `has_completed` boolean
            - `first_name` string
            - `last_name` string
            - `phone` string
            - `role` string
            - `delivery_methods` AssignedToRecipientDeliveryMethods
              - …
            - `redirect` RecipientRedirectSettings
              - …
            - `type` 'recipient'
          - RecipientsGroupAssignedTo: Collection of Recipients
            - `id` string
            - `email` string, email
            - `recipient_type` string
            - `roles` string[]
            - `signing_order` integer
            - `has_completed` boolean
            - `name` string
            - `members` object[]
              - …
            - `type` 'recipient_group'
        - `field_id` string
        - `is_filled` boolean: Whether the field has a completed value according to its type.
        - `type` 'signature'
        - `value` object: Value of the Signature field. Always empty object.
      - Stamp
        - `uuid` string
        - `name` string: Name of a field
        - `title` string
        - `placeholder` string: Placeholder of a field
        - `assigned_to` union
          - RecipientAssignedTo: Recipient
            - `id` string
            - `email` string, email
            - `recipient_type` string
            - `roles` string[]
            - `signing_order` integer
            - `has_completed` boolean
            - `first_name` string
            - `last_name` string
            - `phone` string
            - `role` string
            - `delivery_methods` AssignedToRecipientDeliveryMethods
              - …
            - `redirect` RecipientRedirectSettings
              - …
            - `type` 'recipient'
          - RecipientsGroupAssignedTo: Collection of Recipients
            - `id` string
            - `email` string, email
            - `recipient_type` string
            - `roles` string[]
            - `signing_order` integer
            - `has_completed` boolean
            - `name` string
            - `members` object[]
              - …
            - `type` 'recipient_group'
        - `field_id` string
        - `is_filled` boolean: Whether the field has a completed value according to its type.
        - `type` 'stamp'
        - `value` object: Value of the Stamp field. Always empty object.
      - Text
        - `uuid` string
        - `name` string: Name of a field
        - `title` string
        - `placeholder` string: Placeholder of a field
        - `assigned_to` union
          - RecipientAssignedTo: Recipient
            - `id` string
            - `email` string, email
            - `recipient_type` string
            - `roles` string[]
            - `signing_order` integer
            - `has_completed` boolean
            - `first_name` string
            - `last_name` string
            - `phone` string
            - `role` string
            - `delivery_methods` AssignedToRecipientDeliveryMethods
              - …
            - `redirect` RecipientRedirectSettings
              - …
            - `type` 'recipient'
          - RecipientsGroupAssignedTo: Collection of Recipients
            - `id` string
            - `email` string, email
            - `recipient_type` string
            - `roles` string[]
            - `signing_order` integer
            - `has_completed` boolean
            - `name` string
            - `members` object[]
              - …
            - `type` 'recipient_group'
        - `field_id` string
        - `is_filled` boolean: Whether the field has a completed value according to its type.
        - `type` 'text'
        - `value` string: Value of the Text field.
        - `merge_field` string, nullable
  - `pricing` PricingResponse
    - `tables` PricingTableResponse[]
      - `name` string
      - `id` string
      - `total` string
      - `is_included_in_total` boolean
      - `summary` object, nullable
        - `subtotal` string, nullable
        - `total` string, nullable
        - `discount` string, nullable
        - `tax` string, nullable
        - `fee` string, nullable
      - `items` object[]
        - `id` string, nullable
        - `sku` string, nullable
        - `qty` string, nullable
        - `name` string, nullable
        - `cost` string, nullable
        - `price` string, nullable
        - `description` string, nullable
        - `custom_fields` object, nullable
        - `custom_columns` object, nullable
        - `discount` object, nullable
          - `value` string, nullable
          - `type` string, nullable
        - `tax_first` object, nullable
          - `value` string, nullable
          - `type` string, nullable
        - `tax_second` object, nullable
          - `value` string, nullable
          - `type` string, nullable
        - `subtotal` string, nullable
        - `options` object, nullable
          - `optional` boolean, nullable
          - `optional_selected` boolean, nullable
          - `multichoice_enabled` boolean, nullable
          - `multichoice_selected` boolean, nullable
          - `qty_editable` boolean
        - `sale_price` string, nullable
        - `taxes` object, nullable
        - `discounts` object, nullable
        - `fees` object, nullable
        - `merged_data` object, nullable: Contains all fields in a flat structure with external field names defined in the template.
      - `currency` string
    - `quotes` QuoteResponse[]
      - `id` string
      - `currency` string
      - `total` string
      - `summary` object
        - `total` string
        - `subtotal` string, nullable
        - `one_time_subtotal` string, nullable
        - `recurring_subtotal` object[], nullable
          - `billing_cycle` string
          - `value` string
        - `total_qty` string, nullable
        - `discounts` object, nullable
        - `taxes` object, nullable
        - `fees` object, nullable
        - `custom_fields` object, nullable
        - `total_discount` string, nullable
        - `total_tax` string, nullable
        - `total_fee` string, nullable
        - `total_savings` string, nullable
        - `total_contract_value` string, nullable
      - `sections` object[]
        - `id` string
        - `name` string
        - `summary` object
          - `total` string
          - `subtotal` string, nullable
          - `one_time_subtotal` string, nullable
          - `recurring_subtotal` object[], nullable
            - `billing_cycle` string
            - `value` string
          - `total_qty` string, nullable
          - `discounts` object, nullable
          - `taxes` object, nullable
          - `fees` object, nullable
          - `custom_fields` object, nullable
          - `total_section_value` string, nullable
        - `columns` object[]
          - `header` string, nullable
          - `name` string
          - `merge_name` string, nullable
          - `hidden` boolean
          - `formula_expression` string, nullable
          - `formula_error_code` string, nullable
        - `items` object[], nullable
          - `id` string, nullable
          - `sku` string, nullable
          - `name` string, nullable
          - `description` string, nullable
          - `qty` string, nullable
          - `price` string, nullable
          - `cost` string, nullable
          - `billing_frequency` 'weekly' | 'monthly' | 'annually' | 'quarterly' | 'semiannually', nullable
          - `contract_term` string, nullable
          - `pricing_method` string, nullable
          - `type` string, nullable
          - `reference_type` string, nullable
          - `options` object, nullable
            - `selected` boolean, nullable
            - `qty_editable` boolean, nullable
          - `custom_columns` object, nullable
          - `formula_columns` object, nullable
          - `external_columns` object
          - `discounts` object, nullable
          - `taxes` object, nullable
          - `fees` object, nullable
          - `multipliers` object, nullable
          - `total` string, nullable
          - `overall_total` string, nullable
          - `total_qty` string, nullable
          - `reference_id` string, nullable
          - `thumbnail` string, nullable
          - `images` string[], nullable
          - `merged_data` object, nullable
        - `total` string
        - `settings` QuoteSectionSettings
          - `optional` boolean
          - `selected` boolean
          - `selection_type` 'custom' | 'single' | 'multiple'
          - `data_merge_enabled` boolean
      - `merge_rules` object[]
        - `id` string
        - `enabled` boolean
        - `action` object
          - `type` string
          - `section_id` string
        - `condition` object
          - `field_name` string
          - `type` string
          - `comparison` object[]
            - `type` string
            - `value` string
      - `settings` object
        - `selection_type` 'custom' | 'single' | 'multiple'
    - `total` string
  - `tables` object[]: Document tables.
    - `name` string: Table name.
  - `images` object[]: Document images.
    - `name` string: Image name.
  - `texts` object[]: Document text blocks.
    - `name` string: Text name.
  - `tags` string[]: Document tags.
  - `sent_by` object, nullable: Document sent by.
    - `id` string
    - `email` string
    - `first_name` string
    - `last_name` string
    - `avatar` string, nullable
  - `recipients` union[]: Document recipients.
    - union
      - object: Recipient
        - `id` string
        - `recipient_type` 'signer' | 'CC' | 'approver'
        - `role` string, nullable
        - `roles` string[]
        - `signing_order` integer, nullable
        - `email` string, nullable
        - `has_completed` boolean
        - `last_name` string
        - `contact_id` string
        - `first_name` string
        - `phone` string, nullable
        - `delivery_methods` RecipientDeliveryMethods, nullable
          - `email` boolean
          - `sms` boolean
        - `shared_link` string
        - `signature_date` string, nullable
        - `verification_settings` RecipientVerificationSettingsResponse: To set up recipient verification, provide verification_place (required) and exactly one verification type: passcode_verification, phone_verification, kba_verification, id_verification, or email_otp_verification. All other verification type fields must be null. Providing more than one verification type returns a 400 error. - For passcode_verification, provide the passcode. - For phone_verification, provide the phone_number. - For email_otp_verification, provide the email. - For kba_verification and id_verification, set the enabled parameter to true.
          - `verification_place` 'before_open' | 'before_sign': Specifies when a recipient must complete the verification process: - `before_open` (before opening the document), - `before_sign` (before signing the document).
          - `passcode_verification` object, nullable: Sets the passcode.
            - `passcode` string, required: Document passcode.
          - `phone_verification` object, nullable: Sets the phone number to send a passcode to.
            - `phone_number` string, required: A phone number to send a passcode to.
          - `kba_verification` object, nullable: Sets the KBA verification.
            - `time_limit_sec` integer
            - `score_threshold` integer
            - `max_attempts_count` integer
          - `id_verification` object, nullable: Sets the ID verification.
            - `enabled` boolean
          - `email_otp_verification` object, nullable: Sets the email address to send a one-time passcode to.
            - `email` string, email, required: An email address to send a one-time passcode to.
        - `redirect` RecipientRedirect
          - `is_enabled` boolean, required
          - `url` string, nullable, required: A URL to redirect to after the document is signed.
        - `avatar` string, nullable
        - `type` 'recipient'
      - object: Recipient Group
        - `id` string
        - `recipient_type` 'signer' | 'CC' | 'approver'
        - `role` string, nullable
        - `roles` string[]
        - `signing_order` integer, nullable
        - `email` string, nullable
        - `has_completed` boolean
        - `name` string
        - `type` 'recipient_group'
        - `members` DocumentDetailsRecipientGroupMember[]
          - `id` string
          - `first_name` string
          - `last_name` string
          - `email` string, nullable
          - `shared_link` string
          - `avatar` string, nullable
          - `signature_date` string, nullable
  - `grand_total` object: Document grand total.
    - `amount` string: Total amount.
    - `currency` string: Currency type.
  - `linked_objects` object[]: Document linked objects.
    - `provider` string: Linked object provider.
    - `entity_type` string: Linked object entity type.
    - `entity_id` string: Linked object entity ID.
    - `id` string: Linked object ID.
    - `children` object[]: Linked object children array.
      - `entity_type` string: Linked object child entity type.
      - `entity_id` string: Linked object child entity ID.
      - `id` string: Linked object child ID.
  - `status` 'document.draft' | 'document.sent' | 'document.completed' | 'document.uploaded' | 'document.error' | 'document.viewed' | 'document.waiting_approval' | 'document.approved' | 'document.rejected' | 'document.waiting_pay' | 'document.paid' | 'document.voided' | 'document.declined' | 'document.external_review' | 'document.scheduled'
  - `qes_status` 'pending' | 'in_progress' | 'completed': The status of the QES (Qualified Electronic Signature) for the document. It indicates whether the QES process is still pending or has been completed.
  - `approval_execution` object, nullable: Document approval execution.
    - `document_uuid` string: Decoded uuid of related RegularDocument instance.
    - `revision_number` integer: Consequent number of revision for related RegularDocument.
  - `version` string: Document version.
  - `lock` object, nullable: Active editing lock on the document, if any. `null` when the document is not locked or the lock has expired.
    - `locked_by_user_id` string: A unique identifier of the user holding the lock.
    - `lock_type` 'wopi_editing': Type of the active document lock.
    - `expires_at` string, date-time: ISO 8601 timestamp when the lock automatically expires.

## Other responses

- `401`: Authentication error
- `403`: Permission error
- `404`: Not found
- `409`: Conflict
- `429`: Too Many Requests

## Changes

- **2026-11-03** `b9a306b1a421`: 1 breaking, 5 warning, 11 info
  - the `pricing/quotes/items/sections/items/columns/items/hidden` response's property type changed from `string` to `boolean` for status `200`
  - added the new `annually` enum value to the `pricing/quotes/items/sections/items/items/items/billing_frequency` response property for the response status `200`
  - added the new `monthly` enum value to the `pricing/quotes/items/sections/items/items/items/billing_frequency` response property for the response status `200`
  - added the new `quarterly` enum value to the `pricing/quotes/items/sections/items/items/items/billing_frequency` response property for the response status `200`
  - …13 more

[Operation history](https://skmtc.dev/pandadoc/apis/pandadoc-public-api/changes/public/v1/documents/:id/details/get.md)

---

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