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

# Update Task

> This endpoint updates info about a specific task




## OpenAPI

````yaml PATCH /tasks/{task_id}
openapi: 3.0.3
info:
  title: API - Local
  description: >-
    #### Welcome to the official Postman collection of Periskope API


    Periskope APIs enable you automate actions on your WhatsApp phone, and the
    Periskope platform


    - Read more about the APIs & webhooks here -
    [https://docs.periskope.app/api-reference/introduction](https://docs.periskope.app/api-reference/introduction)
        
    - We encourage responsible usage of the APIs. Follow these best practices
    and recommendations for safe actions on WhatsApp -
    [https://docs.periskope.app/get-started/best-practices](https://docs.periskope.app/get-started/best-practices)
        

    #### Getting Started


    ##### Pre-requisites:


    1. **Sign up for a free account on Periskope:** To use the Periskope API,
    you need to have an active Periskope account. If you don’t have one, you can
    sign up for a 7-day free trial [here](https://console.periskope.app).
        
    2. **Scan the QR code from WhatsApp to connect your phone:** A connected
    phone is required to use the APIs
        
    3. **Go to** [Settings &gt;
    API](https://console.periskope.app/settings/api), and generate an API key
    for your organization - The API key is used to authenticate every request.
    Please keep this secure
        

    ##### Using Postman:


    1. **Fork the collection so you can edit values and test the APIs in your
    own postman environment:** To fork the collection, click on the three dots
    next to v1. Then click on create a fork (_shortcut: Ctrl + Alt + F)._
        
    2. **Update the value of the variables in the collection:**  
        \- Update the API key with the key generated in Step 3  
        \- Update the phone number with your connected number. This number will be added to the `x-phone` header across requests
        
        It must be in the format of country code+number, with no special characters or spaces _e.g. +91 98745 32456 becomes 919874532456_
        

    For any help or feedback, please contact us at
    [support@periskope.app](https://mailto:support@periskope.app), or ping us on
    [WhatsApp](https://what.sapp.link/periskope)
  version: 1.0.0
  contact: {}
servers:
  - url: https://api.periskope.app/v1
security:
  - bearerAuth: []
tags:
  - name: contacts
  - name: tickets
  - name: tasks
  - name: phones
  - name: message
  - name: queue
  - name: chats
  - name: group
  - name: members
  - name: webhooks
  - name: custom properties
paths:
  /tasks/{task_id}:
    parameters:
      - name: task_id
        in: path
        required: true
        schema:
          type: string
          example: task-elnizmojzrjsogdm
          description: '- The unique identifier of the task'
    patch:
      tags:
        - tasks
      summary: Update Task
      description: |
        This endpoint updates info about a specific task
      operationId: updateTask
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - title
              properties:
                title:
                  type: string
                  example: Resolve customer escalation
                  description: '- The title of the task (1–500 characters)'
                status:
                  type: string
                  enum:
                    - open
                    - inprogress
                    - closed
                  default: open
                  example: closed
                  description: |-
                    - Status of the task
                    - Possible values: `open`, `inprogress`, `closed`
                    - Default `open`
                priority:
                  type: number
                  enum:
                    - 1
                    - 2
                    - 3
                  default: 1
                  example: 3
                  description: |-
                    - The priority of the task
                    - Possible values: `1`, `2`, `3`
                    - Default `1`
                assignee:
                  type: string
                  example: ankit.singh@hashlabs.dev
                  description: >-
                    - Email of an org member. Validated against your org's
                    member list
                due_date:
                  type: string
                  example: '2026-06-15T18:00:00+00:00'
                  description: |-
                    - The due date of the task
                    - Should be in ISO 8601 timestamp format
                notes:
                  type: string
                  example: Customer escalated via email — coordinate with support
                  description: '- Free-form text attached to the task'
                remind_at:
                  type: string
                  example: '2026-06-18T18:00:00+00:00'
                  description: |-
                    - The remind date for the task to receive a reminder
                    - Should be in ISO 8601 timestamp format
                last_updated_by:
                  type: string
                  example: ankit.singh@hashlabs.dev
                  description: |-
                    - Email of an org member. Defaults to `"api"`.
                    - Used as `completed_by` when this update closes the task
            examples:
              Update Task:
                value:
                  status: closed
                  last_updated_by: member1@example.com
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              schema:
                type: object
                description: >-
                  The response is a task object. Refer to [the task object
                  here](/api-reference/objects/the-task-object)
              examples:
                200 OK:
                  value:
                    task_id: task-elnizmojzrjsogdm
                    title: Resolve customer escalation
                    type: message
                    status: closed
                    priority: 3
                    assignee: ankit.singh@hashlabs.dev
                    created_by: anjali.pandey@hashlabs.dev
                    last_updated_by: ankit.singh@hashlabs.dev
                    created_at: '2026-06-03T06:00:56.592+00:00'
                    last_updated_at: '2026-06-04T18:09:36.420636+00:00'
                    due_date: '2026-06-15T18:00:00+00:00'
                    remind_at: '2026-06-18T18:00:00+00:00'
                    notes: Customer escalated via email — coordinate with support
                    chat_id: 919205202401@c.us
                    association:
                      type: message
                      message_id: >-
                        true_4ca42ab6-77a9-428d-b614-5eb37bcf8f95_anjali.pandey@hashlabs.dev
                      chat_id: 919205202401@c.us
                    completed_metadata:
                      completed_at: '2026-06-04T18:09:36.407Z'
                      completed_by: ankit.singh@hashlabs.dev
      x-codeSamples:
        - lang: TypeScript
          label: Node.js
          source: |-
            import { PeriskopeApi } from '@periskope/periskope-client';

            const client = new PeriskopeApi({
              authToken: 'YOUR_API_KEY',
            });

            async function updateTask() {
              const response = await client.task.update({
                task_id: 'task-00000000000000a1',
                title: 'Updated task title',
                status: 'closed', // closing the task stamps completed_metadata
                priority: 2,
                assignee: 'member2@example.com',
                due_date: '2026-06-20T18:00:00.000Z',
                remind_at: '2026-06-20T17:30:00.000Z',
                notes: 'Updated notes for the task.',
                last_updated_by: 'member2@example.com'
              });

              console.log(response);
            }

            updateTask();
        - lang: cURL
          label: cURL
          source: >-
            curl -X PATCH
            https://api.periskope.app/v1/tasks/task-00000000000000a1 \
              -H 'Authorization: Bearer <token>' \
              -H 'Content-Type: application/json' \
              -d '{"status":"closed","last_updated_by":"member1@example.com"}'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````