Google Cloud Introduces Date-Stamped API Versioning for Compute Engine
Google Cloud has rolled out a new approach to API versioning for its Compute Engine service, allowing users to select specific, date-stamped versions of the API. This change is part of a broader effort to improve…

Google Cloud has made multi-versioning of the Compute Engine API generally available, introducing immutable, date-stamped API versions alongside the long-lived /v1 surface (InfoQ, 2026). Stable versions are named with a YYYY-MM-DD format and are released quarterly, starting with 2026-09-01. Preview versions include a -preview suffix and are valid for one year. Callers can select a specific version using the X-Goog-Api-Version header or the $apiVersion query parameter on the unchanged /compute/v1/ path. Requests that do not specify a version continue to use /v1, which has no end-of-life date. [1]
According to software engineer Michael Murstein, the need for multi-versioning arose from the challenges of maintaining a single, mutable production surface for the /v1 API. Changes to defaults or error formats risked breaking existing scripts or required lengthy migrations. Google's new approach, called interface-based versioning, aligns with its own AIP-185, which mandates that stable versions be date-stamped and preview versions be time-bound. Each stable version is a locked snapshot of all generally available features and defaults at the time of release, with no breaking changes made after publication. [1]
Some notable differences for callers include the default behavior of the AggregatedList operation, which now returns partial results by default in date-based versions, unlike /v1. The error body is also structured as google.rpc.ErrorInfo, including reason, domain, and metadata. Additionally, new versions allow Compute Engine to refine legacy IAM permission checks and introduce safer configuration defaults. Most callers will encounter the change through updated client libraries, which now bind to date-based versions while maintaining existing import paths and namespaces. [1]
Google Cloud has made multi-versioning of the Compute Engine API generally available, adding immutable, date-stamped API versions beside the long-lived /v1 surface (InfoQ, 2026). Stable versions are named YYYY-MM-DD and released quarterly, starting with 2026-09-01; preview versions carry a -preview suffix and a one-year lifespan. A caller selects one with the X-Goog-Api-Version header or the $apiVersion query parameter on the unchanged /compute/v1/ path, and a request that names no version keeps getting /v1, which has no end-of-life date. [1]
Advertisement
Software engineer Michael Murstein writes that the problem was the shape of /v1 itself. Because it "was a single, mutable production surface shared by every customer worldwide," any behavioral improvement, "even changing a counter-intuitive default or modernizing an error format," risked breaking existing scripts or required a multi-year migration. Google calls the replacement interface-based versioning, aligned with its own AIP-185, which requires stable versions to be dates and previews to be time-bound. [1]
Each stable version is a locked snapshot of all generally available features and defaults at that date, and no breaking change is made to it after publication. The blog post names three differences a caller will notice: A default: /v1 returns partial results from AggregatedList only when the request sets returnPartialSuccess, and the date-based versions turn it on, so one failing zone no longer fails a fleet-wide query. [1]
Google Cloud has made multi-versioning of the Compute Engine API generally available, adding immutable, date-stamped API versions beside the long-lived /v1 surface (InfoQ, 2026). Stable versions are named using YYYY-MM-DD format and are released quarterly, starting with 2026-09-01. Preview versions include a -preview suffix and have a one-year lifespan. A caller can select a version using the X-Goog-Api-Version header or the $apiVersion query parameter on the unchanged /compute/v1/ path. If no version is specified, the request defaults to /v1, which has no end-of-life date. [1]
Software engineer Michael Murstein explains that the problem with the existing /v1 API was its mutable nature, which made it challenging to introduce behavioral improvements without risking breaking changes for existing users. Google's new approach, called interface-based versioning, aligns with AIP-185, requiring stable versions to be date-stamped and previews to be time-bound. Each stable version is a locked snapshot of all generally available features and defaults at the time of release, with no breaking changes made after publication. [1]
Advertisement
The blog post highlights three key differences for API callers: the default behavior of the AggregatedList operation, which now returns partial results by default in date-based versions, unlike /v1. Error bodies are now structured as google.rpc.ErrorInfo with reason, domain, and metadata, and a request for a non-existent version lists available versions in the metadata. Additionally, new versions allow Compute Engine to refine legacy IAM permission checks and introduce safer configuration defaults, while automation pinned to /v1 remains unaffected. [1]
Sources
Prepared with AI assistance from the cited sources.
The Cali Reporter newsletter
The stories worth your time.
California, the country, and what comes next. Join our free newsletter for reporting that keeps you informed.
More in Technology
- Google Play's Closed Testing Requirements and the Importance of Feedback
Google Play's closed testing rule emphasizes the need for developers to gather meaningful feedback from testers, not just track app installs. This approach ensures that real user experiences are evaluated and addressed…
- World Diabetes Day 2026 Focuses on Early Diagnosis and Awareness
The 2026 World Diabetes Day campaign emphasizes the importance of early diagnosis, equitable access to care, and reducing diabetes stigma, according to the WHO. The theme 'Early action on diabetes' highlights the need…
- Understanding Memory Usage on Linux VPS
This article explains how to accurately interpret memory usage on a Linux VPS, focusing on the importance of the 'available' metric and the potential pitfalls of relying on the 'free' column.
