Asana API Documentation
This is the complete API documentation for connecting to the Asana API using MindCloud's Universal API. If you are new to MindCloud, start with the Introduction to see how one API can sit in front of many different apps.
MindCloud is an integration company that offers one normalized API to access 3,100+ apps from a single place. It cleans up provider-specific quirks, keeps requests and responses consistent, and centralizes authentication so you do not need to manage separate flows for every app. Browse other apps.
Meet Asana: Manage projects and tasks with your team. Keep reading to get started.
Quickstart
Before you run your first Asana request, you need three things:
- A MindCloud account — sign in or create an account at MindCloud.
- A MindCloud API Key — create one in API Keys. Keep it on your server.
- At least one Asana connection — create or choose one in Connections. Note its
connectionId.
Every Asana action uses the same URL pattern:
https://connect.mindcloud.co/v1/universal/asana/latest/actions/{actionSlug}You need a MindCloud API Key and a Asana connection. Then call an action such as Get a custom field:
curl --request GET \
--url "https://connect.mindcloud.co/v1/universal/asana/latest/actions/get-a-custom-field" \
--header "Authorization: Bearer $MINDCLOUD_API_KEY" \
--get \
--data-urlencode "connectionId=$CONNECTION_ID"Every response comes back in the same envelope, with your rows in a data array:
{
"success": true,
"data": [
{ "id": "1042", "name": "Ava" }
],
"meta": {}
}After your first request works, use Shape your requests to control arguments, pagination, filtering, fields, and errors.
Authentication
Authentication has two layers. Your MindCloud API Key authenticates the request to MindCloud, sent as a Bearer token in the Authorization header. The connectionId selects the connected Asana account that should run the action. MindCloud stores and refreshes the Asana credentials behind that connection, so you never send provider tokens with your requests.
Pass connectionId in the query string for GET and DELETE actions, and in the JSON body for POST, PUT, and PATCH actions. Keep your MindCloud API Key on your server; do not ship it in browser code, mobile apps, public repositories, or logs.
Asana actions
All 164 published actions for this Asana version. Each page documents the endpoint, arguments, and response controls.
- POSTAdd a collaborator to a goal
- POSTAdd a custom field to a portfolio
- POSTAdd a custom field to a project
- POSTAdd a portfolio item
- POSTAdd a project to a task
- POSTAdd a supporting goal relationship
- POSTAdd a tag to a task
- POSTAdd a user to a team
- POSTAdd a user to a workspace or organization
- POSTAdd followers to a project
- POSTAdd followers to a task
- POSTAdd task to section
- POSTAdd users to a portfolio
- POSTAdd users to a project
- POSTCreate a custom field
- POSTCreate a goal
- POSTCreate a goal metric
- POSTCreate a portfolio
- POSTCreate a project brief
- POSTCreate a project in a team
- POSTCreate a project in a workspace
- POSTCreate a project status
- POSTCreate a project template from a project
- POSTCreate a section in a project
- POSTCreate a status update
- POSTCreate a subtask
- POSTCreate a tag
- POSTCreate a tag in a workspace
- POSTCreate a task
- POSTCreate a team
- POSTCreate an enum option
- POSTCreate an organization export request
- DELETEDelete a custom field
- DELETEDelete a goal
- DELETEDelete a portfolio
- DELETEDelete a project
- DELETEDelete a project brief
- DELETEDelete a project status
- DELETEDelete a section
- DELETEDelete a status update
- DELETEDelete a story
- DELETEDelete a tag
- DELETEDelete a task
- DELETEDelete a webhook
- DELETEDelete an attachment
- POSTDuplicate a project
- POSTDuplicate a task
- POSTEstablish a webhook
- GETGet a custom field
- GETGet a goal
- GETGet a goal relationship
- GETGet a job by id
- GETGet a portfolio
- GETGet a portfolio membership
- GETGet a portfolio's custom fields
- GETGet a project
- GETGet a project brief
- GETGet a project membership
- GETGet a project status
- GETGet a project template
- GETGet a project's custom fields
- GETGet a section
- GETGet a status update
- GETGet a story
- GETGet a tag
- GETGet a task
- GETGet a task's tags
- GETGet a team
- GETGet a team membership
- GETGet a team's project templates
- GETGet a team's projects
- GETGet a time period
- GETGet a user
- GETGet a user task list
- GETGet a user's favorites
- GETGet a user's task list
- GETGet a webhook
- GETGet a workspace
- GETGet a workspace membership
- GETGet a workspace's custom fields
- GETGet all projects in a workspace
- GETGet an attachment
- GETGet attachments from an object
- GETGet audit log events
- GETGet dependencies from a task
- GETGet dependents from a task
- GETGet details on an org export request
- GETGet events on a resource
- GETGet goal relationships
- GETGet goals
- GETGet memberships from a portfolio
- GETGet memberships from a project
- GETGet memberships from a team
- GETGet memberships from a user
- GETGet multiple portfolio memberships
- GETGet multiple portfolios
- GETGet multiple project templates
- GETGet multiple projects
- GETGet multiple tags
- GETGet multiple tasks
- GETGet multiple users
- GETGet multiple webhooks
- GETGet multiple workspaces
- GETGet objects via typeahead
- GETGet parent goals from a goal
- GETGet portfolio items
- GETGet projects a task is in
- GETGet sections in a project
- GETGet status updates from an object
- GETGet statuses from a project
- GETGet Stories from a Task
- GETGet Subtasks by Task
- GETGet tags in a workspace
- GETGet task count of a project
- GETGet tasks from a project
- GETGet tasks from a section
- GETGet tasks from a tag
- GETGet tasks from a user task list
- GETGet team memberships
- GETGet teams for a user
- GETGet teams in a workspace
- GETGet the workspace memberships for a workspace
- GETGet time periods
- GETGet users in a team
- GETGet users in a workspace or organization
- GETGet workspace memberships for a user
- POSTInstantiate a project from a project template
- POSTMove or Insert sections
- POSTRemove a collaborator from a goal
- POSTRemove a custom field from a portfolio
- POSTRemove a custom field from a project
- POSTRemove a portfolio item
- POSTRemove a project from a task
- POSTRemove a tag from a task
- POSTRemove a user from a team
- POSTRemove a user from a workspace or organization
- POSTRemove followers from a project
- POSTRemove followers from a task
- POSTRemove users from a portfolio
- POSTRemove users from a project
- POSTRemoves a supporting goal relationship
- POSTReorder a custom field's enum
- POSTSet dependencies for a task
- POSTSet dependents for a task
- POSTSet the parent of a task
- POSTSubmit parallel requests
- POSTUnlink dependencies from a task
- POSTUnlink dependents from a task
- PUTUpdate a custom field
- PUTUpdate a goal
- POSTUpdate a goal metric
- PUTUpdate a goal relationship
- PUTUpdate a portfolio
- PUTUpdate a project
- PUTUpdate a project brief
- PUTUpdate a section
- PUTUpdate a story
- PUTUpdate a tag
- PUTUpdate a Task
- PUTUpdate a team
- PUTUpdate a webhook
- PUTUpdate a workspace
- PUTUpdate an enum option
- POSTUpload an attachment
Related apps
More apps on the Universal API, behind the same REST shape. Or browse all apps.