---
title: "Get Info Request Form Schema"
method: GET
path: "/entities/{entity_id}/info-requests/{request_id}/schema"
tags: ["Entities"]
---

# Get Info Request Form Schema

`GET /entities/{entity_id}/info-requests/{request_id}/schema`

## Request

- Base URL: `https://api.meow.com/v1`
- URL: `https://api.meow.com/v1/entities/{entity_id}/info-requests/{request_id}/schema`
- Auth: API key in header `x-api-key`
- TypeScript: <https://skmtc.dev/meow/apis/meow-api/docs/entities/:entity_id/info-requests/:request_id/schema/get.ts> (a function with typed inputs; its response is checked against the schema)

The form describing everything an information request collects. Documents and follow-up questions are elements of one schema: a `file_upload` element carries the `proof_type` to pass to the document upload endpoints, and the remaining elements are questions to answer. Take `request_id` from `next_step.info_requests[].request_id`.

## Path parameters

- `request_id` string, uuid, required: The information request, as returned in `next_step.info_requests[].request_id`.
- `entity_id` string, required: The entity being onboarded.

## Response `200`

Successful Response

- EntityInfoRequestSchema
  - `title` string, required: Name of the form.
  - `pages` DDPage[], required: Pages of the form, in order.
    - `name` string, required: Identifier for the page. Pages group elements for display only — answers are submitted in one flat object keyed by element name, not nested per page.
    - `title` string, required: Heading to show for the page.
    - `elements` DDElement[], required: Elements on this page, in the order they should be shown.
      - `type` 'text' | 'comment' | 'boolean' | 'dropdown' | 'checkbox' | 'number' | 'date' | 'country_select' | 'state_select' | 'text_list' | 'group' | 'repeat' | 'file_upload' | 'confirm', required
      - `name` string, required: Key to submit this element's answer under, within its enclosing object.
      - `title` string, required: Question or label to show. Also the name Meow uses when reporting a validation error on this element.
      - `description` string, nullable: Supporting text explaining what the question is asking for.
      - `required` boolean: Whether an answer is always required. See `required_when` for elements required only in some cases.
      - `sensitive` boolean: Encrypt this text answer and mask it in forms and ordinary responses.
      - `default_value` union: Value to prefill the element with.
        - string
        - boolean
        - integer
        - number
        - string[]
      - `choices` DDChoice[], nullable: Allowed options, for `dropdown` and `checkbox`. Submitting a value outside this list is rejected. `null` for elements with no fixed options.
        - `value` string, required: Value to submit when this option is chosen.
        - `label` string, required: Text to show the person choosing.
      - `visible_when` union: Show this element only while the condition holds. While it does not hold, the element is skipped entirely and is not validated, even if it is required. `null` means always shown.
        - DDCondition: A test against another answer, used to show or require an element.
          - `field` string, required: Name of the element to test, resolved against the same object this element lives in. Use `parent.child` to reach into a `group`, or into every item of a `repeat`.
          - `operator` 'eq' | 'neq' | 'contains' | 'contains_any' | 'not_empty', required
          - `value` union: Value to compare the answer against. Unused by `not_empty`, and a list for `contains_any`.
            - string
            - boolean
            - integer
            - number
            - string[]
        - DDCompoundCondition: Several conditions combined into one test.
          - `logical_operator` 'and' | 'or', required
          - `conditions` union[], required: Conditions to combine. These may nest further.
            - union
              - …
      - `required_when` union: Require an answer only while the condition holds. Ignored when `required` is already `true`.
        - DDCondition: A test against another answer, used to show or require an element.
          - `field` string, required: Name of the element to test, resolved against the same object this element lives in. Use `parent.child` to reach into a `group`, or into every item of a `repeat`.
          - `operator` 'eq' | 'neq' | 'contains' | 'contains_any' | 'not_empty', required
          - `value` union: Value to compare the answer against. Unused by `not_empty`, and a list for `contains_any`.
            - string
            - boolean
            - integer
            - number
            - string[]
        - DDCompoundCondition: Several conditions combined into one test.
          - `logical_operator` 'and' | 'or', required
          - `conditions` union[], required: Conditions to combine. These may nest further.
            - union
              - …
      - `validation` DDValidation: Bounds an answer must satisfy. Each bound is `null` when unconstrained.
        - `min_length` integer, nullable: Fewest characters a text answer may have.
        - `max_length` integer, nullable: Most characters a text answer may have.
        - `min_value` number, nullable: Smallest value a number answer may take, inclusive.
        - `max_value` number, nullable: Largest value a number answer may take, inclusive.
      - `multiple` boolean: For `country_select` and `state_select`, whether more than one may be chosen — and so whether the answer is a list of strings rather than a single string.
      - `elements` DDElement[], nullable: Child elements, for `group` and `repeat`. A `group`'s answer is an object keyed by these children's names; a `repeat`'s answer is a list of such objects. `null` for every other type.
      - `min_items` integer, nullable: Fewest entries a `repeat` may have. `null` when unbounded.
      - `max_items` integer, nullable: Most entries a `repeat` may have. `null` when unbounded.
      - `file_upload_config` DDFileUploadConfig: Upload rules for a `file_upload` element.
        - `accepted_types` string[], required: File extensions the upload accepts, such as `pdf` or `png`.
        - `proof_type` string, nullable: Document type this element collects. Pass it to the document upload endpoints so the file is filed against the right requirement. `null` on uploads that are not tied to a document requirement.
        - `max_files` integer: Most files that may be attached to this element.
      - `input_format` 'currency' | 'percentage', nullable: How to present a `number` element — as currency or as a percentage. Formatting only; submit the plain number either way.
      - `component` string, nullable: Name of a purpose-built control to render instead of the default one for `type`. Rendering only; it does not change the answer's shape. `null` for the default control.
      - `exclude_countries` string[], nullable: ISO 3166-1 alpha-2 country codes to leave out of a `country_select`. `null` when nothing is excluded.
  - `tin_collection` TinCollectionResponse
    - `kind` 'ein' | 'ssn' | 'itin' | 'foreign_tin', required
    - `country` 'AW' | 'AF' | 'AO' | 'AI' | 'AX' | 'AL' | 'AD' | 'AE' | 'AR' | 'AM' | 'AS' | 'AQ' | 'TF' | 'AG' | 'AU' | 'AT' | 'AZ' | 'BI' | 'BE' | 'BJ' | 'BQ' | 'BF' | 'BD' | 'BG' | 'BH' | 'BS' | 'BA' | 'BL' | 'BY' | 'BZ' | 'BM' | 'BO' | 'BR' | 'BB' | 'BN' | 'BT' | 'BV' | 'BW' | 'CF' | 'CA' | 'CC' | 'CH' | 'CL' | 'CN' | 'CI' | 'CM' | 'CD' | 'CG' | 'CK' | 'CO' | 'KM' | 'CV' | 'CR' | 'CU' | 'CW' | 'CX' | 'KY' | 'CY' | 'CZ' | 'DE' | 'DJ' | 'DM' | 'DK' | 'DO' | 'DZ' | 'EC' | 'EG' | 'ER' | 'EH' | 'ES' | 'EE' | 'ET' | 'FI' | 'FJ' | 'FK' | 'FR' | 'FO' | 'FM' | 'GA' | 'GB' | 'GE' | 'GG' | 'GH' | 'GI' | 'GN' | 'GP' | 'GM' | 'GW' | 'GQ' | 'GR' | 'GD' | 'GL' | 'GT' | 'GF' | 'GU' | 'GY' | 'HK' | 'HM' | 'HN' | 'HR' | 'HT' | 'HU' | 'ID' | 'IM' | 'IN' | 'IO' | 'IE' | 'IR' | 'IQ' | 'IS' | 'IL' | 'IT' | 'JM' | 'JE' | 'JO' | 'JP' | 'KZ' | 'KE' | 'KG' | 'KH' | 'KI' | 'KN' | 'KR' | 'KW' | 'LA' | 'LB' | 'LR' | 'LY' | 'LC' | 'LI' | 'LK' | 'LS' | 'LT' | 'LU' | 'LV' | 'MO' | 'MF' | 'MA' | 'MC' | 'MD' | 'MG' | 'MV' | 'MX' | 'MH' | 'MK' | 'ML' | 'MT' | 'MM' | 'ME' | 'MN' | 'MP' | 'MZ' | 'MR' | 'MS' | 'MQ' | 'MU' | 'MW' | 'MY' | 'YT' | 'NA' | 'NC' | 'NE' | 'NF' | 'NG' | 'NI' | 'NU' | 'NL' | 'NO' | 'NP' | 'NR' | 'NZ' | 'OM' | 'PK' | 'PA' | 'PN' | 'PE' | 'PH' | 'PW' | 'PG' | 'PL' | 'PR' | 'KP' | 'PT' | 'PY' | 'PS' | 'PF' | 'QA' | 'RE' | 'RO' | 'RU' | 'RW' | 'SA' | 'SD' | 'SN' | 'SG' | 'GS' | 'SH' | 'SJ' | 'SB' | 'SL' | 'SV' | 'SM' | 'SO' | 'PM' | 'RS' | 'SS' | 'ST' | 'SR' | 'SK' | 'SI' | 'SE' | 'SZ' | 'SX' | 'SC' | 'SY' | 'TC' | 'TD' | 'TG' | 'TH' | 'TJ' | 'TK' | 'TM' | 'TL' | 'TO' | 'TT' | 'TN' | 'TR' | 'TV' | 'TW' | 'TZ' | 'UG' | 'UA' | 'UM' | 'UY' | 'US' | 'UZ' | 'VA' | 'VC' | 'VE' | 'VG' | 'VI' | 'VN' | 'VU' | 'WF' | 'WS' | 'XK' | 'YE' | 'ZA' | 'ZM' | 'ZW', required
    - `saved` boolean, required: Whether a number has been saved securely. Its value is never returned.
    - `submitted` boolean, required: Whether the saved number has been submitted and can no longer be replaced.
    - `subject_type` 'business' | 'representative', required
    - `subject_name` string, required: The business or representative whose number you must provide.

## Other responses

- `400`: The request could not be processed.
- `401`: Authentication failed.
- `403`: The API key is not authorized for this operation.
- `429`: Too many requests.

---

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