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

# Update a task

> Change a task's status, assignee, or both, the same as making the change in the dashboard. Send status, assigned_to, or both. Any other key returns 400. Setting status to in_progress, on_hold, or done without assigned_to can assign the task to the key's creator when they have Self assign on. Requests from this playground go to production. Customer API.




## OpenAPI

````yaml /openapi.yaml patch /tasks/{task_id}
openapi: 3.0.0
info:
  title: Answering Agent API
  description: >
    The Customer API reads a team's conversations, transcripts, recordings,
    tasks, contacts, and reports. It also updates tasks and adds notes to them.
    The Partner API lets reseller accounts manage organizations, users,
    locations, partner links, and embed tokens. Both use an X-API-KEY header.
    Requests from this playground go to production.
  version: 1.0.0
servers:
  - url: https://answeringagent.com/api/v1
    description: Production
security: []
tags:
  - name: Account
    description: Customer API. Your team, phone lines, and members.
  - name: Conversations
    description: >-
      Customer API. Calls, texts, website chats, and emails, with transcripts
      and recordings.
  - name: Tasks
    description: >-
      Customer API. Follow-up tasks. Read them, update their status or assignee,
      and add notes.
  - name: Contacts
    description: Customer API. Your customers.
  - name: Reports
    description: Customer API. Report metrics, totals, and breakdowns.
  - name: Organizations
    description: Partner API, reseller accounts only.
  - name: Users
    description: Partner API, reseller accounts only.
  - name: Locations
    description: Partner API, reseller accounts only.
  - name: Account Linking
    description: Partner API, reseller accounts only.
  - name: Embed Tokens
    description: Partner API, reseller accounts only.
paths:
  /tasks/{task_id}:
    patch:
      tags:
        - Tasks
      summary: Update a task
      description: >
        Change a task's status, assignee, or both, the same as making the change
        in the dashboard. Send status, assigned_to, or both. Any other key
        returns 400. Setting status to in_progress, on_hold, or done without
        assigned_to can assign the task to the key's creator when they have Self
        assign on. Requests from this playground go to production. Customer API.
      operationId: updateTask
      parameters:
        - in: path
          name: task_id
          required: true
          schema:
            type: string
            pattern: ^(conversation|form-submission)-\d+$
            example: conversation-184532
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              properties:
                status:
                  type: string
                  enum:
                    - open
                    - in_progress
                    - on_hold
                    - done
                assigned_to:
                  type: integer
                  nullable: true
                  description: >-
                    A team member id, from a task's assignee.id or members[].id
                    in GET /account. Null unassigns.
                expected_status:
                  type: string
                  enum:
                    - open
                    - in_progress
                    - on_hold
                    - done
                  description: >-
                    Apply only if the task still has this status. A task that
                    never had a status counts as open.
                expected_assigned_to:
                  type: integer
                  nullable: true
                  description: Apply only if the task still has this assignee.
            example:
              status: done
              assigned_to: 9034
              expected_status: open
      responses:
        '200':
          description: >
            The updated task. When the change takes the task out of what the key
            can see, the change is saved and the body is only id, status,
            assignee, and visible false.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/TaskDetail'
                  - type: object
                    required:
                      - id
                      - status
                      - assignee
                      - visible
                    properties:
                      id:
                        type: string
                        example: conversation-184532
                      status:
                        $ref: '#/components/schemas/TaskStatus'
                      assignee:
                        anyOf:
                          - $ref: '#/components/schemas/Person'
                          - $ref: '#/components/schemas/NullValue'
                      visible:
                        type: boolean
                        enum:
                          - false
        '400':
          $ref: '#/components/responses/CustomerBadRequest'
        '401':
          $ref: '#/components/responses/CustomerUnauthorized'
        '403':
          $ref: '#/components/responses/CustomerForbidden'
        '404':
          $ref: '#/components/responses/CustomerTaskNotFound'
        '405':
          $ref: '#/components/responses/CustomerMethodNotAllowed'
        '409':
          description: The expected status or assignee no longer matches. Nothing changed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerError'
        '422':
          description: >-
            The dashboard would refuse the same change, for example because
            assigned_to is not a member of the team. The error gives the reason.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerError'
        '429':
          $ref: '#/components/responses/CustomerRateLimited'
      security:
        - ApiKeyAuth: []
