> ## Documentation Index
> Fetch the complete documentation index at: https://developer.meow.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get an information request form

> 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`.



## OpenAPI

````yaml GET /entities/{entity_id}/info-requests/{request_id}/schema
openapi: 3.1.0
info:
  title: Meow API
  description: >
    ## Overview


    The Meow API provides financial services and billing capabilities for your
    business.


    ### Core Features


    - **Financial data access**: access account information, transactions,
    balances, and payment networks.

    - **Crypto operations**: create and manage crypto contacts, and initiate
    USDC transfers across blockchain networks.

    - **Bill pay**: draft bills payable to your vendors and track them through
    payment.


    ### Bill Pay API


    The Bill Pay API lets you create bills for your vendors and track them
    through payment:


    - **Bill drafting**: create bills as drafts. Nothing is paid until someone
    approves the bill in the Meow dashboard.

    - **Attachments**: upload invoices and supporting documents to a bill.

    - **Bulk loads**: send an `Idempotency-Key` with every create so a retry
    never duplicates a bill. Drafting is capped at 500 bills per rolling 24
    hours per creator — your entity key, or the user a user-scoped key acts as.
    Creates past the cap return `429 Too Many Requests`.


    ### Billing API


    The Billing API lets you create and manage invoices and collect payments:


    - **Product management**: create and manage products with custom pricing.

    - **Customer management**: maintain invoicing customers with their
    addresses.

    - **Invoice creation**: generate invoices with line items, discounts, and
    custom notes.

    - **Payment options**: accept payments via ACH, wire, international wire,
    card, and USDC.

    - **Collection accounts**: configure accounts for payment collection.


    ### Getting Started


    Authenticate by sending your API key in the `x-api-key` request header.


    To scope requests to a specific entity, include the `x-entity-id` header.
    Use the `/api-keys/accessible-entities` endpoint to list all entities
    accessible by your API key.


    ### Rate Limits


    Each API key has a limit of 1,200 requests per minute, unless Meow has
    agreed a different limit with you. The limit works as a token bucket: you
    can spend the whole minute at once, and requests return steadily over the
    minute.


    Responses carry the `RateLimit-Policy` and `RateLimit` headers. They show
    your limit, the requests you have left, and the seconds until your full
    limit is back. These headers are informational today: going over the limit
    is logged, not rejected.


    A separate, coarser safeguard protects the API from abusive traffic and can
    reject requests with `429 Too Many Requests`. It returns a `Retry-After`
    header and a body with `error_code` set to `rate_limited` and a `message`,
    but not the quota headers above. Wait at least `Retry-After` seconds and add
    a small random delay. If the retry is limited again, back off exponentially.
    Send an `Idempotency-Key` when you retry a request that creates something or
    moves money.


    ### Error Responses


    Errors return JSON with `code`, `message`, and `debug_message`. The `code`
    aligns with FDX where possible; use `debug_message` for troubleshooting
    only.


    Common error codes:


    - `500`: Internal server error

    - `501`: Subsystem unavailable

    - `503`: Scheduled maintenance

    - `601`: Data not found

    - `602`: Customer not authorized

    - `701`: Account not found

    - `703`: Invalid input (including invalid date ranges)

    - `704`: Account type not supported

    - `705`: Account is closed

    - `801`: Transaction not found
  contact:
    name: Meow
    url: https://meow.com/
    email: support@meow.com
  version: 1.0.0
  license:
    name: Proprietary
    url: https://www.meow.com/terms-of-service
servers:
  - url: https://api.meow.com/v1
    description: Meow API Production
  - url: https://api.sandbox.meow.com/v1
    description: Meow API Sandbox
  - url: https://api.dev.meow.com/v1
    description: Meow API Development
security:
  - apiKeyAuth: []
tags:
  - name: API Keys
    description: Retrieve metadata about API keys and their accessible entities.
  - name: Accounts
    description: Access and manage accounts.
  - name: Approvals
  - name: Balances
    description: Retrieve account balances and available funds.
  - name: Bill Pay
  - name: Bills
    description: View and manage bills for vendor payments.
  - name: Cards
    description: Manage virtual and physical cards, and view transactions and insights.
  - name: Collection Accounts
    description: Manage accounts for payment collection.
  - name: Contacts
    description: Manage contacts for crypto and USDC transfers.
  - name: Customers
    description: Manage invoicing customers and their details.
  - name: Entities
  - name: Feature Access
    description: >-
      Request access to restricted features, such as international payments, and
      track the status of your requests.
  - name: Invoices
    description: Create and manage invoices.
  - name: Limits
  - name: Line Items
    description: Manage invoice line items.
  - name: Partner Onboarding
    description: Onboard entities using your partner API key.
  - name: Partner Webhooks
  - name: Payment Methods
    description: View available payment method types.
  - name: Payment Networks
    description: Manage payment networks and routing information.
  - name: Products
    description: Manage products and pricing for invoicing.
  - name: Reimbursements
    description: View reimbursement requests by employee.
  - name: Routing Numbers
    description: Validate routing numbers and retrieve bank information.
  - name: Security Policies
  - name: Simulations
    description: >-
      Trigger simulated events (inbound transfers, card authorizations,
      application approval) to test integrations end-to-end without real money
      movement. **Not available in production**: these endpoints exist only in
      sandbox and development environments and return `404 Not Found` in
      production.
  - name: Tax Forms
    description: Retrieve IRS tax forms (1099 family) issued for accounts.
  - name: Transactions
    description: Retrieve account transaction history and details.
  - name: Transfers
    description: >-
      Initiate ACH, wire, book, and crypto transfers, and retrieve transfer
      details.
  - name: Users
    description: View active users for your entity.
  - name: Webhooks
    description: Manage webhook subscriptions and inspect delivery history.
  - name: Wire Drawdowns
    description: >-
      Review vendor requests to draw funds by wire, and pre-authorize trusted
      vendors.
paths:
  /entities/{entity_id}/info-requests/{request_id}/schema:
    get:
      tags:
        - Entities
      summary: Get Info Request Form Schema
      description: >-
        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`.
      operationId: >-
        get_info_request_schema_entities__entity_id__info_requests__request_id__schema_get
      parameters:
        - name: request_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: >-
              The information request, as returned in
              `next_step.info_requests[].request_id`.
            title: Request Id
          description: >-
            The information request, as returned in
            `next_step.info_requests[].request_id`.
        - name: entity_id
          in: path
          required: true
          schema:
            type: string
            description: The entity being onboarded.
            title: Entity Id
          description: The entity being onboarded.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DDFormSchema'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimited'
      security:
        - apiKeyAuth:
            - accounts:read
