Asana is a collaborative work-management platform used by teams to organize projects, track tasks, and streamline operational workflows. The Asana integration within the Wrk platform allows you to automate task creation, updates, retrievals, and other workflow activities by calling the Asana REST API directly through prebuilt Wrk Actions.
This document provides an overview of how Asana integrates into Wrk, how authentication works, general API behaviour, and a full list of available Wrk Actions.
Authentication
Asana supports two authentication methods inside Wrk:
1. OAuth 2.0
Users authenticate through Asana’s OAuth flow. Once authorized, Wrk receives an access token (and refresh token) which it uses for all subsequent API calls.
2. Asana Personal Access Token (PAT)
Users can generate a Personal Access Token in the Asana Developer Console. PATs function like static API keys and are passed in the Authorization header.
If the token is missing, expired, or invalid, Asana returns HTTP 401 Unauthorized.
How to Obtain Authentication Tokens
OAuth
OAuth setup is initiated directly inside Wrk. Users are redirected to Asana to sign in and grant access. Wrk securely stores tokens and automatically handles refresh cycles.
Asana Personal Access Token (PAT)
PATs can be generated from the Asana Developer Console:
Log into Asana
Navigate to My Settings → Apps → Manage Developer Apps
Create a Personal Access Token
Copy the token and add it to the Wrk Connected Account
Documentation: https://developers.asana.com/docs/personal-access-token
General API Behaviour
Pagination
Asana strongly recommends paginating all list-style or search-style API requests. Large unpaginated requests may time out or return truncated results, whereas paginated requests reliably return data in smaller batches and support structured iteration over large datasets.
Paginated requests return up to 100 objects per page, along with a next_page object containing an offset. If more results exist, you pass the offset into the next request to retrieve the next batch. If no more results exist, next_page will be null.
Strongly Prefer Paginated Requests
All new Asana API features require pagination.
Some older (“grandfathered”) endpoints still permit unpaginated calls, but these may:
Time out,
Return truncated data (~1,000 objects), or
Become deprecated in the future.
To ensure reliability, always pass a limit parameter to make the request explicitly paginated. Example:
limit=50
Even when supported, unpaginated requests may succeed one day and fail the next depending on server load and dataset size.
Pagination Mechanics
A paginated request includes:
limit — number of objects per page (1–100)
offset — token that tells Asana where to continue the next page
If no offset is provided, Asana returns the first page.
Asana returns:
"next_page": { "offset": "<token>", "path": "...", "uri": "https://app.asana.com/api/1.0/…" }If next_page is null, there are no additional pages.
Important Notes
Offset tokens expire and should only be used within the context of the same paginated sequence. Data changes in Asana may invalidate older tokens.
A paginated request returns up to 100 items at a time.
Unpaginated requests may be truncated at ~1,000 results, even when they do not time out.
For organizations with very large data sets, non-paginated calls frequently time out and should be avoided.
Output Options
Output options control what fields Asana returns in the response. This is essential for workflows where:
You need specific fields (e.g., completed, custom fields, due dates)
You want to reduce overhead by only returning minimal data
You want to ensure stable output structure for downstream workflow steps
1. opt_fields
opt_fields is the primary mechanism for selecting which fields appear in the response. Example:
opt_fields=name,assignee,due_on,completed,custom_fields
This returns only the specified fields, reducing payload size and improving performance.
2. opt_pretty
A debugging setting that returns human-readable JSON. Not recommended for automated workflows.
opt_pretty=true
3. opt_expand
Expands nested resources (like projects, users) inline. Without expansion, Asana typically returns only the GID references. Example:
opt_expand=projects,assignee
Use this sparingly, as expanded records are significantly larger and slower.
IDs (GIDs)
All Asana resources use string-based global IDs (GIDs).
These must be passed into Wrk Actions exactly as returned from the API.
Available Wrk Actions for Asana
Wrk provides a curated set of Asana Actions that map directly to Asana’s most commonly used task-management APIs.
Perform an API call in Asana
Create a task in Asana
Create a subtask in Asana
Update a task in Asana
Delete a task in Asana
Duplicate a task in Asana
Add followers to a task in Asana
Add a tag to a task in Asana
Retrieve a task from Asana
Retrieve multiple tasks from Asana
Retrieve tasks from a project from Asana
Retrieve tasks in a workspace from Asana
Retrieve a project from Asana
Additional Resources
Asana REST API Reference: https://developers.asana.com/reference/rest-api-reference
Custom Fields Guide: https://developers.asana.com/docs/custom-fields-guide
Dates & Times: https://developers.asana.com/docs/dates-and-times
Rate Limits: https://developers.asana.com/docs/rate-limits
