Forecast API Request Body Schema
Complete JSON Schema
{
"type": "ActualCost",
"timeframe": "Custom",
"timePeriod": {
"from": "2024-01-01T00:00:00Z",
"to": "2024-03-31T00:00:00Z"
},
"dataset": {
"granularity": "Daily",
"aggregation": {
"totalCost": {
"name": "Cost",
"function": "Sum"
}
},
"sorting": [
{
"direction": "Ascending",
"name": "UsageDate"
}
],
"filter": {
"dimensions": {
"name": "ResourceGroupName",
"operator": "In",
"values": ["my-resource-group"]
}
}
},
"includeActualCost": true,
"includeFreshPartialCost": true
}Field Reference
| Field | Type | Required | Values | Description |
|---|---|---|---|---|
type | string | ✅ | ActualCost, AmortizedCost, Usage | Cost type for the forecast |
timeframe | string | ✅ | Custom | Must be Custom for forecast requests |
timePeriod | object | ✅ | — | Start and end dates for the forecast window |
timePeriod.from | string | ✅ | ISO 8601 datetime | Start date; can be in the past to include actuals |
timePeriod.to | string | ✅ | ISO 8601 datetime | End date; must be in the future for forecast |
dataset | object | ✅ | — | Dataset configuration for the forecast |
dataset.granularity | string | ✅ | Daily, Monthly | Time granularity of forecast results |
dataset.aggregation | object | ✅ | — | Aggregation functions to apply |
dataset.aggregation.totalCost.name | string | ✅ | Cost | Column name to aggregate |
dataset.aggregation.totalCost.function | string | ✅ | Sum | Aggregation function |
dataset.sorting | array | Optional | — | Sort order for results |
dataset.sorting[].direction | string | Optional | Ascending, Descending | Sort direction |
dataset.sorting[].name | string | Optional | UsageDate | Column to sort by |
dataset.filter | object | Optional | — | Filter expression (dimensions/tags) |
includeActualCost | boolean | Optional | true, false | Include historical actual costs alongside forecast. Default: true |
includeFreshPartialCost | boolean | Optional | true, false | Include partial cost data for recent days. Default: true. Requires includeActualCost=true |
Forecast-Specific Fields
includeActualCost
- Type: boolean
- Default:
true - When
true, the response includes historical actual cost rows from thefromdate up to today, alongside projected forecast rows from today to thetodate. - When
false, only forecast (projected) rows are returned.
includeFreshPartialCost
- Type: boolean
- Default:
true - When
true, includes partial (incomplete) cost data for the most recent days where billing data is still arriving. - ⚠️ Requires
includeActualCost=true. SettingincludeFreshPartialCost=truewithoutincludeActualCost=trueproduces a validation error (DontContainIncludeActualCostWhileIncludeFreshPartialCost).
Response Structure
Response Columns
| Column | Type | Description |
|---|---|---|
Cost | Number | The cost amount (actual or forecasted) |
UsageDate / BillingMonth | Datetime | The date for the cost row |
CostStatus | String | Indicates whether the row is historical or projected |
Currency | String | Currency code (e.g., USD, EUR) |
CostStatus Values
| Value | Meaning |
|---|---|
Actual | Historical cost data (already incurred) |
Forecast | Projected future cost (model prediction) |
Granularity and Date Column Mapping
| Granularity | Date Column |
|---|---|
Daily | UsageDate |
Monthly | BillingMonth |
Key Differences from Query API Request Body
| Aspect | Forecast API | Query API |
|---|---|---|
| Grouping | ❌ Not supported | ✅ Supported via grouping field |
timeframe | Typically Custom only | Supports Custom, MonthToDate, BillingMonthToDate, etc. |
includeActualCost | ✅ Forecast-specific field | ❌ Not applicable |
includeFreshPartialCost | ✅ Forecast-specific field | ❌ Not applicable |
Response CostStatus column | ✅ Distinguishes Actual vs Forecast rows | ❌ Not present |
to date | Must be in the future | Can be any valid past/present date |