Summary
We’re introducing a new POST /exports/resource endpoint that allows bulk export of tasks, teams, and messages using an Asana service account. This endpoint provides a standardized way to extract large datasets from your Asana workspace without making thousands of individual API requests.
What’s new
The /exports/resource endpoint enables you to:
- Export multiple resource types in a single request (tasks, teams, messages)
- Apply filters to export only the data you need (for tasks and messages)
- Select specific fields to minimize response size
- Process exports asynchronously through our jobs system
- Download compressed JSONL files for efficient data processing
Who benefits
This endpoint is available to:
- Enterprise+ customers
- Compliance Management Add-on subscribers
This is particularly valuable for developers building:
- Data backup and archival systems
- Compliance reporting tools
- Business intelligence dashboards
- Data migration utilities
- Audit trail systems
Usage
Basic workflow
- Initiate export:
POST /exports/resourcewith your parameters - Poll job status:
GET /jobs/{job_gid}until status issucceeded - Download file: Retrieve the compressed JSON file from
download_url - Process data: Parse the file line by line
Example: Export filtered tasks and teams
POST /exports/resource
{
"data": {
"workspace": "12345",
"export_request_parameters": [
{
"resource_type": "task",
"filters": {
"assigned_by.any": ["12345"],
"assignee.any": ["12345"],
"created_at.after": "2024-01-01T00:00:00.000Z"
}
},
{
"resource_type": "team",
"fields": ["gid", "name", "description"]
}
]
}
}
Response:
{
"data": {
"gid": "12345",
"resource_type": "job",
"resource_subtype": "export_request",
"status": "in_progress",
"new_resource_export": {
"gid": "56789",
"created_at": "2012-02-22T02:06:58.147Z",
"completed_at": null,
"download_url": null
}
}
}
Checking export status
GET /jobs/12345
{
"data": {
"gid": "12345",
"resource_type": "job",
"resource_subtype": "export_request",
"status": "succeeded",
"new_resource_export": {
"gid": "56789",
"created_at": "2012-02-22T02:06:58.147Z",
"completed_at": "2012-02-22T02:16:58.147Z",
"download_url": "https://asana-object-export-prod.s3.amazonaws.com/11111/22222/20120222-020658/export-11111-20120222-020658.jsonl.gz?..."
}
}
}
Available filters
| Resource Type | Supported Filters |
|---|---|
| Tasks or Messages | created_at.after, created_at.before, modified_at.after, modified_at.before, created_by.any, followers.any, liked_by.any, commented_on_by.any |
| Tasks only | assigned_by.any, assignee.any |
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
workspace |
string | Workspace GID to export from | |
export_request_parameters |
array | Array of resource types and their export configurations |
ExportRequestParameters object:
| Field | Type | Required | Description |
|---|---|---|---|
resource_type |
string | Resource to export: "task", "team", or "message" |
|
fields |
array | Specific fields to include (defaults to standard schema) | |
filters |
object | Filters to apply to the export |
Special considerations
Message exports
Messages are not available through standard API endpoints but can be exported using this endpoint. The export includes fields like title, text, html_notes, attachments, and relationship data.
Rate limits
- Concurrent exports: Limited to 1 active export per workspace (configurable)
- Job polling: Subject to standard API rate limits
- Download links: Temporary URLs with expiration times
File format
Exports are delivered as:
- Format: JSON Lines (.jsonl)
- Compression: Gzip (.gz)
- Structure: One JSON object per line, each representing a resource
Choosing between resource exports and graph exports
Asana new offers two export endpoints for different use cases:
Use /exports/resource when you need:
- Workspace-wide data: Export all tasks, teams, or messages across an entire workspace
- Flexible filtering: Apply user-based, date-based, or custom filters across resources
- Custom field selection: Choose exactly which fields to include in your export
- Cross-project analysis: Aggregate data that spans multiple projects or teams
- Compliance reporting: Generate comprehensive datasets for audit or regulatory purposes
Use /exports/graph when you need:
- Project-centric exports: Start from a specific project, portfolio, or team and export its hierarchy
- Relational data: Capture the relationships between objects (project → tasks → subtasks)
- Structured workflows: Export data that follows Asana’s organizational structure
- Smaller, focused datasets: Get everything related to a specific project or portfolio
Key differences:
| Feature | Resource Export | Graph Export |
|---|---|---|
| Access | Service account | User token (personal access token or OAuth access token) |
| Scope | Workspace-wide | Project/portfolio/team-centric |
| Filtering | Advanced user/date filters | Hierarchy-based filtering |
| Structure | Flat list of resources | Hierarchical relationships |
| Use case | Compliance, reporting, analytics | Project migration, structured data |
Example: To export all tasks assigned to a specific user across your workspace, use /exports/resource. To export a complete project with all its tasks, subtasks, and relationships, use /exports/graph.
Timeline
Available now to customers with the Compliance Management Add-on or on the Enterprise+ tier.