get-gcp-recommendation
dci get-gcp-recommendation <billingAccountId> <gcp_service> [flags]
Returns the recommendation for one product line (gcp_service) and region scope on the GCP
billing account, including analysis metrics and time-bucketed eligible spend. Use
granularity to choose the eligible-spend bucket size (defaults to day).
region is an optional query param, defaulting to global. In v1 the only supported values
are gcp_service=compute and region=global. When no stored recommendation matches the
scope, recommendation is omitted and estimatedEquivalentRecommendedCommitment is 0.
billingAccountId— GCP Billing Account ID (formatXXXXXX-XXXXXX-XXXXXX; the account that owns the CUDs) that scopes the request.gcp_service— PS4C product line to fetch the recommendation for.
Flags
| Flag | Type | Default | Example | Description |
|---|---|---|---|---|
--region | string | Filter GCP planned purchases by region scope. Requires gcp_service; when omitted together with gcp_service, all available regions for all available product lines are returned. A request with region but no gcp_service returns 400 with code gcp_service_required. One of: "global". | ||
--granularity | string | "day" | Time bucket size for eligible-spend data points on the recommendation response. If omitted, defaults to day. Coarser buckets return min/max/median usage; hour returns per-hour totals. One of: "hour", "day", "week", "month". |
Every command also accepts the CLI-wide flags for output shaping — see Output formats and Table output options.
Output
Recommendation detail with eligible-spend usage series.
By default dci renders the result as a table. Use --output json to get the full structure described below — see Output formats.
| Field | Type | Description |
|---|---|---|
estimatedEquivalentRecommendedCommitment | number (double) | Shelf-price hourly equivalent ($/h) of the recommended commitment, derived from the median hourly eligible usage over the trailing window multiplied by estimatedAverageCoverage. Use this to compare the recommendation line to eligible usage on charts. |
recommendation | object | Recommended commitment metrics for the requested (service, region) scope. |
recommendation.policy | string | Coverage target policy currently configured for this commitment type (display name). One of: "Conservative", "Balanced (Recommended)", "Max Savings". |
recommendation.region | string | Region scope for this recommendation. v1 supports global only. One of: "global". |
recommendation.service | string | PS4C product line (gcp_service) this recommendation belongs to. One of: "compute". |
recommendation.currentCommitment | number (double) | Active hourly commitment ($/h) currently applied to this billing account and product line, including commitments already purchased. |
recommendation.recommendedCommitment | number (double) | Recommended total hourly commitment ($/h) based on usage patterns and your commitment policy. Designed to increase savings while managing underutilization risk. |
recommendation.potentialAdditionalSavings | number (double) | Estimated additional monthly savings ($/month) from applying the recommended commitment relative to currentCommitment. |
recommendation.estimatedAverageCoverage | number (double) | Estimated average coverage (0–1) of eligible spend if the recommended commitment were in place. |
eligibleUsage | array of object | Eligible spend over time at the requested granularity. Empty when no eligible usage exists in the trailing window. |
eligibleUsage[].usageTime | string (date-time) | Start of the time bucket for this data point (UTC). |
eligibleUsage[].totalUsage | number (double) | Total eligible usage in the bucket when granularity is hour. Prefer min/max/median for coarser granularities. |
eligibleUsage[].minUsage | number (double) | Minimum eligible usage ($/h) observed in the bucket (day/week/month views). |
eligibleUsage[].maxUsage | number (double) | Maximum eligible usage ($/h) observed in the bucket (day/week/month views). |
eligibleUsage[].medianUsage | number (double) | Median eligible usage ($/h) observed in the bucket (day/week/month views). |
Raw JSON schema
{
"type": "object",
"description": "A single GCP recommendation paired with its eligible-spend usage series.",
"properties": {
"estimatedEquivalentRecommendedCommitment": {
"type": "number",
"format": "double",
"description": "Shelf-price hourly equivalent ($/h) of the recommended commitment, derived from the median hourly eligible usage over the trailing window multiplied by `estimatedAverageCoverage`. Use this to compare the recommendation line to eligible usage on charts."
},
"recommendation": {
"allOf": [
{
"type": "object",
"description": "A CUD purchase recommendation for a (service, region) scope.",
"properties": {
"policy": {
"type": "string",
"enum": [
"Conservative",
"Balanced (Recommended)",
"Max Savings"
],
"description": "Coverage target policy currently configured for this commitment type (display name).",
"x-enumDescriptions": {
"Conservative": "Lower coverage target; favors stable usage and lower underutilization risk.",
"Balanced (Recommended)": "Moderate coverage target; default balance of savings and buffer.",
"Max Savings": "Aggressive coverage target; highest savings potential with a smaller buffer."
}
},
"region": {
"type": "string",
"enum": [
"global"
],
"description": "Region scope for this recommendation. v1 supports `global` only."
},
"service": {
"type": "string",
"enum": [
"compute"
],
"description": "PS4C product line (`gcp_service`) this recommendation belongs to."
},
"currentCommitment": {
"type": "number",
"format": "double",
"description": "Active hourly commitment ($/h) currently applied to this billing account and product line, including commitments already purchased."
},
"recommendedCommitment": {
"type": "number",
"format": "double",
"description": "Recommended total hourly commitment ($/h) based on usage patterns and your commitment policy. Designed to increase savings while managing underutilization risk."
},
"potentialAdditionalSavings": {
"type": "number",
"format": "double",
"description": "Estimated additional monthly savings ($/month) from applying the recommended commitment relative to `currentCommitment`."
},
"estimatedAverageCoverage": {
"type": "number",
"format": "double",
"description": "Estimated average coverage (0–1) of eligible spend if the recommended commitment were in place."
}
}
}
],
"description": "Recommended commitment metrics for the requested (service, region) scope."
},
"eligibleUsage": {
"type": "array",
"description": "Eligible spend over time at the requested `granularity`. Empty when no eligible usage exists in the trailing window.",
"items": {
"type": "object",
"description": "One time-bucketed eligible-spend usage point for the recommendation chart. Units are shelf-price hourly dollars ($/h) unless noted by the client visualization.",
"properties": {
"usageTime": {
"type": "string",
"format": "date-time",
"description": "Start of the time bucket for this data point (UTC).",
"nullable": true
},
"totalUsage": {
"type": "number",
"format": "double",
"description": "Total eligible usage in the bucket when granularity is `hour`. Prefer min/max/median for coarser granularities."
},
"minUsage": {
"type": "number",
"format": "double",
"description": "Minimum eligible usage ($/h) observed in the bucket (day/week/month views)."
},
"maxUsage": {
"type": "number",
"format": "double",
"description": "Maximum eligible usage ($/h) observed in the bucket (day/week/month views)."
},
"medianUsage": {
"type": "number",
"format": "double",
"description": "Median eligible usage ($/h) observed in the bucket (day/week/month views)."
}
}
}
}
}
}
Errors
On failure, dci prints a single error message — with a hint when one is available — and exits with a typed code your scripts can branch on. See Errors and exit codes for the full contract.
HTTP status to exit code mapping
| HTTP status | Exit code | Error code | Meaning |
|---|---|---|---|
| 400 | 30 | VALIDATION_ERROR | The arguments or request body were rejected. Review the command's flags and payload. |
| 401 | 10 | AUTHENTICATION_FAILED | Not signed in, or the API token is invalid. Run dci login or check DCI_API_KEY. |
| 403 | 11 | PERMISSION_DENIED | The DoiT user or the active customer context does not have access. |
| 404 | 20 | RESOURCE_NOT_FOUND | The requested resource does not exist. Check the identifier argument. |
| 500, 503 | 40 | API_SERVER_ERROR | The API failed to process the request. Retryable; contact DoiT support if it persists. |
Related
- get-gcp-billing-account — Get a GCP billing account
- list-gcp-billing-accounts — List GCP billing accounts
- list-gcp-billing-accounts-settings — List billing account engine settings
- list-gcp-planned-purchases — List GCP planned purchases
- list-gcp-recommendations — List GCP recommendations
- list-gcp-resource-cuds — List GCP resource-based Committed Use Discounts
- list-gcp-spend-cuds — List GCP spend-based Committed Use Discounts
- API reference: GET /ps4commitments/v1/gcp/billing-accounts/{billingAccountId}/recommendations/{gcp_service}
Aliases: getgcprecommendation