Search + K

Command Palette

Search for a command to run...

Sign In

Get multiple tasks

GET /tasks
Copy endpoint
https://app.asana.com/api/1.0

Required scope: tasks:read

Returns the compact task records for some filtered set of tasks. Use one or more of the parameters provided to filter the tasks returned. You must specify a project or tag if you do not specify assignee and workspace.

For more complex task retrieval, use workspaces/{workspace_gid}/tasks/search.

Parameters

query Query Parameters

Name Type
limit

Results per page. The number of objects to return per page. The value must be between 1 and 100.

number
offset

Offset token. An offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results. Note: You can only pass in an offset that was returned to you via a previously paginated request.

string
assignee

The assignee to filter tasks on. If searching for unassigned tasks, assignee.any = null can be specified. Note: If you specify assignee, you must also specify the workspace to filter on.

string
project

The project to filter tasks on.

string
section

The section to filter tasks on.

string
workspace

The workspace to filter tasks on. Note: If you specify workspace, you must also specify the assignee to filter on.

string
completed_since

Only return tasks that are either incomplete or that have been completed since this time.

string
modified_since

Only return tasks that have been modified since the given time.

Note: A task is considered “modified” if any of its properties change, or associations between it and other objects are modified (e.g. a task being added to a project). A task is not considered modified just because another object it is associated with (e.g. a subtask) is modified. Actions that count as modifying the task include assigning, renaming, completing, and adding stories.

string
opt_fields

This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.

("actual_time_minutes" | "approval_status" | "assigned_by" | "assigned_by.name" | "assignee" | "assignee.name" | "assignee_section" | "assignee_section.name" | "assignee_status" | "completed" | "completed_at" | "completed_by" | "completed_by.name" | "created_at" | "created_by" | "custom_fields" | "custom_fields.asana_created_field" | "custom_fields.created_by" | "custom_fields.created_by.name" | "custom_fields.currency_code" | "custom_fields.custom_label" | "custom_fields.custom_label_position" | "custom_fields.date_value" | "custom_fields.date_value.date" | "custom_fields.date_value.date_time" | "custom_fields.default_access_level" | "custom_fields.description" | "custom_fields.display_value" | "custom_fields.enabled" | "custom_fields.enum_options" | "custom_fields.enum_options.color" | "custom_fields.enum_options.enabled" | "custom_fields.enum_options.name" | "custom_fields.enum_value" | "custom_fields.enum_value.color" | "custom_fields.enum_value.enabled" | "custom_fields.enum_value.name" | "custom_fields.format" | "custom_fields.has_notifications_enabled" | "custom_fields.id_prefix" | "custom_fields.input_restrictions" | "custom_fields.is_formula_field" | "custom_fields.is_global_to_workspace" | "custom_fields.is_value_read_only" | "custom_fields.multi_enum_values" | "custom_fields.multi_enum_values.color" | "custom_fields.multi_enum_values.enabled" | "custom_fields.multi_enum_values.name" | "custom_fields.name" | "custom_fields.number_value" | "custom_fields.people_value" | "custom_fields.people_value.name" | "custom_fields.precision" | "custom_fields.privacy_setting" | "custom_fields.reference_value" | "custom_fields.reference_value.name" | "custom_fields.representation_type" | "custom_fields.resource_subtype" | "custom_fields.text_value" | "custom_fields.type" | "custom_type" | "custom_type.name" | "custom_type_status_option" | "custom_type_status_option.name" | "dependencies" | "dependents" | "due_at" | "due_on" | "external" | "external.data" | "followers" | "followers.name" | "hearted" | "hearts" | "hearts.user" | "hearts.user.name" | "html_notes" | "is_rendered_as_separator" | "liked" | "likes" | "likes.user" | "likes.user.name" | "memberships" | "memberships.project" | "memberships.project.name" | "memberships.section" | "memberships.section.name" | "modified_at" | "name" | "notes" | "num_hearts" | "num_likes" | "num_subtasks" | "offset" | "parent" | "parent.created_by" | "parent.name" | "parent.resource_subtype" | "path" | "permalink_url" | "projects" | "projects.name" | "resource_subtype" | "start_at" | "start_on" | "tags" | "tags.name" | "uri" | "workspace" | "workspace.name")[]
opt_pretty

Provides “pretty” output. Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.

boolean

Responses

200 application/json

Successfully retrieved requested tasks.

{ data?: TaskCompact

The task is the basic object around which many operations in Asana are centered.

interface TaskCompact {
gid?: string;
resource_type?: string;
name?: string;
resource_subtype?: "default_task" | "milestone" | "approval";
created_by?: { gid?: string;resource_type?: string; };
}
[]
;next_page?: NextPage

Conditional. This property is only present when a limit query parameter is provided in the request. When making a paginated request, the API will return a number of results as specified by the limit parameter. If more results exist, then the response will contain a next_page attribute, which will include an offset, a relative path attribute, and a full uri attribute. If there are no more pages available, next_page will be null and no offset will be provided. Note that an offset token will expire after some time, as data may have changed.

type NextPage = { offset?: string;path?: string;uri?: string; } | null
; }

Client Errors

400 application/json

This usually occurs because of a missing or malformed parameter. Check the documentation and the syntax of your request and try again.

interface ErrorResponse {
errors?: Error
interface Error {
message?: string;
help?: string;
phrase?: string;
}
[]
;
}
401 application/json

A valid authentication token was not provided with the request, so the API could not associate a user with the request.

interface ErrorResponse {
errors?: Error
interface Error {
message?: string;
help?: string;
phrase?: string;
}
[]
;
}
403 application/json

The authentication and request syntax was valid but the server is refusing to complete the request. This can happen if you try to read or write to objects or properties that the user does not have access to.

interface ErrorResponse {
errors?: Error
interface Error {
message?: string;
help?: string;
phrase?: string;
}
[]
;
}
404 application/json

Either the request method and path supplied do not specify a known action in the API, or the object specified by the request does not exist.

interface ErrorResponse {
errors?: Error
interface Error {
message?: string;
help?: string;
phrase?: string;
}
[]
;
}

Server Errors

500 application/json

There was a problem on Asana’s end. In the event of a server error the response body should contain an error phrase. These phrases can be used by Asana support to quickly look up the incident that caused the server error. Some errors are due to server load, and will not supply an error phrase.

interface ErrorResponse {
errors?: Error
interface Error {
message?: string;
help?: string;
phrase?: string;
}
[]
;
}