APIHub
Back to Explore

Asana

The Asana API offers RESTful endpoints to read and manipulate core Asana objects—including tasks, projects, teams, attachments, and workspaces—plus specialized capabilities such as audit‑log retrieval, batch request processing, and custom‑field management.

Documents & Productivity
apiKey
HTTPS
CORS: Yes
Description enriched
Visit official documentation

Latency

662ms p95

Uptime

100.0% 30d

Playground

Verified

live

Endpoints

REST · JSON
GET

/events

Get events on a resource

GET

/portfolios/{portfolio_gid}/items

Get portfolio items

GET

/portfolios/{portfolio_gid}/portfolio_memberships

Get memberships from a portfolio

POST

/portfolios/{portfolio_gid}/removeCustomFieldSetting

Remove a custom field from a portfolio

POST

/portfolios/{portfolio_gid}/removeItem

Remove a portfolio item

POST

/portfolios/{portfolio_gid}/removeMembers

Remove users from a portfolio

DELETE

/project_briefs/{project_brief_gid}

Delete a project brief

GET

/project_briefs/{project_brief_gid}

Get a project brief

PUT

/project_briefs/{project_brief_gid}

Update a project brief

GET

/project_memberships/{project_membership_gid}

Get a project membership

DELETE

/project_statuses/{project_status_gid}

Delete a project status

GET

/project_statuses/{project_status_gid}

Get a project status

POST

/tasks/{task_gid}/addDependents

Set dependents for a task

POST

/tasks/{task_gid}/addFollowers

Add followers to a task

POST

/tasks/{task_gid}/addProject

Add a project to a task

POST

/tasks/{task_gid}/addTag

Add a tag to a task

GET

/tasks/{task_gid}/dependencies

Get dependencies from a task

GET

/tasks/{task_gid}/dependents

Get dependents from a task

POST

/tasks/{task_gid}/duplicate

Duplicate a task

GET

/tasks/{task_gid}/projects

Get projects a task is in

POST

/tasks/{task_gid}/removeDependencies

Unlink dependencies from a task

POST

/tasks/{task_gid}/removeDependents

Unlink dependents from a task

POST

/tasks/{task_gid}/removeFollowers

Remove followers from a task

POST

/tasks/{task_gid}/removeProject

Remove a project from a task

POST

/tasks/{task_gid}/removeTag

Remove a tag from a task

POST

/tasks/{task_gid}/setParent

Set the parent of a task

GET

/users/{user_gid}/workspace_memberships

Get workspace memberships for a user

POST

/custom_fields/{custom_field_gid}/enum_options/insert

Reorder a custom field's enum

PUT

/enum_options/{enum_option_gid}

Update an enum option

GET

/attachments

