# Discover Fin's capabilities

Return a machine-readable, per-user list of what Fin can do for a given end user, so an
orchestrating agent can decide which endpoint to call.

The response is audience-matched to the supplied user: each live, API-triggerable
procedure is checked against that user before being included, alongside the static
reply and ask actions.

Endpoint: POST /fin/capabilities
Version: Preview
Security: bearerAuth

## Header parameters:

  - `Intercom-Version` (string)
    Intercom API version.By default, it's equal to the version set in the app package.
    Enum: "1.0", "1.1", "1.2", "1.3", "1.4", "2.0", "2.1", "2.2", "2.3", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "Preview"

## Request fields (application/json):

  - `user` (object, required)
    A user object representing the user in a Fin Agent conversation.

  - `user.id` (string, required)
    The ID of the user. This value will be used to uniquely identify the user
during a conversation with Fin. Maps to the user_id field on the Intercom User object.
    Example: "123456"

  - `user.name` (string)
    The name of the user.
    Example: "John Doe"

  - `user.email` (string)
    The email of the user.
    Example: "john.doe@example.com"

  - `user.attributes` (object)
    A hash of attributes associated with the user.
Attributes can be used by Fin to target content and responses.
Limit to 10 attributes.
    Example: {"plan_type":"Pro","subscription_status":"active"}

## Response 200 fields (application/json):

  - `version` (string)
    The API version the capabilities document was generated for.
    Example: "Preview"

  - `capabilities` (array)
    The list of capabilities available to this user.

  - `capabilities.type` (string)
    The kind of capability — procedure for a runnable procedure, or a static action such as reply, ask, or escalate.
    Example: "procedure"

  - `capabilities.id` (string)
    The procedure ID. Present only when type is procedure.
    Example: "12345"

  - `capabilities.name` (string)
    The procedure name. Present only when type is procedure.
    Example: "Reset password"

  - `capabilities.description` (string)
    A human-readable description of the capability.
    Example: "Walk the user through resetting their password."

  - `capabilities.endpoint` (string)
    The endpoint path to call to use this capability.
    Example: "/fin/procedures/12345/run"

  - `capabilities.method` (string)
    The HTTP method to use.
    Example: "POST"

## Response 400 fields (application/json):

  - `type` (string, required)
    The type is error.list
    Example: "error.list"

  - `request_id` (string,null)
    Example: "f93ecfa8-d08a-4325-8694-89aeb89c8f85"

  - `errors` (array, required)
    An array of one or more error objects

  - `errors.code` (string, required)
    A string indicating the kind of error, used to further qualify the HTTP response code
    Example: "unauthorized"

  - `errors.message` (string,null)
    Optional. Human readable description of the error.
    Example: "Access Token Invalid"

  - `errors.field` (string,null)
    Optional. Used to identify a particular field or query parameter that was in error.
    Example: "email"