components:
  schemas:
    TaskDetail:
      allOf:
        - $ref: '#/components/schemas/Task'
        - type: object
          properties:
            description:
              type: string
              nullable: true
              maxLength: 5000
    TaskStatus:
      type: string
      enum:
        - open
        - in_progress
        - on_hold
        - done
    Person:
      type: object
      description: >-
        A team member. The id is what assigned_to and report
        filters.team_member_ids take.
      properties:
        id:
          type: integer
          example: 9034
        name:
          type: string
          example: Priya Shah
    NullValue:
      description: No value.
      type: object
      nullable: true
      enum:
        - null
    CustomerError:
      type: object
      required:
        - error
        - code
      properties:
        error:
          type: string
          description: A message for people. The text can change.
          example: That conversation is not available.
        code:
          type: string
          description: A stable code to branch on.
          enum:
            - invalid_request
            - unauthorized
            - forbidden
            - not_found
            - method_not_allowed
            - conflict
            - unprocessable
            - rate_limited
            - internal
          example: not_found
        issues:
          type: array
          description: >-
            Present when code is invalid_request. One entry for each input that
            failed validation.
          items:
            type: object
            properties:
              path:
                type: array
                items: {}
              message:
                type: string
    Task:
      type: object
      properties:
        id:
          type: string
          example: conversation-184532
        url:
          type: string
          example: https://answeringagent.com/dashboard/conversations/184532
        title:
          type: string
          nullable: true
        status:
          $ref: '#/components/schemas/TaskStatus'
        assignee:
          anyOf:
            - $ref: '#/components/schemas/Person'
            - $ref: '#/components/schemas/NullValue'
        category:
          anyOf:
            - $ref: '#/components/schemas/Category'
            - $ref: '#/components/schemas/NullValue'
        priority:
          type: string
          enum:
            - low
            - medium
            - high
            - urgent
            - normal
        created_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            When the source conversation started or the form was submitted. Not
            when the AI created the task.
        customer:
          allOf:
            - $ref: '#/components/schemas/CustomerRef'
          description: >-
            From the conversation's contact, or from the form submission for a
            form task.
        conversation:
          type: object
          nullable: true
          properties:
            id:
              type: integer
              example: 184532
            url:
              type: string
            channel:
              anyOf:
                - $ref: '#/components/schemas/Channel'
                - $ref: '#/components/schemas/NullValue'
            phone_line:
              anyOf:
                - $ref: '#/components/schemas/PhoneLine'
                - $ref: '#/components/schemas/NullValue'
        form:
          type: object
          nullable: true
          properties:
            title:
              type: string
              nullable: true
    Category:
      type: string
      description: >
        A category key. Conversations, tasks, and reports share one list. A form
        task has form. GET /reports/metrics lists every key with its label under
        categories. Older records can have a retired key that is not in that
        list.
      example: cancellation
    CustomerRef:
      type: object
      properties:
        name:
          type: string
          nullable: true
          example: Dana Ruiz
        phone:
          type: string
          nullable: true
          example: '+15125550118'
        email:
          type: string
          nullable: true
          example: dana.ruiz@example.com
    Channel:
      type: string
      enum:
        - phone
        - text
        - web_chat
        - email
    PhoneLine:
      type: object
      properties:
        id:
          type: integer
          example: 2181
        name:
          type: string
          nullable: true
          example: Westside Wash
        phone_number:
          type: string
          nullable: true
          example: '+15125550142'
  responses:
    CustomerBadRequest:
      description: An input is missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CustomerError'
    CustomerUnauthorized:
      description: >-
        The X-API-KEY header is missing, the key is wrong or revoked, or its
        owner was deactivated.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CustomerError'
    CustomerForbidden:
      description: The key's owner is not an owner, admin, or manager on the team.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CustomerError'
    CustomerTaskNotFound:
      description: >
        The task does not exist, or the key's owner cannot see it. For a task on
        a repeat conversation that was merged into an earlier one, the error
        names the task to use instead.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CustomerError'
          example:
            error: >-
              This conversation was merged into conversation-184519. Use that
              task.
            code: not_found
    CustomerMethodNotAllowed:
      description: The endpoint does not support that HTTP method. Nothing changed.
      headers:
        Allow:
          description: The methods the endpoint supports, such as GET, HEAD, OPTIONS.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CustomerError'
          example:
            error: This endpoint accepts GET.
            code: method_not_allowed
    CustomerRateLimited:
      description: More than 120 requests in a minute for this user.
      headers:
        Retry-After:
          description: Seconds to wait before retrying.
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CustomerError'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-KEY

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.