Get attachments from an object

  • limit (query, limit) — Results per page. The number of objects to return per page. The value must be between 1 and 100.
  • offset (query, 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.'
  • parent (query, required) — Globally unique identifier for object to fetch statuses from. Must be a GID for a `project`, `project_brief`, or `task`.
POST

/attachments

Upload an attachment

DELETE

/attachments/{attachment_gid}

Delete an attachment

GET

/attachments/{attachment_gid}

Get an attachment

POST

/batch

Submit parallel requests

POST

/custom_fields

Create a custom field

DELETE

/custom_fields/{custom_field_gid}

Delete a custom field

GET

/custom_fields/{custom_field_gid}

Get a custom field

PUT

/custom_fields/{custom_field_gid}

Update a custom field

POST

/custom_fields/{custom_field_gid}/enum_options

Create an enum option

GET

/goal_relationships

Get goal relationships

  • opt_pretty (query) — 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.
  • opt_fields (query) — Defines fields to return. Some requests return *compact* representations of objects in order to conserve resources and complete the request more efficiently. Other times requests return more information than you may need. This option allows you to list the exact set of fields that the API should be sure to return for the objects. The field names should be provided as paths, described below. The id of included objects will always be returned, regardless of the field options.
  • supported_goal (query, required) — Globally unique identifier for the supported goal in the goal relationship.
  • resource_subtype (query) — If provided, filter to goal relationships with a given resource_subtype.
GET

/goal_relationships/{goal_relationship_gid}

Get a goal relationship

PUT

/goal_relationships/{goal_relationship_gid}

Update a goal relationship

GET

/goals

Get goals

  • portfolio (query) — Globally unique identifier for supporting portfolio.
  • project (query) — Globally unique identifier for supporting project.
  • is_workspace_level (query) — Filter to goals with is_workspace_level set to query value. Must be used with the workspace parameter.
  • team (query) — Globally unique identifier for the team.
  • workspace (query) — Globally unique identifier for the workspace.
  • time_periods (query) — Globally unique identifiers for the time periods.
POST

/goals

Create a goal

DELETE

/goals/{goal_gid}

Delete a goal

GET

/goals/{goal_gid}

Get a goal

PUT

/goals/{goal_gid}

Update a goal

POST

/goals/{goal_gid}/addFollowers

Add a collaborator to a goal

POST

/goals/{goal_gid}/addSupportingRelationship

Add a supporting goal relationship

GET

/goals/{goal_gid}/parentGoals

Get parent goals from a goal

POST

/goals/{goal_gid}/removeFollowers

Remove a collaborator from a goal

POST

/goals/{goal_gid}/removeSupportingRelationship

Removes a supporting goal relationship

POST

/goals/{goal_gid}/setMetric

Create a goal metric

POST

/goals/{goal_gid}/setMetricCurrentValue

Update a goal metric

GET

/jobs/{job_gid}

Get a job by id

POST

/organization_exports

Create an organization export request

GET

/organization_exports/{organization_export_gid}

Get details on an org export request

GET

/portfolio_memberships

Get multiple portfolio memberships

GET

/portfolio_memberships/{portfolio_membership_gid}

Get a portfolio membership

GET

/portfolios

Get multiple portfolios

  • limit (query, limit) — Results per page. The number of objects to return per page. The value must be between 1 and 100.
  • offset (query, 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.'
  • workspace (query, required) — The workspace or organization to filter portfolios on.
  • owner (query, required) — The user who owns the portfolio. Currently, API users can only get a list of portfolios that they themselves own.
POST

/portfolios

Create a portfolio

DELETE

/portfolios/{portfolio_gid}

Delete a portfolio

GET

/portfolios/{portfolio_gid}

Get a portfolio

PUT

/portfolios/{portfolio_gid}

Update a portfolio

POST

/portfolios/{portfolio_gid}/addCustomFieldSetting

Add a custom field to a portfolio

POST

/portfolios/{portfolio_gid}/addItem

Add a portfolio item

POST

/portfolios/{portfolio_gid}/addMembers

Add users to a portfolio

GET

/portfolios/{portfolio_gid}/custom_field_settings

Get a portfolio's custom fields

GET

/project_templates

Get multiple project templates

  • workspace (query) — The workspace to filter results on.
  • team (query) — The team to filter projects on.
  • limit (query, limit) — Results per page. The number of objects to return per page. The value must be between 1 and 100.
  • offset (query, 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.'
GET

/project_templates/{project_template_gid}

Get a project template

POST

/project_templates/{project_template_gid}/instantiateProject

Instantiate a project from a project template

GET

/projects

Get multiple projects

  • limit (query, limit) — Results per page. The number of objects to return per page. The value must be between 1 and 100.
  • offset (query, 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.'
  • workspace (query) — The workspace or organization to filter projects on.
  • team (query) — The team to filter projects on.
  • archived (query) — Only return projects whose `archived` field takes on the value of this parameter.
POST

/projects

Create a project

DELETE

/projects/{project_gid}

Delete a project

GET

/projects/{project_gid}

Get a project

PUT

/projects/{project_gid}

Update a project

POST

/projects/{project_gid}/addCustomFieldSetting

Add a custom field to a project

POST

/projects/{project_gid}/addFollowers

Add followers to a project

POST

/projects/{project_gid}/addMembers

Add users to a project

GET

/projects/{project_gid}/custom_field_settings

Get a project's custom fields

POST

/projects/{project_gid}/duplicate

Duplicate a project

POST

/projects/{project_gid}/project_briefs

Create a project brief

GET

/projects/{project_gid}/project_memberships

Get memberships from a project

GET

/projects/{project_gid}/project_statuses

Get statuses from a project

  • project_gid (path, required) — Globally unique identifier for the project.
  • opt_pretty (query) — 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.
  • opt_fields (query) — Defines fields to return. Some requests return *compact* representations of objects in order to conserve resources and complete the request more efficiently. Other times requests return more information than you may need. This option allows you to list the exact set of fields that the API should be sure to return for the objects. The field names should be provided as paths, described below. The id of included objects will always be returned, regardless of the field options.
  • limit (query, limit) — Results per page. The number of objects to return per page. The value must be between 1 and 100.
  • offset (query, 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.'
POST

/projects/{project_gid}/project_statuses

Create a project status

POST

/projects/{project_gid}/removeCustomFieldSetting

Remove a custom field from a project

POST

/projects/{project_gid}/removeFollowers

Remove followers from a project

POST

/projects/{project_gid}/removeMembers

Remove users from a project

POST

/projects/{project_gid}/saveAsTemplate

Create a project template from a project

GET

/projects/{project_gid}/sections

Get sections in a project

  • limit (query, limit) — Results per page. The number of objects to return per page. The value must be between 1 and 100.
  • offset (query, 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.'
POST

/projects/{project_gid}/sections

Create a section in a project

POST

/projects/{project_gid}/sections/insert

Move or Insert sections

GET

/projects/{project_gid}/task_counts

Get task count of a project

GET

/projects/{project_gid}/tasks

Get tasks from a project

DELETE

/sections/{section_gid}

Delete a section

GET

/sections/{section_gid}

Get a section

PUT

/sections/{section_gid}

Update a section

POST

/sections/{section_gid}/addTask

Add task to section

GET

/sections/{section_gid}/tasks

Get tasks from a section

GET

/status_updates

Get status updates from an object

  • parent (query, required) — Globally unique identifier for object to fetch statuses from. Must be a GID for a project, portfolio, or goal.
  • created_since (query) — Only return statuses that have been created since the given time.
POST

/status_updates

Create a status update

DELETE

/status_updates/{status_gid}

Delete a status update

GET

/status_updates/{status_gid}

Get a status update

DELETE

/stories/{story_gid}

Delete a story

GET

/stories/{story_gid}

Get a story

  • limit (query, limit) — Results per page. The number of objects to return per page. The value must be between 1 and 100.
  • offset (query, 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.'
PUT

/stories/{story_gid}

Update a story

GET

/tags

Get multiple tags

  • limit (query, limit) — Results per page. The number of objects to return per page. The value must be between 1 and 100.
  • offset (query, 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.'
  • workspace (query) — The workspace to filter tags on.
POST

/tags

Create a tag

DELETE

/tags/{tag_gid}

Delete a tag

GET

/tags/{tag_gid}

Get a tag

PUT

/tags/{tag_gid}

Update a tag

GET

/tags/{tag_gid}/tasks

Get tasks from a tag

GET

/tasks

Get multiple tasks

  • limit (query, limit) — Results per page. The number of objects to return per page. The value must be between 1 and 100.
  • offset (query, 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.'
  • assignee (query) — 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.*
  • project (query) — The project to filter tasks on.
  • section (query) — The section to filter tasks on. *Note: Currently, this is only supported in board views.*
  • workspace (query) — The workspace to filter tasks on. *Note: If you specify `workspace`, you must also specify the `assignee` to filter on.*
  • completed_since (query) — Only return tasks that are either incomplete or that have been completed since this time.
  • modified_since (query) — 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.*
POST

/tasks

Create a task

DELETE

/tasks/{task_gid}

Delete a task

GET

/tasks/{task_gid}

Get a task

PUT

/tasks/{task_gid}

Update a task

POST

/tasks/{task_gid}/addDependencies

Set dependencies for a task

GET

/tasks/{task_gid}/stories

Get stories from a task

  • limit (query, limit) — Results per page. The number of objects to return per page. The value must be between 1 and 100.
  • offset (query, 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.'
POST

/tasks/{task_gid}/stories

Create a story on a task

GET

/tasks/{task_gid}/subtasks

Get subtasks from a task

  • limit (query, limit) — Results per page. The number of objects to return per page. The value must be between 1 and 100.
  • offset (query, 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.'
POST

/tasks/{task_gid}/subtasks

Create a subtask

GET

/tasks/{task_gid}/tags

Get a task's tags

GET

/team_memberships

Get team memberships

  • team (query) — Globally unique identifier for the team.
  • user (query) — A string identifying a user. This can either be the string "me", an email, or the gid of a user. This parameter must be used with the workspace parameter.
  • workspace (query) — Globally unique identifier for the workspace. This parameter must be used with the user parameter.
GET

/team_memberships/{team_membership_gid}

Get a team membership

POST

/teams

Create a team

PUT

/teams

Update a team

GET

/teams/{team_gid}

Get a team

POST

/teams/{team_gid}/addUser

Add a user to a team

GET

/teams/{team_gid}/project_templates

Get a team's project templates

  • limit (query, limit) — Results per page. The number of objects to return per page. The value must be between 1 and 100.
  • offset (query, 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.'
GET

/teams/{team_gid}/projects

Get a team's projects

  • limit (query, limit) — Results per page. The number of objects to return per page. The value must be between 1 and 100.
  • offset (query, 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.'
  • archived (query) — Only return projects whose `archived` field takes on the value of this parameter.
POST

/teams/{team_gid}/projects

Create a project in a team

POST

/teams/{team_gid}/removeUser

Remove a user from a team

GET

/teams/{team_gid}/team_memberships

Get memberships from a team

GET

/teams/{team_gid}/users

Get users in a team

GET

/time_periods

Get time periods

  • start_on (query) — ISO 8601 date string
  • end_on (query) — ISO 8601 date string
  • workspace (query, required) — Globally unique identifier for the workspace.
GET

/time_periods/{time_period_gid}

Get a time period

GET

/user_task_lists/{user_task_list_gid}

Get a user task list

GET

/user_task_lists/{user_task_list_gid}/tasks

Get tasks from a user task list

GET

/users

Get multiple users

GET

/users/{user_gid}

Get a user

GET

/users/{user_gid}/favorites

Get a user's favorites

GET

/users/{user_gid}/team_memberships

Get memberships from a user

  • workspace (query, required) — Globally unique identifier for the workspace.
GET

/users/{user_gid}/teams

Get teams for a user

GET

/users/{user_gid}/user_task_list

Get a user's task list

GET

/webhooks

Get multiple webhooks

  • limit (query, limit) — Results per page. The number of objects to return per page. The value must be between 1 and 100.
  • offset (query, 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.'
  • workspace (query, required) — The workspace to query for webhooks in.
  • resource (query) — Only return webhooks for the given resource.
POST

/webhooks

Establish a webhook

DELETE

/webhooks/{webhook_gid}

Delete a webhook

GET

/webhooks/{webhook_gid}

Get a webhook

PUT

/webhooks/{webhook_gid}

Update a webhook

GET

/workspace_memberships/{workspace_membership_gid}

Get a workspace membership

GET

/workspaces

Get multiple workspaces

GET

/workspaces/{workspace_gid}

Get a workspace

PUT

/workspaces/{workspace_gid}

Update a workspace

POST

/workspaces/{workspace_gid}/addUser

Add a user to a workspace or organization

GET

/workspaces/{workspace_gid}/audit_log_events

Get audit log events

GET

/workspaces/{workspace_gid}/custom_fields

Get a workspace's custom fields

GET

/workspaces/{workspace_gid}/projects

Get all projects in a workspace

  • limit (query, limit) — Results per page. The number of objects to return per page. The value must be between 1 and 100.
  • offset (query, 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.'
  • archived (query) — Only return projects whose `archived` field takes on the value of this parameter.
POST

/workspaces/{workspace_gid}/projects

Create a project in a workspace

POST

/workspaces/{workspace_gid}/removeUser

Remove a user from a workspace or organization

GET

/workspaces/{workspace_gid}/tags

Get tags in a workspace

  • limit (query, limit) — Results per page. The number of objects to return per page. The value must be between 1 and 100.
  • offset (query, 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.'
POST

/workspaces/{workspace_gid}/tags

Create a tag in a workspace

GET

/workspaces/{workspace_gid}/tasks/search

Search tasks in a workspace

GET

/workspaces/{workspace_gid}/teams

Get teams in a workspace

GET

/workspaces/{workspace_gid}/typeahead

Get objects via typeahead

GET

/workspaces/{workspace_gid}/users

Get users in a workspace or organization

GET

/workspaces/{workspace_gid}/workspace_memberships

Get the workspace memberships for a workspace

167 endpoints auto-detected

Authentication

This API requires authentication: apiKey.

curl -X GET \
  "https://developers.asana.com/docs/events"

developers.asana.com · HTTPS only