Claude model IDs on Google Vertex AI trip people up for two reasons. First, the ID is not passed where Anthropic's own API puts it. Second, Google Cloud uses a mix of undated IDs and @date variants, and it is not obvious which ones are safe to pin in production. This article untangles both.
The model goes in the URL, not the body
The Vertex AI surface is nearly identical to the Anthropic Messages API, with two documented differences: the model field is not passed in the request body — it goes in the endpoint URL — and anthropic_version is passed in the body (not as a header) and must be "vertex-2023-10-16". The full non-streaming endpoint looks like this:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID
/locations/LOCATION/publishers/anthropic/models/MODEL:rawPredict
The publishers/anthropic/models/ path segment is how Vertex namespaces partner models. Streaming uses the same URL with :streamRawPredict. If you use the AnthropicVertex Python client, all of this is assembled for you — you pass model="claude-opus-4-8" to messages.create() and the SDK builds the URL.
Bare IDs — no anthropic. prefix
Unlike Amazon Bedrock, which prefixes IDs with anthropic., Vertex AI uses bare Anthropic-style names: claude-fable-5, claude-opus-4-8, claude-sonnet-5, claude-haiku-4-5, and so on down the catalogue. If you are porting code from Bedrock, dropping the prefix is step one; the article on why model IDs differ across platforms covers the full mapping.
Undated IDs, @date IDs, and what "pinned" means
Google Cloud's Claude catalogue shows two ID shapes. Current-generation models — Fable 5, Opus 4.8/4.7/4.6, Sonnet 5, Sonnet 4.6 — use undated IDs like claude-opus-4-8. Some older models carry a version-date suffix: claude-haiku-4-5@20251001, claude-sonnet-4-5@20250929, claude-opus-4-5@20251101.
The crucial point: an undated ID is not an evergreen "latest" pointer. Per Anthropic's model documentation, every Claude model ID is a pinned snapshot; starting with the 4.6 generation the IDs use a dateless format that is still a pinned snapshot. claude-opus-4-8 will always be Opus 4.8 — it will never silently become Opus 4.9. Pre-4.6 dateless aliases, by contrast, are convenience pointers that resolve to dated IDs, which is why the older Vertex entries expose explicit @date forms. If you see @latest-style aliases elsewhere in Vertex's Model Garden, treat them as a different publisher's convention — for Claude, pin the exact ID shown in the documentation.
Tracking deprecations and retirements
Model lifecycle on Vertex AI is set by Google, not Anthropic, and the dates are published on Google's Claude partner-model page as "retirement not sooner than" commitments. As of July 2026, for example: Claude Fable 5 not sooner than June 8, 2027; Opus 4.8 not sooner than May 28, 2027; Sonnet 5 not sooner than December 24, 2026. One quirk worth knowing during migrations: a few retired models live on longer on Google Cloud than elsewhere — Claude Opus 4 is retired except on Google Cloud, and Sonnet 4 remains only on Bedrock and Google Cloud. That is a grace period, not a plan; budget the migration anyway.
Practical habits that keep you ahead of retirement dates:
| Habit | Why |
|---|---|
| Review Google's Claude lifecycle table quarterly | Retirement dates are Google-set and can differ from Anthropic's own schedule |
| Keep one config key per environment for the model ID | Upgrades become a config change with a rollback path |
| Re-baseline cost when changing generations | Opus 4.7+ and Sonnet 5 use a newer tokenizer producing roughly 30% more tokens for the same text |
| Remember quota lineages | Models launched after May 26, 2026 share per-lineage quota buckets, so a same-lineage upgrade needs no new quota request |
Where to go next
For the enablement flow see Model Garden setup, and for lifecycle planning in depth read the Vertex model version lifecycle guide.