components:
  schemas:
    DDFormSchema:
      properties:
        title:
          type: string
          title: Title
          description: Name of the form.
        pages:
          items:
            $ref: '#/components/schemas/DDPage'
          type: array
          title: Pages
          description: Pages of the form, in order.
      type: object
      required:
        - title
        - pages
      title: DDFormSchema
      description: 'A due-diligence form: everything it asks for, and how to validate it.'
    DDPage:
      properties:
        name:
          type: string
          title: Name
          description: >-
            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:
          type: string
          title: Title
          description: Heading to show for the page.
        elements:
          items:
            $ref: '#/components/schemas/DDElement'
          type: array
          title: Elements
          description: Elements on this page, in the order they should be shown.
      type: object
      required:
        - name
        - title
        - elements
      title: DDPage
      description: One page of a due-diligence form.
    CustomerApiError:
      oneOf:
        - $ref: '#/components/schemas/CustomerApiServiceError'
        - $ref: '#/components/schemas/CustomerApiGatewayError'
    CustomerApiGatewayError:
      type: object
      required:
        - error_code
        - message
      properties:
        error_code:
          type: string
        message:
          type: string
    DDElement:
      properties:
        type:
          $ref: '#/components/schemas/DDElementType'
          description: >-
            Kind of element, which decides the shape of its answer: a string for
            `text`, `comment`, `dropdown`, and `date`; a boolean for `boolean`;
            a number for `number`; a list of strings for `checkbox`,
            `text_list`, and `file_upload`; an object for `group`; a list of
            objects for `repeat`.
        name:
          type: string
          title: Name
          description: >-
            Key to submit this element's answer under, within its enclosing
            object.
        title:
          type: string
          title: Title
          description: >-
            Question or label to show. Also the name Meow uses when reporting a
            validation error on this element.
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: Supporting text explaining what the question is asking for.
        required:
          type: boolean
          title: Required
          description: >-
            Whether an answer is always required. See `required_when` for
            elements required only in some cases.
          default: false
        default_value:
          anyOf:
            - type: string
            - type: boolean
            - type: integer
            - type: number
            - items:
                type: string
              type: array
            - type: 'null'
          title: Default Value
          description: Value to prefill the element with.
        choices:
          anyOf:
            - items:
                $ref: '#/components/schemas/DDChoice'
              type: array
            - type: 'null'
          title: Choices
          description: >-
            Allowed options, for `dropdown` and `checkbox`. Submitting a value
            outside this list is rejected. `null` for elements with no fixed
            options.
        visible_when:
          anyOf:
            - $ref: '#/components/schemas/DDCondition'
            - $ref: '#/components/schemas/DDCompoundCondition'
            - type: 'null'
          title: Visible When
          description: >-
            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.
        required_when:
          anyOf:
            - $ref: '#/components/schemas/DDCondition'
            - $ref: '#/components/schemas/DDCompoundCondition'
            - type: 'null'
          title: Required When
          description: >-
            Require an answer only while the condition holds. Ignored when
            `required` is already `true`.
        validation:
          anyOf:
            - $ref: '#/components/schemas/DDValidation'
            - type: 'null'
          description: Length or value bounds for the answer. `null` when unbounded.
        multiple:
          type: boolean
          title: Multiple
          description: >-
            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.
          default: false
        elements:
          anyOf:
            - items:
                $ref: '#/components/schemas/DDElement'
              type: array
            - type: 'null'
          title: Elements
          description: >-
            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:
          anyOf:
            - type: integer
            - type: 'null'
          title: Min Items
          description: Fewest entries a `repeat` may have. `null` when unbounded.
        max_items:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Items
          description: Most entries a `repeat` may have. `null` when unbounded.
        file_upload_config:
          anyOf:
            - $ref: '#/components/schemas/DDFileUploadConfig'
            - type: 'null'
          description: Upload rules, for `file_upload`. `null` for every other type.
        input_format:
          anyOf:
            - type: string
              enum:
                - currency
                - percentage
            - type: 'null'
          title: Input Format
          description: >-
            How to present a `number` element — as currency or as a percentage.
            Formatting only; submit the plain number either way.
        component:
          anyOf:
            - type: string
            - type: 'null'
          title: Component
          description: >-
            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:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Exclude Countries
          description: >-
            ISO 3166-1 alpha-2 country codes to leave out of a `country_select`.
            `null` when nothing is excluded.
      type: object
      required:
        - type
        - name
        - title
      title: DDElement
      description: One question, group, or upload in a due-diligence form.
    CustomerApiServiceError:
      type: object
      required:
        - code
        - message
        - debug_message
      properties:
        code:
          type: integer
        message:
          type: string
        debug_message:
          type: string
    DDElementType:
      type: string
      enum:
        - text
        - comment
        - boolean
        - dropdown
        - checkbox
        - number
        - date
        - country_select
        - state_select
        - text_list
        - group
        - repeat
        - file_upload
        - confirm
      title: DDElementType
    DDChoice:
      properties:
        value:
          type: string
          title: Value
          description: Value to submit when this option is chosen.
        label:
          type: string
          title: Label
          description: Text to show the person choosing.
      type: object
      required:
        - value
        - label
      title: DDChoice
      description: One selectable option on a `dropdown` or `checkbox` element.
    DDCondition:
      properties:
        field:
          type: string
          title: Field
          description: >-
            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:
          $ref: '#/components/schemas/DDOperator'
          description: >-
            How to compare. `contains` and `contains_any` apply to list answers;
            `not_empty` ignores `value` and passes when the answer is present
            and non-blank.
        value:
          anyOf:
            - type: string
            - type: boolean
            - type: integer
            - type: number
            - items:
                type: string
              type: array
            - type: 'null'
          title: Value
          description: >-
            Value to compare the answer against. Unused by `not_empty`, and a
            list for `contains_any`.
      type: object
      required:
        - field
        - operator
      title: DDCondition
      description: A test against another answer, used to show or require an element.
    DDCompoundCondition:
      properties:
        logical_operator:
          $ref: '#/components/schemas/DDLogicalOperator'
          description: Whether every nested condition must pass, or just one.
        conditions:
          items:
            anyOf:
              - $ref: '#/components/schemas/DDCondition'
              - $ref: '#/components/schemas/DDCompoundCondition'
          type: array
          title: Conditions
          description: Conditions to combine. These may nest further.
      type: object
      required:
        - logical_operator
        - conditions
      title: DDCompoundCondition
      description: Several conditions combined into one test.
    DDValidation:
      properties:
        min_length:
          anyOf:
            - type: integer
            - type: 'null'
          title: Min Length
          description: Fewest characters a text answer may have.
        max_length:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Length
          description: Most characters a text answer may have.
        min_value:
          anyOf:
            - type: number
            - type: 'null'
          title: Min Value
          description: Smallest value a number answer may take, inclusive.
        max_value:
          anyOf:
            - type: number
            - type: 'null'
          title: Max Value
          description: Largest value a number answer may take, inclusive.
      type: object
      title: DDValidation
      description: Bounds an answer must satisfy. Each bound is `null` when unconstrained.
    DDFileUploadConfig:
      properties:
        accepted_types:
          items:
            type: string
          type: array
          title: Accepted Types
          description: File extensions the upload accepts, such as `pdf` or `png`.
        proof_type:
          anyOf:
            - type: string
            - type: 'null'
          title: Proof Type
          description: >-
            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:
          type: integer
          title: Max Files
          description: Most files that may be attached to this element.
          default: 1
      type: object
      required:
        - accepted_types
      title: DDFileUploadConfig
      description: Upload rules for a `file_upload` element.
    DDOperator:
      type: string
      enum:
        - eq
        - neq
        - contains
        - contains_any
        - not_empty
      title: DDOperator
    DDLogicalOperator:
      type: string
      enum:
        - and
        - or
      title: DDLogicalOperator
  responses:
    BadRequest:
      description: The request could not be processed.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CustomerApiError'
    Unauthorized:
      description: Authentication failed.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CustomerApiGatewayError'
    Forbidden:
      description: The API key is not authorized for this operation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CustomerApiGatewayError'
    RateLimited:
      description: Too many requests.
      headers:
        Retry-After:
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CustomerApiGatewayError'
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: Your Meow API key, sent in the `x-api-key` header for authentication.
      x-scopes:
        - accounts:read
        - accounts:write
        - accounts:payment-networks
        - accounts:transactions
        - accounts:balances
        - accounts:statements
        - accounts:tax-documents
        - entity:create
        - transfers:crypto:write
        - transfers:usdc:write
        - transfers:ach:write
        - transfers:wire:write
        - transfers:book:write
        - transfers:international:write
        - contacts:read
        - contacts:write
        - billing:products:read
        - billing:products:write
        - billing:customers:read
        - billing:customers:write
        - billing:invoices:read
        - billing:invoices:write
        - billing:accounts:read
        - billpay:read
        - billpay:write
        - onboarding:read
        - onboarding:write
        - cards:read
        - cards:write
        - reimbursements:read
        - users:read
        - users:write
        - webhooks:read
        - webhooks:write
        - partner:onboarding:read
        - partner:onboarding:write
        - partner:webhooks:read
        - partner:webhooks:write
        - simulations:write
        - banking:limits:read
        - banking:limits:write
        - feature-access:read
        - feature-access:write

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.