[New] Portfolio Duplication API

[New] Portfolio Duplication

Summary

You can now duplicate portfolios via the Asana API. This new endpoint allows you to create a new portfolio based on an existing one, carrying over specific settings and configurations to reduce setup friction for repeated workflows.

Why we’re making this change

Creating portfolios from scratch can be a manual, time-consuming process—especially when reconfiguring custom fields, rules, child work items, and saved views (dashboards). This duplication endpoint serves as a powerful bridge to enable consistency across your portfolio structures.

Who is affected

Any developer or user with read access to an existing portfolio can now use this endpoint to duplicate it.

Timeline

Portfolio duplication is now available in the public API.

Usage

The duplication process follows the established pattern used for Project and Task duplication. You can specify which elements to copy by passing them in the include parameter.

Endpoint

POST /portfolios/{portfolio_gid}/duplicate

Request Parameters

Parameter Type Required Description
portfolio_gid string Yes GID of the portfolio to duplicate.
name string No The name of the new portfolio.
include string No A comma-separated list of optional elements to include.

Content Inclusion Rules

Some elements are automatically included to maintain the portfolio’s structure, while others must be explicitly requested.

Status Fields Included
Always Included custom_fields, saved_views
Optional description, members, permissions, templates, rules, child_projects, child_portfolios

Note on Child Items: When including child_projects or child_portfolios, the API performs an “all-or-nothing” duplication of those containers. It is not currently possible to specify a subset of specific children to copy over.

Code Examples

Basic Duplication

Creates a copy with only the default settings (custom fields and saved views).

// POST /portfolios/12345/duplicate
{
  "data": {
    "name": "Q2 Strategic Portfolio (Copy)"
  }
}

Advanced Duplication

Creates a copy including members, rules, and child projects.

// POST /portfolios/12345/duplicate
{
  "data": {
    "name": "Regional Expansion Portfolio",
    "include": "description, members, rules, child_projects"
  }
}

Response

The endpoint returns a job object, as the duplication happens asynchronously.

{
  "data": {
    "gid": "98765",
    "resource_type": "job",
    "resource_subtype": "duplicate_portfolio",
    "status": "in_progress",
    "new_portfolio": {
      "gid": "54321",
      "resource_type": "portfolio",
      "name": "Regional Expansion Portfolio"
    }
  }
}

Key Resources

6 Likes