Clickup get tasks by status in list

2.8k Views Asked by At

I want to retrieve tasks in a specified status from a list in Clickup but I keep getting an empty response.

Resources - https://jsapi.apiary.io/apis/clickup20/reference/0/tasks/get-tasks.html In the api documentation, it says you can query by status using an array of statuses. Here's my code.

const clickupToken = "pk_*****************"
const clickupReqBody = { "Authorization": clickupToken }
const clickupUrl = "https://api.clickup.com/api/v2/"


function getTasks() {
  var listId = "******";
  var statusArray = ["Backlog","Open"];
  var encodedStatusArray = encodeURIComponent(statusArray)
  var urlAddition = "list/" + listId + "/task?archived=false&subtasks=true&statuses%5B%5D=" + encodedStatusArray
  var params = {
    "urlAddition": urlAddition,
    "method": "GET"
  }
  var res = fetchClickupObject(params)
  Logger.log(res)
}

function fetchClickupObject(params) {
  var url = clickupUrl + params.urlAddition;
  Logger.log(params)
  var response = UrlFetchApp.fetch(url, {
    "headers": clickupReqBody,
    "method": params.method
  });
  return response;
}

I've tried all upper, lower, and proper casing for the statuses.

When I log res it returns {"tasks":[]} even though there are tasks in both the Backlog and Open statuses on clickup.

1

There are 1 best solutions below

0
On BEST ANSWER

After some back and forth with the tech team at Clickup, they suggested I try to append status%5B%5D=statusName for each status I wanted to add. The working version looks like this.

const clickupToken = "pk_*****************"
const clickupReqBody = { "Authorization": clickupToken }
const clickupUrl = "https://api.clickup.com/api/v2/"


getTasks() {
    const listId = '****';
    const statusArray = ['Backlog', 'Todo'];
    const statusString = statusArray.map((el) => `&statuses%5B%5D=${el}`).join('');

    const url = `${this.clickupUrl}/list/${listId}/task?archived=false&page=&order_by=&reverse=&subtasks=${statusString}`;
    const params = { url, method: 'GET' };
    const res = this.fetchClickupObject(params);
  }

fetchClickupObject(params: any): Promise<any> {
    const response = fetch(params.url, {
      headers: this.clickupReqBody,
      method: params.method,
    });
    return response;
  }