Multi-Platform Portability & Model Upgrades

Vertex AI Model IDs: The @date Form and Cross-Platform Lookup Tables

On Google Cloud, claude-opus-4-8 is just claude-opus-4-8 — but Haiku 4.5 is claude-haiku-4-5@20251001. The generation boundary explains the split, and a small lookup table makes it a non-issue.

Claude 3P 101 · Updated July 2026 · Unofficial guide

Google Cloud serves Claude with bare, Anthropic-style model IDs — no anthropic. prefix, that convention is Bedrock-only. But Anthropic's ID table for the platform shows some older models carrying a version-date suffix in @YYYYMMDD form: claude-haiku-4-5@20251001, claude-sonnet-4-5@20250929, claude-opus-4-5@20251101. Current-generation models — Claude Fable 5, Opus 4.8, 4.7, 4.6, Sonnet 5, Sonnet 4.6 — are undated. If your code assumes one form or the other everywhere, one class of model will 404 on you.

Why the split exists

Every Claude model ID is a pinned snapshot. What changed with the Claude 4.6 generation is the naming: starting at 4.6, IDs use a dateless format that is still a pinned snapshot, while pre-4.6 models keep dated identifiers (on the first-party API the dated form is claude-haiku-4-5-20251001, with claude-haiku-4-5 as a convenience alias). Each platform renders that date its own way — Google appends @20251001, Bedrock embeds -20251001-v1:0 — but they are the same snapshot underneath. So the "@date rule" is really the generation rule wearing Google syntax: 4.6 and later, bare; earlier, dated.

One caveat: Google's own usage page also lists short undated names for some older models (e.g. claude-haiku-4-5, claude-3-7-sonnet). Where Anthropic documents the @date form, prefer it — the explicit snapshot is unambiguous, and it matches what the rest of your fleet pins on other platforms.

Where the model ID goes on Vertex

Remember that on Vertex the model is not a body field — it is part of the endpoint URL (.../publishers/anthropic/models/claude-haiku-4-5@20251001:rawPredict). The AnthropicVertex client handles that placement; you still pass the platform-correct string:

from anthropic import AnthropicVertex

client = AnthropicVertex(project_id="my-project", region="global")
msg = client.messages.create(
    model="claude-haiku-4-5@20251001",   # dated: pre-4.6 model
    max_tokens=512,
    messages=[{"role": "user", "content": "Hello"}],
)
# current generation is bare on Vertex: model="claude-opus-4-8"

The cross-platform lookup table

Combined with Bedrock's prefix rule, you now have every reason to stop constructing IDs in code and start maintaining one table. Rows are canonical (first-party) IDs; columns are platforms; blank cells default to the canonical form:

Canonical (1P / P-AWS / Foundry)Amazon BedrockGoogle Cloud
claude-fable-5anthropic.claude-fable-5claude-fable-5
claude-opus-4-8anthropic.claude-opus-4-8claude-opus-4-8
claude-sonnet-5anthropic.claude-sonnet-5claude-sonnet-5
claude-haiku-4-5anthropic.claude-haiku-4-5-20251001-v1:0claude-haiku-4-5@20251001

Practical rules for maintaining it:

Rule of thumb: if a Vertex request for an older Claude model fails while the same code works for Opus 4.8, check the ID form first — the missing @date suffix is the usual culprit.

Where to go next

See the Vertex model ID format guide for the single-platform basics, and the provider factory for where this table plugs into application code.

Sources