← Back to blog
Analysis

After Claude on Google Cloud (Anthropic managed) launched on 22 October 2026, can structured-output JSON Schema still live in output_config?

Published 2026-10-26Updated 2026-10-26About 11 minJSON Toolbox

Where this note goes

As of 2026-10-26, the Claude platform release notes date Claude Models on Google Cloud (Anthropic managed) to 2026-10-22: Anthropic runs the endpoint, Google Cloud IAM handles access, Marketplace billing. Docs say the request body matches Claude API, with structured outputs on the support list. JSON Schema still sits in output_config.format. You change Base URL, Bearer token, and workspace in the path—not move schema to another key. Direct API layering: which layer of output_config holds the schema. Bedrock text blocks: Bedrock structured output.

Lift an extraction call from Bedrock or api.anthropic.com to GCP and three mistakes show up often: still sending x-api-key; workspace only in a header; assuming anthropic-version: 2026-10-21 is already the default in official GCP samples. The schema layer usually stays put.

What 22 October actually opened

As of 2026-10-26, from the release notes and Anthropic managed docs:

  • Endpoint: https://claude.googleapis.com/v1/projects/{project}/locations/global/workspaces/{workspace}/invoke; Messages at .../invoke/v1/messages.
  • Billing: Google Cloud Marketplace; enable Claude API on the project and finish Anthropic org binding.
  • GA features listed: Structured outputs, tool use (including MCP connector), message batches, prompt caching, Fast mode (Opus 5.5), and more.
  • Same day: release notes also mention Opus 5.5 Fast mode on Google Cloud—different latency and billing, not a conflict with structured output.

One line. You change how you connect (URL + Google OAuth), not where the contract lives (output_config.format.schema).

Base URL, workspace, Bearer

Three differences from the direct Claude API:

  1. Base URL is the claude.googleapis.com project/workspace path, not https://api.anthropic.com.
  2. Auth is Authorization: Bearer <google-access-token>; do not send x-api-key.
  3. Workspace ID is in the URL; do not send anthropic-workspace-id.

Everything else matches Claude API: anthropic-version, anthropic-beta, body, streaming, response shape. Org-level routing uses claudeOrganization/invoke without a workspace in the path—skip until you need it.

anthropic-version vs direct API

On 2026-10-21 the direct API default moved to anthropic-version: 2026-10-21 (see the 21 October version note), which rejects temperature and friends. Google Cloud Anthropic managed cURL still examples anthropic-version: 2023-06-01; partner docs updated 2026-10-22 UTC match.

Docs say headers match Claude API but do not mandate 2026-10-21 on GCP. Practical order: ship one output_config call with 2023-06-01; if you unify version headers company-wide, retry 2026-10-21 in a test project and watch for sampling 400s. Do not copy Bedrock’s “4.7+ only” rule onto this path—it is a different wire.

Schema nesting unchanged

Structured output still uses output_config.format, type json_schema, contract in schema. Anthropic managed lists Structured outputs with the same meaning as the structured outputs page.

curl "https://claude.googleapis.com/v1/projects/$PROJECT/locations/global/workspaces/$WORKSPACE/invoke/v1/messages" \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "content-type: application/json" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
    "model": "claude-opus-5-5",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "Extract ticket category and priority from the text."}],
    "output_config": {
      "format": {
        "type": "json_schema",
        "schema": {
          "type": "object",
          "properties": {
            "category": { "type": "string", "enum": ["billing", "technical", "other"] },
            "priority": { "type": "string", "enum": ["low", "medium", "high", "urgent"] }
          },
          "required": ["category", "priority"],
          "additionalProperties": false
        }
      }
    }
  }'

Parse JSON from a text content block—not a Bedrock-style schema string. Subset limits (additionalProperties: false, no minimum, etc.) match the direct API. You can still set strict: true on tools in the same request; MCP connector is supported, but tool definitions and output schema remain two JSON contracts.

Anthropic managed vs Google managed

  • Anthropic managed (this note): Claude API /v1/messages; model in the JSON body; anthropic-version in headers; structured output via output_config.
  • Google managed (Agent Platform): model in the prediction URL; anthropic_version in the body; streaming via :streamRawPredict; snapshot IDs may use @ instead of date hyphens (e.g. claude-haiku-4-5@20251001).

Haiku 5.5 is claude-haiku-5-5 on Claude API docs; Google managed samples may show @ 4.x IDs. Fix the model string before you move where the schema attaches.

Check it in JSON Toolbox

{
  "ok_body": {
    "model": "claude-opus-5-5",
    "max_tokens": 1024,
    "messages": [{ "role": "user", "content": "Classify this ticket." }],
    "output_config": {
      "format": {
        "type": "json_schema",
        "schema": {
          "type": "object",
          "properties": {
            "category": { "type": "string" },
            "priority": { "type": "string" }
          },
          "required": ["category", "priority"],
          "additionalProperties": false
        }
      }
    }
  },
  "wrong_vertex_shape": {
    "anthropic_version": "vertex-2023-10-16",
    "messages": [{ "role": "user", "content": "Hi" }]
  },
  "ok_ticket": { "category": "billing", "priority": "urgent" },
  "bad_ticket": { "category": "billing", "priority": "2" }
}
  1. Paste all four blobs into JSON format. wrong_vertex_shape is Google managed style, not Anthropic managed Messages.
  2. Use JSON → Schema from ok_ticket and compare to ok_body.output_config.format.schema.
  3. Schema validator: accept ok_ticket, reject bad_ticket (priority not in enum).
  4. Tool inputs: Function Calling. Output contract: Structured output.

FAQ

Do I still send x-api-key on Google Cloud Anthropic managed?

No. Use a Google Bearer token.

Must this path send anthropic-version 2026-10-21 like the direct API?

Official samples still use 2023-06-01. Measure on GCP before upgrading.

Does output_config.format.schema still need additionalProperties: false?

Yes. Same subset as direct API.

Is this the same as the Google-managed Agent Platform endpoint?

No. Different URL and body.

How does this split from the Bedrock structured-output note?

That note is AWS Bedrock; this one is 2026-10-22 GCP Anthropic managed wiring.

Summary

As of 2026-10-26, Claude on Google Cloud (Anthropic managed) is dated 2026-10-22. JSON Schema still belongs in output_config.format.schema. Switch to claude.googleapis.com, workspace in the URL, Google Bearer, and drop x-api-key. Official anthropic-version samples may stay on 2023-06-01 while the direct API defaults to 2026-10-21—verify separately. Do not mix in Google managed anthropic_version bodies. Next: pass the same schema on a test GCP project, then align version-header policy.