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

# Retrieve capabilities for a conversation

> Returns structured, conversation-aware capabilities metadata for all flows, including whether each flow is currently startable based on guard evaluation for the given conversation state. This endpoint is intended for use by custom actions and external integrations to build dynamic "what can you do?" responses without hard-coded flow lists.



## OpenAPI

````yaml /openapi/pro.yaml get /conversations/{conversation_id}/capabilities
openapi: 3.0.1
info:
  title: Rasa - Server Endpoints
  version: 1.0.0
  description: >-
    The Rasa server provides endpoints to retrieve trackers of conversations as
    well as endpoints to modify them. Additionally, endpoints for training and
    testing models are provided.
servers:
  - url: http://localhost:5005
    description: Local development server
security: []
paths:
  /conversations/{conversation_id}/capabilities:
    get:
      tags:
        - Tracker
      summary: Retrieve capabilities for a conversation
      description: >-
        Returns structured, conversation-aware capabilities metadata for all
        flows, including whether each flow is currently startable based on guard
        evaluation for the given conversation state. This endpoint is intended
        for use by custom actions and external integrations to build dynamic
        "what can you do?" responses without hard-coded flow lists.
      operationId: getConversationCapabilities
      parameters:
        - $ref: '#/components/parameters/conversation_id'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConversationCapabilities'
              example:
                flows:
                  - id: transfer_money
                    name: Transfer Money
                    description: Transfer money to another account.
                    guard_condition: null
                    startable: true
                    always_include_in_prompt: false
                    trigger_intents:
                      - transfer_money
                  - id: check_balance
                    name: Check Balance
                    description: Check your current account balance.
                    guard_condition: has_verified_account
                    startable: false
                    always_include_in_prompt: false
                    trigger_intents:
                      - check_balance
                      - check_my_balance
        '401':
          $ref: '#/components/responses/401NotAuthenticated'
        '403':
          $ref: '#/components/responses/403NotAuthorized'
        '404':
          description: Conversation not found.
        '409':
          $ref: '#/components/responses/409Conflict'
        '500':
          $ref: '#/components/responses/500ServerError'
      security:
        - TokenAuth: []
        - JWT: []
components:
  parameters:
    conversation_id:
      in: path
      name: conversation_id
      description: Id of the conversation
      example: default
      schema:
        type: string
      required: true
  schemas:
    ConversationCapabilities:
      type: object
      description: >-
        Structured, conversation-aware capabilities metadata returned by `GET
        /conversations/{conversation_id}/capabilities`.
      properties:
        flows:
          type: array
          description: >-
            List of all flows with their capability metadata, including whether
            each flow is currently startable for this conversation.
          items:
            $ref: '#/components/schemas/FlowCapability'
      required:
        - flows
    FlowCapability:
      type: object
      description: Capability metadata for a single flow.
      properties:
        id:
          type: string
          description: Unique identifier of the flow.
          example: transfer_money
        name:
          type: string
          description: >-
            Human-readable name of the flow. Uses the flow's custom name if
            defined, otherwise falls back to the flow id.
          example: Transfer Money
        description:
          type: string
          description: Description of what the flow does.
          example: Transfer money to another account.
          nullable: true
        guard_condition:
          type: string
          description: >-
            The guard condition expression that must be satisfied for the flow
            to be startable, if any.
          example: has_verified_account
          nullable: true
        startable:
          type: boolean
          description: >-
            Whether the flow can currently be started given the active
            conversation state and guard evaluation results.
          example: true
        always_include_in_prompt:
          type: boolean
          description: >-
            Whether the flow should always be included in the LLM prompt,
            regardless of its startability.
          example: false
        trigger_intents:
          type: array
          description: Sorted list of NLU intents that can trigger this flow.
          items:
            type: string
          example:
            - transfer_money
      required:
        - id
        - name
        - startable
        - always_include_in_prompt
        - trigger_intents
    Error:
      type: object
      properties:
        version:
          type: string
          description: Rasa version
        status:
          type: string
          enum:
            - failure
          description: Status of the requested action
        message:
          type: string
          description: Error message
        reason:
          type: string
          description: Error category
        details:
          type: object
          description: Additional error information
        help:
          type: string
          description: Optional URL to additonal material
        code:
          type: number
          description: HTTP status code
  responses:
    401NotAuthenticated:
      description: User is not authenticated.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            version: 1.0.0
            status: failure
            reason: NotAuthenticated
            message: User is not authenticated to access resource.
            code: 401
    403NotAuthorized:
      description: User has insufficient permission.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            version: 1.0.0
            status: failure
            reason: NotAuthorized
            message: User has insufficient permission to access resource.
            code: 403
    409Conflict:
      description: The request conflicts with the currently loaded model.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            version: 1.0.0
            status: failure
            reason: Conflict
            message: The request conflicts with the currently loaded model.
            code: 409
    500ServerError:
      description: An unexpected error occurred.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            version: 1.0.0
            status: ServerError
            message: An unexpected error occurred.
            code: 500
  securitySchemes:
    TokenAuth:
      type: apiKey
      in: query
      name: token
      description: >
        A plaintext token to secure your server, specified at startup in the
        argument `--auth-token thisismysecret`
    JWT:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >
        A JWT token that is signed using the JWT secret specified at startup in
        the argument `--jwt-secret thisismysecret`,

        using the `HS256` algorithm.


        The token's payload must contain an object under the `user` key,

        which in turn must contain the `username` and `role` attributes.

        The following is an example payload for a JWT token:


        ```json

        {
            "user": {
                "username": "<sender_id>",
                "role": "user"
            }
        }

        ```


        If the `role` is `admin`, all endpoints are accessible.

        If the `role` is `user`, endpoints with a `sender_id` parameter are only
        accessible

        if the `sender_id` matches the payload's `username` property.


        For the user trackers endpoint (`GET /users/{user_id}/trackers`), you
        should use `user_id` instead of `username` in the payload.

        In this case, the path `user_id` parameter is matched against the
        payload's `username` property. For example:


        ```json

        {
            "user": {
                "username": "<user_id>",
                "role": "user"
            }
        }

        ```

````