Budgets

A budget object represents a budget for a specific parent resource (such as a project).

Each budget tracks values either in time or cost, as determined by the budget_type field.

When budget_type is time, all values are expressed in minutes. When budget_type is cost, all values are expressed in the domain’s currency.

A budget can include up to three value objects: estimate, actual, and total. Each contains a value, units, and may include a billable_status_filter field.

estimate Represents the aggregated estimated effort on tasks attributed to the parent.

  • For time budgets: total estimated minutes.
  • For cost budgets: total estimated cost, computed as (estimated time × resource rate).

actual Represents the aggregated actual time logged on tasks attributed to the parent.

  • For time budgets: total actual minutes from time tracking entries.
  • For cost budgets: total actual cost, computed as (actual time × resource rate). The optional billable_status_filter limits aggregation to billable, non_billable, or any entries.

total A user-defined target value for the budget. Stored independently per budget type, so switching between time and cost preserves each type's value.

  • For time budgets: stored and read as minutes.
  • For cost budgets: stored and read in the domain's currency.

Budget

PropertyTypeDescription
gidstringGlobally unique identifier of the resource, as a string.
resource_typestringThe base type of this resource.
budget_typestringThe type of the budget, in "cost" or "time". The value of this property will dictate how the corresponding values for actual, estimate, and total are interpreted.
Click to show all enum values
  • cost
  • time
estimateobjectRepresents the computed estimate portion of a budget. This object includes the calculated estimate value and its corresponding units. The estimate reflects aggregated data from the configured source, and when source is tasks, the specified billable_status_filter determines which tasks contribute. When disabled (enabled: false and source: none), both value and units will be null.
estimate.billable_status_filterstringBillable status filter applied to the estimate when source is tasks. Ignored when source is capacity_plans or none. When not provided, defaults to billable.
Click to show all enum values
  • any
  • billable
  • non_billable
estimate.sourcestringThe data source for the estimate. tasks: use task-level estimated time attributed to the parent. capacity_plans: use capacity plan estimates attributed to the parent. none: disables the estimate; only valid when enabled is false. When enabled is true, source must not be none.
Click to show all enum values
  • capacity_plans
  • none
  • tasks
estimate.enabledbooleanControls whether the estimate is displayed in the budget. This flag primarily affects UI presentation and the response payload. When false (and source is none), the estimate is hidden and the API response will return value: null and units: null for this field.
estimate.unitsstringThe units of the estimate value. When budget_type is time, units are "minutes". When budget_type is cost, units are the ISO 4217 currency code configured at the domain level. When source is none and enabled is false, this field will be null.
estimate.valuenumberThe aggregated estimate value for the budget. This value is computed based on the selected source and, when source is tasks, the specified billable_status_filter. When budget_type is time, represents the aggregated estimated minutes on the parent. When budget_type is cost, represents the aggregated estimated cost on the parent (estimated time x resource rate). When source is none and enabled is false, this field will be null.
actualobjectRepresents the computed actual portion of a budget. The actual value is derived from time tracking entries attributed to the budget’s parent, filtered according to the specified billable_status_filter. When budget_type is time, it represents minutes; when budget_type is cost, it represents total cost (actual time × resource rate). When no applicable entries exist, value will be 0.
actual.billable_status_filterstringBillable status filter applied to time tracking entries contributing to the actual value. Determines which entries are included in aggregation. When not provided, defaults to billable.
Click to show all enum values
  • any
  • billable
  • non_billable
actual.valuenumberThe aggregated actual value for the budget. * When budget_type is time, represents the total actual minutes from time tracking entries. * When budget_type is cost, represents the total actual cost, computed as (actual time × resource rate).
actual.unitsstringThe units of the actual value. * When budget_type is time, units are "minutes". * When budget_type is cost, units are the ISO 4217 currency code configured at the domain level.
totalobjectRepresents the configured total portion of a budget. The total value is user-defined and may differ for each budget_type. When budget_type is time, it is expressed in minutes; when budget_type is cost, it is expressed in the domain’s ISO 4217 currency code. When enabled is false, both value and units will be null.
total.enabledbooleanIndicates whether the total value is active and should be displayed in the budget. This flag primarily affects UI presentation and the response payload.
total.valuenumberThe user-set value for the total budget. When budget_type is time, represents minutes. When budget_type is cost, represents the monetary amount in the domain's currency. This value is stored separately for each budget_type, so switching between types preserves each value.
total.unitsstringThe units of the total value. When budget_type is time, units are "minutes". When budget_type is cost, units are the ISO 4217 currency code configured at the domain level. When enabled is false, this field will be null.
parentobjectA project represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.
parent.gidstringGlobally unique identifier of the resource, as a string.
parent.resource_typestringThe base type of this resource.
parent.namestringName of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.

Example JSON for Budget:

{
  "gid": "12345",
  "resource_type": "budget",
  "budget_type": "example string",
  "estimate": {
    "billable_status_filter": "example string",
    "source": "tasks",
    "enabled": true,
    "units": "USD",
    "value": 100
  },
  "actual": {
    "billable_status_filter": "billable",
    "value": 100,
    "units": "USD"
  },
  "total": {
    "enabled": true,
    "value": 100,
    "units": "USD"
  },
  "parent": {
    "gid": "12345",
    "resource_type": "project",
    "name": "Stuff to buy"
  }
}
Asana Footer
Asana Home
Asana helps you manage projects, focus on what's important, and organize work in one place for seamless collaboration.
© 2023 Asana, Inc.