---
title: "Search for documents, templates, and document groups"
method: GET
path: "/v2/search"
---

# Search for documents, templates, and document groups

`GET /v2/search`

## Request

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

This endpoint allows API users to search across their documents, templates, document groups, and document group templates. Search covers all folders accessible to the user, including own, shared, and team folders. Results are sorted by the date updated, from newest to oldest.

Each `search_by` value uses its own matching logic and minimum `search_key` length:

| `search_by` value | Searches | Matching | Min `search_key` length |
|---|---|---|---|
| `name` | Entity name | Contains | 1 |
| `id` | Entity ID | Exact match | — |
| `inviter-email` | Inviter email | Prefix | 2 |
| `signer-email` | Signer email | Prefix | 2 |
| `document-text` | Text inside the document | Substring | 3 |

Matching is case-insensitive. Leading and trailing whitespace in `search_key` is trimmed before the length check. If `search_key` is shorter than the minimum for a given field, that field returns no results without a validation error. For `inviter-email` and `signer-email`, the prefix match applies to the first 40 characters of the email; a longer `search_key` matches by exact email value.

The maximum number of results before pagination is 1,000.

## Response `200`

Success. `entity_properties` content depends on `entity_type`. An empty result returns HTTP 200 with an empty `data` array and `meta.pagination.total` set to `0`. Document text and emails are used for matching only and are not returned in the response.

