Summary
Asana will soon support reference custom fields that store references to other Asana objects like tasks, projects, portfolios, and goals. This new custom field type allows you to create structured relationships between objects in your Asana workspace through the API.
Key benefits:
- Create structured relationships between Asana objects
- Configure which object types can be referenced per field
- Retrieve referenced objects with their names and resource types
- Build more connected workflows and reporting systems
Who is affected
If you read or make updates to custom field values over the API may see this new custom field type and may want to make changes to be able to handle references to other objects.
Timeline
- Late August 2025: Full public documentation and general release planned
Usage
Create / Update / Fetch Reference Custom Fields
- POST /custom_fields
- PUT /custom_fields/<gid>
- GET /custom_fields/<gid>
| Field | Description |
|---|---|
resource_subtype |
Will now support reference |
input_restrictions |
Supported for resource custom field types, this array contains resource types that can be input into this reference custom field. Must be one of task / project / portfolio / goal. |
// POST /custom_fields - Create a reference custom field
{
"data": {
"name": "Related Work",
"description": "Reference to related projects or tasks",
"resource_subtype": "reference",
"input_restrictions": ["task", "project"],
"workspace": "12345",
"enabled": true,
"is_global_to_workspace": true,
"has_notifications_enabled": true
}
}
Set Reference Custom Field Values
At launch, reference custom fields will be supported on tasks, projects, and portfolios.
- PUT /tasks/<gid>
- PUT /projects/<gid>
- PUT /portfolios/<gid>
// PUT /tasks/{task_gid} - Update reference custom field value on a task
{
"data": {
"custom_fields": {
"1234567890123456": ["9876543210987654", "1111222233334444"],
"5555666677778888": ["2222333344445555"]
}
}
}
Fetch Reference Custom Field Values
Reference custom task values may appear on GET endpoints for tasks, projects, and portfolios.
// GET /task/{gid}?opt_fields=custom_fields
// Task with reference custom field values
{
"data": {
"gid": "1234567890123456",
"name": "Website Redesign Task",
"custom_fields": [
{
"gid": "5555666677778888",
"resource_type": "custom_field",
"name": "Related Projects",
"resource_subtype": "reference",
"reference_value": [
{
"gid": "9876543210987654",
"resource_type": "project",
"name": "Q4 Marketing Campaign"
},
{
"gid": "1111222233334444",
"resource_type": "project",
"name": "Brand Guidelines Update"
}
],
"display_value": "Q4 Marketing Campaign, Brand Guidelines Update"
},
{
"gid": "7777888899990000",
"resource_type": "custom_field",
"name": "Strategic Goal",
"resource_subtype": "reference",
"reference_value": [
{
"gid": "2222333344445555",
"resource_type": "goal",
"name": "Increase Brand Awareness"
}
],
"display_value": "Increase Brand Awareness"
}
]
}
}
Migration Steps
For new integrations:
- Use the new
resource_subtype= āreferenceā when creating custom fields that need to store object references - Configure
input_restrictionsto specify which object types can be referenced
For existing integrations:
- Consider gracefully handling reference custom field definitions and reference custom field values
Resources
- Custom Fields API Documentation
- Tasks API Documentation
- Projects API Documentation
- Portfolios API Documentation
Questions and Feedback
Weād love to hear how you plan to use reference custom fields in your integrations! Let us know if you have questions or feedback about this.