Slack Dialog API

Slack's Dialog API lets apps open form-like popups inside Slack to collect structured input from users. Apps trigger a dialog (often from a slash command, message action, or interactive message) by calling dialog.open with a short-lived trigger_id, then present fields like text inputs, textareas, and select menus (including dynamic, server-powered options).

OpenAPI Specification

slack-dialog-openapi.yml Raw ↑
openapi: 3.1.0
info:
  version: "1.0"
  title: Slack Dialog API
  description: "Slack\x19s Dialog API lets apps open form-like popups inside Slack to collect structured input from users. Apps trigger a dialog (often from a slash command, message action, or interactive
    message) by calling dialog.open with a short-lived trigger_id, then present fields like text inputs, textareas, and select menus (including dynamic, server-powered options). When users submit or cancel,
    Slack sends a dialog_submission or dialog_cancellation payload to the app, which can validate inputs and send dialog_errors for inline feedback before completing the workflow. Dialogs are ephemeral
    to the user and well-suited for tasks like creating tickets, requesting PTO, or gathering parameters. Note: Slack now recommends using Block Kit modals via the Views API, which supersede legacy dialogs."
paths:
  /dialog.open:
    get:
      tags:
      - Get
      - Open
      description: Open a dialog with a user
      externalDocs:
        description: API method documentation
        url: https://api.slack.com/methods/dialog.open
      operationId: getDialogOpen
      parameters:
      - name: token
        in: header
        description: 'Authentication token. Requires scope: `none`'
        required: true
        schema:
          type: string
      - name: dialog
        in: query
        description: The dialog definition. This must be a JSON-encoded string.
        required: true
        schema:
          type: string
      - name: trigger_id
        in: query
        description: Exchange a trigger to post to the user.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Typical success response is quite minimal.
          content:
            application/json:
              schema:
                title: dialog.open schema
                required:
                - ok
                type: object
                properties:
                  ok:
                    $ref: '#/components/schemas/defs_ok_true'
                additionalProperties: false
                description: Schema for successful response from dialog.open method
              example:
                ok: true
        default:
          description: >-
            Typical error response, before getting to any possible validation
            errors.
          content:
            application/json:
              schema:
                title: dialog.open error schema
                required:
                - error
                - ok
                type: object
                properties:
                  callstack:
                    type: string
                    description: 'Note: PHP callstack is only visible in dev/qa'
                  error:
                    type: string
                    enum:
                    - validation_errors
                    - missing_trigger
                    - missing_dialog
                    - trigger_exchanged
                    - trigger_expired
                    - invalid_trigger
                    - app_missing_action_url
                    - cannot_create_dialog
                    - failed_sending_dialog
                    - not_authed
                    - invalid_auth
                    - account_inactive
                    - token_revoked
                    - no_permission
                    - org_login_required
                    - invalid_arg_name
                    - invalid_array_arg
                    - invalid_charset
                    - invalid_form_data
                    - invalid_post_type
                    - missing_post_type
                    - team_added_to_org
                    - invalid_json
                    - json_not_object
                    - request_timeout
                    - upgrade_required
                    - fatal_error
                  ok:
                    $ref: '#/components/schemas/defs_ok_false'
                additionalProperties: false
                description: Schema for error response from dialog.open method
              example:
                error: missing_trigger
                ok: false
      security:
      - slackAuth:
        - none
      summary: Slack Get Dialog Open
      x-api-evangelist-processing:
        GenerateOperationSummariesFromPath: true
        PascalCaseOperationSummaries: true
        CaselCaseOperationIds: true
        ChooseTags: true
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  schemas: {}
tags:
- name: Get
- name: Open