- object
  - `data` object[]: List of matching entities.
    - `id` string: ID of the entity.
    - `name` string: Name of the entity.
    - `owner` string: Email address of the entity owner.
    - `created` string: Unix timestamp of when the entity was created.
    - `updated` string: Unix timestamp of when the entity was last updated.
    - `folder_id` string: ID of the folder the entity belongs to.
    - `entity_type` string: Type of the entity. Possible values: `document`, `template`, `document-group`, `dgt`.
    - `entity_properties` object: Type-specific properties of the entity. Content varies by `entity_type`.
      - `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.
      - `state` string: State of the document group, for example `created` or `pending`.
      - `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.
        - `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.
      - `payments` unknown[]: List of payment requests attached to the document.
        - unknown
      - `requests` unknown[]: List of document requests.
        - unknown
      - `settings` object: Document-level settings and feature flags.
      - `documents` object[]: Documents in the document group.
        - `id` string: ID of the document.
        - `owner` object: Owner of the document.
          - `id` string: ID of the owner.
          - `email` string: Email address of the owner.
        - `roles` unknown[]: Roles assigned in the document. Empty if the document has no roles.
          - unknown
        - `updated` integer: Unix timestamp of the last update of the document.
        - `settings` unknown[]: Settings of the document.
          - unknown
        - `folder_id` string: ID of the folder that contains the document.
        - `thumbnail` object: Thumbnail URLs of the first page of the document.
          - `large` string: URL of the large thumbnail.
          - `small` string: URL of the small thumbnail.
          - `medium` string: URL of the medium thumbnail.
        - `has_fields` boolean: `true` if the document has fillable fields.
        - `page_count` integer: Number of pages in the document.
        - `signatures` object[]: Signatures added to the document.
          - `id` string: ID of the signature.
          - `created` string: Unix timestamp of when the signature was added.
          - `user_id` string: ID of the user who added the signature.
        - `document_name` string: Name of the document.
        - `field_invites` object[]: Field invites sent for the document.
          - `id` string: ID of the field invite.
          - `role` string: Name of the recipient role.
          - `action` string: Action the recipient must perform: `sign`, `view`, or `approve`.
          - `status` string: Status of the invite, for example `pending`, `fulfilled`, or `declined`.
          - `created` integer: Unix timestamp of when the invite was created.
          - `message` string: Message of the invite email.
          - `updated` integer: Unix timestamp of the last update of the invite.
          - `language` string: Language of the signing session and notification emails: `en`, `es`, or `fr`. `null` if not set.
          - `compliance` object: Compliance settings of the invite.
            - `cfr` string: 21 CFR Part 11 settings of the invite. `null` if not applied.
          - `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.
          - `signer_email` string: Email address of the recipient.
          - `signing_order` integer: Position of the recipient in the signing order.
          - `email_statuses` object[]: Email delivery events of the invite. Each object is one event.
            - `status` string: Email delivery status, for example `sent` or `delivered`.
            - `created_at` integer: Unix timestamp of when the event was recorded.
            - `last_reaction_at` integer: Unix timestamp of the last update of the event.
          - `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.
          - `expiration_days` integer: Number of days before the invite expires.
          - `expiration_time` integer: Unix timestamp of when the invite expires.
          - `payment_request` string: Payment request attached to the invite. `null` if there is none.
          - `is_full_declined` boolean: `true` if the recipient declined the invite.
          - `next_reminder_at` string: Unix timestamp of the next reminder. `null` if no reminder is scheduled.
          - `sms_sent_statuses` unknown[]: SMS delivery events of the invite. Empty for email invites.
            - unknown
          - `password_protected` string: `"1"` if the invite is password-protected, otherwise `"0"`.
          - `signer_phone_invite` string: Phone number the SMS invite was sent to. `null` for email invites.
        - `allow_to_remove` boolean: `true` if the document can be removed from the document group.
        - `freeform_invites` unknown[]: FreeForm invites sent for the document.
          - unknown
        - `shared_with_team` string: ID of the team the document is shared with. `null` if not shared.
        - `origin_document_id` string: ID of the source document if this document was created as a copy. `null` otherwise.
        - `has_unassigned_field` boolean: `true` if the document has fields not assigned to any role.
        - `has_credit_card_number` boolean: `true` if the document has a credit card number field.
      - `invite_id` string: ID of the document group invite. `null` if no invite was sent.
      - `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.
      - `origin_dgt` string: Document group template the document group was created from. `null` if not created from a template.
      - `page_count` string: Number of pages in the document, as a string.
      - `signatures` unknown[]: List of applied signature elements on the document.
        - unknown
      - `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` unknown[]: List of destinations to which the document has been exported.
        - unknown
      - `viewer_roles` unknown[]: List of viewer roles defined for the document.
        - unknown
      - `entity_labels` unknown[]: Labels assigned to the document, for example when an invite email could not be delivered. Empty if there are none.
        - unknown
      - `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` unknown[]: Decline details. Empty if the signer has not declined.
          - unknown
        - `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[]: Email delivery events of the invite. Each object is one event.
          - `status` string: Email delivery status, for example `sent` or `delivered`.
          - `created_at` integer: Unix timestamp of when the event was recorded.
          - `last_reaction_at` integer: Unix timestamp of the last update of the event.
        - `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
        - `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` string: `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"`.
      - `recently_used` string: Unix timestamp of the last time the document was used.
      - `approver_roles` unknown[]: List of approver roles defined for the document.
        - unknown
      - `sign_as_merged` boolean: `true` if the documents in the group are signed as one merged document.
      - `routing_details` object[]: Invite routing configuration, including signer order, `cc` recipients, and invite link instructions.
        - `cc` unknown[]: Email addresses that receive a copy of the completed document.
          - unknown
        - `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.
          - `attributes` unknown[]: Additional attributes of the role.
            - unknown
          - `inviter_role` boolean: `true` if the document owner is the recipient for this role.
          - `phone_invite` string: Phone number for an SMS invite. `null` for email invites.
          - `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.
          - `decline_by_signature` boolean: `true` if the recipient can decline to sign.
        - `cc_step` unknown[]: Steps after which CC recipients are notified.
          - unknown
        - `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.
      - `scheduled_invite` string: Scheduled invite of the document group. `null` if no invite is scheduled.
      - `freeform_invite_id` string: ID of the FreeForm invite. `null` if none was sent.
      - `origin_document_id` string: Identifier of the source document if this document was created as a copy. Can be `null`.
      - `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.
      - `viewer_field_invites` unknown[]: List of viewer field invites for the document.
        - unknown
      - `approver_field_invites` unknown[]: List of approver field invites for the document.
        - unknown
      - `document_group_template_info` unknown[]: Active document group templates that include this document. Empty if the document isn't part of any document group template.
        - unknown
      - `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.
  - `meta` object: Pagination details.
    - `pagination` object: Pagination details.
      - `count` integer: Number of results on the current page.
      - `links` object: Links to the adjacent pages. An empty array if there are no other pages.
        - `next` string: URL of the next page. Returned only if there is a next page.
        - `previous` string: URL of the previous page. Returned only if there is a previous page.
      - `total` integer: Total number of matching results.
      - `per_page` integer: Number of results per page.
      - `total_pages` integer: Total number of pages.
      - `current_page` integer: Current page number.

## Other responses

- `400`: * Wrong, expired, or missing token. * The `search_key` field is not a string. * The `search_key` field is empty. * The `search_by` field is not a string. * The `search_by` field is empty. * The `search_by` field values are not in the available value list: `name`, `id`, `inviter-email`, `signer-email`, `document-text`. * The `per_page` field is not a digit. * The `per_page` field value is 0 or less. * The `per_page` field value is greater than 20. * The `page` field is not a digit. * The `page` field value is 0 or less. * Could not find search info.
- `500`: * Internal API error.

---

[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)
