GET /workspaces/{workspace_gid}/tasks/search

Required scope: tasks:read

To mirror the functionality of the Asana web app's advanced search feature, the Asana API has a task search endpoint that allows you to build complex filters to find and retrieve the exact data you need.

Premium access

Like the Asana web product's advance search feature, this search endpoint will only be available to premium Asana users. A user is premium if any of the following is true:

Even if a user is only a member of a premium team inside a non-premium workspace, search will allow them to find data anywhere in the workspace, not just inside the premium team. Making a search request using credentials of a non-premium user will result in a 402 Payment Required error.

Pagination

Search results are not stable; repeating the same query multiple times may return the data in a different order, even if the data do not change. Because of this, the traditional pagination available elsewhere in the Asana API is not available here. However, you can paginate manually by sorting the search results by their creation time and then modifying each subsequent query to exclude data you have already seen. Page sizes are limited to a maximum of 100 items, and can be specified by the limit query parameter.

Eventual consistency

Changes in Asana (regardless of whether they’re made though the web product or the API) are forwarded to our search infrastructure to be indexed. This process can take between 10 and 60 seconds to complete under normal operation, and longer during some production incidents. Making a change to a task that would alter its presence in a particular search query will not be reflected immediately. This is also true of the advanced search feature in the web product. Because of this delay, the search endpoint is not suited for use cases that require immediate consistency after writes. If you need read-your-write behavior or strongly consistent results, we recommend using Get multiple tasks instead.

Rate limits

You may receive a 429 Too Many Requests response if you hit any of our rate limits.

Custom field parameters

Parameter nameCustom field typeAccepted type
custom_fields.{gid}.is_setAllBoolean
custom_fields.{gid}.valueTextString
custom_fields.{gid}.valueNumberNumber
custom_fields.{gid}.valueEnumEnum option ID
custom_fields.{gid}.starts_withText onlyString
custom_fields.{gid}.ends_withText onlyString
custom_fields.{gid}.containsText onlyString
custom_fields.{gid}.less_thanNumber onlyNumber
custom_fields.{gid}.greater_thanNumber onlyNumber

For example, if the gid of the custom field is 12345, these query parameter to find tasks where it is set would be custom_fields.12345.is_set=true. To match an exact value for an enum custom field, use the gid of the desired enum option and not the name of the enum option: custom_fields.12345.value=67890.

Not Supported: searching for multiple exact matches of a custom field, searching for multi-enum custom field

Custom task type parameters

Parameter nameAccepted type
custom_types.{gid}.custom_type_status_option.gidEnum option GID

This parameter filters tasks by their custom task status option. The {gid} is the GID of the custom task type, and the value is the GID of a valid status option for that type's status field.

Requirements:

For example, to find custom tasks of type 12345 with status option 67890: custom_types.12345.custom_type_status_option.gid=67890&resource_subtype=custom.

Note: If you specify projects.any and sections.any, you will receive tasks for the project and tasks for the section. If you're looking for only tasks in a section, omit the projects.any from the request.

Servers

Path parameters

Name Type Required Description
workspace_gid String Yes

Globally unique identifier for the workspace or organization.

Query parameters

Name Type Required Description
tags.not String No

Comma-separated list of tag IDs

created_by.any String No

Comma-separated list of user identifiers

commented_on_by.not String No

Comma-separated list of user identifiers

assignee.not String No

Comma-separated list of user identifiers

is_blocking Boolean No

Filter to incomplete tasks with dependents

modified_on.after String No

ISO 8601 date string

text String No

Performs full-text search on both task name and description

projects.any String No

Comma-separated list of project IDs

resource_subtype String No

Filters results by the task's resource_subtype

Valid values:

  • "approval"
  • "milestone"
  • "custom"
  • "default_task"

Default value: "milestone"

sections.any String No

Comma-separated list of section or column IDs

modified_on.before String No

ISO 8601 date string

completed Boolean No

Filter to completed tasks

opt_pretty Boolean No

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.

completed_on.after String No

ISO 8601 date string

created_on String No

ISO 8601 date string or null

teams.any String No

Comma-separated list of team IDs

due_at.before String No

ISO 8601 datetime string

start_on String No

ISO 8601 date string or null

completed_at.before String No

ISO 8601 datetime string

completed_at.after String No

ISO 8601 datetime string

projects.not String No

Comma-separated list of project IDs

assigned_by.not String No

Comma-separated list of user identifiers

due_at.after String No

ISO 8601 datetime string

tags.all String No

Comma-separated list of tag IDs

due_on.after String No

ISO 8601 date string

assigned_by.any String No

Comma-separated list of user identifiers

due_on String No

ISO 8601 date string or null

followers.not String No

Comma-separated list of user identifiers

is_subtask Boolean No

Filter to subtasks

start_on.before String No

ISO 8601 date string

has_attachment Boolean No

Filter to tasks with attachments

modified_at.after String No

ISO 8601 datetime string

completed_on.before String No

ISO 8601 date string

sections.not String No

Comma-separated list of section or column IDs

modified_at.before String No

ISO 8601 datetime string

sort_ascending Boolean No

Default false

Default value: false

created_on.after String No

ISO 8601 date string

liked_by.not String No

Comma-separated list of user identifiers

start_on.after String No

ISO 8601 date string

projects.all String No

Comma-separated list of project IDs

portfolios.any String No

Comma-separated list of portfolio IDs

followers.any String No

Comma-separated list of user identifiers

created_on.before String No

ISO 8601 date string

completed_on String No

ISO 8601 date string or null

sort_by String No

One of due_date, created_at, completed_at, likes, or modified_at, defaults to modified_at

Valid values:

  • "due_date"
  • "completed_at"
  • "likes"
  • "modified_at"
  • "created_at"

Default value: "modified_at"

assignee.any String No

Comma-separated list of user identifiers

created_at.before String No

ISO 8601 datetime string

sections.all String No

Comma-separated list of section or column IDs

is_blocked Boolean No

Filter to tasks with incomplete dependencies

created_by.not String No

Comma-separated list of user identifiers

created_at.after String No

ISO 8601 datetime string

due_on.before String No

ISO 8601 date string

opt_fields[] Array No

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.

tags.any String No

Comma-separated list of tag IDs

modified_on String No

ISO 8601 date string or null

How to start integrating

  1. Add HTTP Task to your workflow definition.
  2. Search for the API you want to integrate with and click on the name.
    • This loads the API reference documentation and prepares the Http request settings.
  3. Click Test request to test run your request to the API and see the API's response.