# Update a Fin Task

You can update the title and description of an existing Fin Task, and set the audience segments it is available to. `title` and `description` must always be sent together, including when you only want to change `segment_ids`.

Endpoint: PUT /fin/tasks/{id}
Version: Preview
Security: bearerAuth

## Path parameters:

  - `id` (string, required)
    The unique identifier of a given Fin Task

## Header parameters:

  - `Intercom-Version` (string)

## Request fields (application/json):

  - `title` (string, required)
    The title of the Fin Task. Cannot exceed 255 characters. Must be sent together with `description`.
    Example: Refund request (updated)

  - `description` (string, required)
    The description of the Fin Task. Must be sent together with `title`.
    Example: Handles refund requests end to end

  - `segment_ids` (array)
    The ids of the audience segments the Fin Task is available to. This replaces the task's current segments, so send an empty array to remove them all. Each id must be an integer.
    Example: [12]

## Response 200 fields (application/json):

  - `type` (string)
    Always task.
    Example: task

  - `id` (string)
    The unique identifier for the Fin Task.
    Example: 1

  - `title` (string)
    The title of the Fin Task.
    Example: Refund request

  - `description` (string)
    The description of the Fin Task.
    Example: Handles refund requests end to end

  - `state` (string)
    Whether the Fin Task is live or still a draft.
    Enum: "live", "draft"

  - `created_at` (string)
    The time the Fin Task was created, as an ISO 8601 timestamp.
    Example: 2026-01-24T10:01:20Z

  - `updated_at` (string)
    The last time the Fin Task was updated, as an ISO 8601 timestamp.
    Example: 2026-01-24T10:01:20Z

  - `segment_ids` (array)
    The ids of the audience segments the Fin Task is available to. Empty when it has none.
    Example: [12]

## Response 400 fields (application/json):

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

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

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

  - `errors.code` (any, required)
    A string indicating the kind of error, used to further qualify the HTTP response code. A few request validation errors send an HTTP status code as an integer here instead, for example `422`.
    Example: unauthorized

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

## Response 401 fields (application/json):

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

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

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

  - `errors.code` (any, required)
    A string indicating the kind of error, used to further qualify the HTTP response code. A few request validation errors send an HTTP status code as an integer here instead, for example `422`.
    Example: unauthorized

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

## Response 404 fields (application/json):

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

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

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

  - `errors.code` (any, required)
    A string indicating the kind of error, used to further qualify the HTTP response code. A few request validation errors send an HTTP status code as an integer here instead, for example `422`.
    Example: unauthorized

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

