[New] Project Budgets support in the Asana API

Summary

We’re bringing API support to Project Budgets, a critical component of Asana’s Resource Management Add-On. Project Budgets help teams monitor project financial health by tracking time and costs across multiple dimensions.

With this new API functionality, developers can:

  • Programmatically create and configure project budgets and custom rates
  • Pull budget data including actual time and costs spent on projects
  • Integrate Asana budget tracking with external financial systems
  • Automate budget setup across multiple projects

This enables teams to streamline their financial workflows and maintain synchronized budget data between Asana and their existing tools.

Timeline

Now available! API Reference available here:

Usage

We’re introducing two new resource types to the API: budgets and rates.

Budget endpoints

Manage project budgets including time-based and cost-based tracking configurations.

Available operations:

Endpoint Description
GET /budgets/{budget_gid} Retrieve a specific budget
GET /budgets List all budgets (requires parent query parameter)
POST /budgets Create a new budget
PUT /budgets/{budget_gid} Update an existing budget
DELETE /budgets/{budget_gid} Delete a budget

Example: Get a budget

GET /budgets/{budget_gid}
{
  "data": {
    "gid": "12345",
    "resource_type": "budget",
    "budget_type": "time",
    "parent": {
      "gid": "67890",
      "resource_type": "project",
      "name": "Marketing Campaign"
    },
    "estimate": {
      "billable_status_filter": "billable",
      "source": "tasks",
      "enabled": true,
      "value": 100000,
      "units": "minutes"
    },
    "actual": {
      "billable_status_filter": "billable",
      "value": 1000,
      "units": "minutes"
    },
    "total": {
      "enabled": true,
      "value": 10000,
      "units": "minutes"
    }
  }
}

Example: List budgets for a project

GET /budgets?parent={project_gid}

Key budget fields:

Field Description
budget_type Type of budget tracking: time or cost
estimate Estimated time or cost, calculated from task estimates or capacity plans
estimate.source Source of estimates: tasks, capacity_plans, or none
estimate.billable_status_filter Filter for estimate calculations: billable, non_billable, or any
estimate.enabled Whether the estimate is included in the budget
actual Actual time or cost spent, calculated from time tracking entries
actual.billable_status_filter Filter for actual calculations: billable, non_billable, or any
total User-defined total budget target
total.enabled Whether a total budget limit is set

Rate endpoints

Manage custom billing rates for users on specific projects.

Available operations:

Endpoint Description
GET /rates/{rate_gid} Retrieve a specific rate
GET /rates List rates (supports parent and resource query parameters)
POST /rates Create a new rate
PUT /rates/{rate_gid} Update an existing rate
DELETE /rates/{rate_gid} Delete a rate

Example: Get a rate

GET /rates/{rate_gid}
{
  "data": {
    "gid": "12345",
    "resource_type": "rate",
    "resource": {
      "gid": "11067",
      "resource_type": "user",
      "name": "Jane Smith"
    },
    "parent": {
      "gid": "67890",
      "resource_type": "project",
      "name": "Marketing Campaign"
    },
    "rate": "125.50",
    "created_by": {
      "gid": "11067",
      "resource_type": "user",
      "name": "Jane Smith"
    },
    "currency_code": "USD"
  }
}

Key rate fields:

Field Description
resource User object this rate applies to
parent Project object where this rate is applicable
rate Hourly billing rate as a string (e.g., “125.50”)
currency_code Three-letter ISO 4217 currency code (e.g., USD, EUR, GBP)
created_by User who created this rate

Resources

5 Likes