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

# Submit Human Input Form

> Submit the recipient's response to a paused Human Input form. The workflow resumes on acceptance; use [Stream Workflow Events](/api-reference/workflows/stream-workflow-events) to follow subsequent events. Requires **WebApp** delivery.



## OpenAPI

````yaml /en/api-reference/openapi_workflow.json post /form/human_input/{form_token}
openapi: 3.0.1
info:
  title: Workflow App API
  description: >-
    Workflow applications offer non-session support and are ideal for
    translation, article writing, summarization AI, and more.
  version: 1.0.0
servers:
  - url: '{api_base_url}'
    description: >-
      The base URL for the Workflow App API. Replace {api_base_url} with the
      actual API base URL.
    variables:
      api_base_url:
        default: https://api.dify.ai/v1
        description: Actual base URL of the API
security:
  - ApiKeyAuth: []
tags:
  - name: Workflows
    description: Operations for executing and managing workflows.
  - name: Files
    description: File upload and download operations.
  - name: End Users
    description: Operations related to end user information.
  - name: TTS
    description: Audio-to-text and text-to-audio conversion.
  - name: Applications
    description: Application settings, parameters, and metadata.
  - name: Human Input
    description: Endpoints for resuming paused workflows that require human input.
paths:
  /form/human_input/{form_token}:
    post:
      tags:
        - Human Input
      summary: Submit Human Input Form
      description: >-
        Submit the recipient's response to a paused Human Input form. The
        workflow resumes on acceptance; use [Stream Workflow
        Events](/api-reference/workflows/stream-workflow-events) to follow
        subsequent events. Requires **WebApp** delivery.
      operationId: submitWorkflowHumanInputForm
      parameters:
        - name: form_token
          in: path
          required: true
          schema:
            type: string
          description: >-
            Access token for the paused form, returned in the
            `human_input_required` event from [Run
            Workflow](/api-reference/workflows/run-workflow) in streaming mode.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - inputs
                - action
                - user
              properties:
                inputs:
                  type: object
                  additionalProperties: true
                  description: >-
                    Recipient-supplied values keyed by input
                    `output_variable_name`.
                action:
                  type: string
                  description: >-
                    ID of the action button the recipient selected. Must match
                    one of the `id` values from the form's `user_actions` list
                    (returned by [Get Human Input
                    Form](/api-reference/human-input/get-human-input-form)).
                  maxLength: 20
                  pattern: ^[A-Za-z_][A-Za-z0-9_]*$
                user:
                  type: string
                  description: End-user identifier for the submitter.
            examples:
              approve:
                summary: Request Example
                value:
                  inputs:
                    comment: Looks good to ship
                  action: approve
                  user: abc-123
      responses:
        '200':
          description: Form submitted successfully. The response body is an empty object.
          content:
            application/json:
              schema:
                type: object
              examples:
                success:
                  summary: Response Example
                  value: {}
        '400':
          description: >-
            - `bad_request` : Form recipient type is invalid.

            - `invalid_form_data` : Submission failed validation against the
            form definition.
          content:
            application/json:
              examples:
                bad_request:
                  summary: bad_request
                  value:
                    status: 400
                    code: bad_request
                    message: Form recipient type is invalid
                invalid_form_data:
                  summary: invalid_form_data
                  value:
                    status: 400
                    code: invalid_form_data
                    message: 'Missing required inputs: comment'
        '404':
          description: '`not_found` : Form not found.'
          content:
            application/json:
              examples:
                not_found:
                  summary: not_found
                  value:
                    status: 404
                    code: not_found
                    message: Form not found
        '412':
          description: >-
            - `human_input_form_submitted` : Form already submitted. Forms are
            one-shot; the first response wins regardless of which user submits
            it.

            - `human_input_form_expired` : The form's expiration time passed
            before submission arrived.
          content:
            application/json:
              examples:
                human_input_form_submitted:
                  summary: human_input_form_submitted
                  value:
                    status: 412
                    code: human_input_form_submitted
                    message: >-
                      This form has already been submitted by another user,
                      form_id=a1b2c3d4-e5f6-7890-abcd-ef1234567890
                human_input_form_expired:
                  summary: human_input_form_expired
                  value:
                    status: 412
                    code: human_input_form_expired
                    message: >-
                      This form has expired,
                      form_id=a1b2c3d4-e5f6-7890-abcd-ef1234567890
components:
  securitySchemes:
    ApiKeyAuth:
      type: http
      scheme: bearer
      bearerFormat: API_KEY
      description: >-
        API Key authentication. For all API requests, include your API Key in
        the `Authorization` HTTP Header, prefixed with `Bearer `. Example:
        `Authorization: Bearer {API_KEY}`. **Strongly recommend storing your API
        Key on the server-side, not shared or stored on the client-side, to
        avoid possible API-Key leakage that can lead to serious consequences.**

````