Claude On Vertex Ai

no

Original Documentation

Anthropic’s Claude models are now generally available through Vertex AI.


The Vertex API for accessing Claude is nearly-identical to the Messages API and supports all of the same options, with two key differences:

  • In Vertex, model is not passed in the request body. Instead, it is specified in the Google Cloud endpoint URL.
  • In Vertex, anthropic_version is passed in the request body (rather than as a header), and must be set to the value vertex-2023-10-16.

Vertex is also supported by Anthropic’s official client SDKs. This guide will walk you through the process of making a request to Claude on Vertex AI in either Python or TypeScript.

Note that this guide assumes you have already have a GCP project that is able to use Vertex AI. See using the Claude 3 models from Anthropic for more information on the setup required, as well as a full walkthrough.

Install an SDK for accessing Vertex AI#

First, install Anthropic’s client SDK for your language of choice.

pip install -U google-cloud-aiplatform "anthropic[vertex]"

npm install @anthropic-ai/vertex-sdk

implementation("com.anthropic:anthropic-java-vertex:2.+")
<dependency>
    <groupId>com.anthropic</groupId>
    <artifactId>anthropic-java-vertex</artifactId>
    <version>2.13.0</version>
</dependency>

go get github.com/anthropics/anthropic-sdk-go

# Gemfile
gem "anthropic"
gem "googleauth"

The PHP SDK does not currently support Google Vertex AI. For available SDK platform integrations, see Client SDKs.

Accessing Vertex AI#

Model Availability#

Note that Anthropic model availability varies by region. Search for “Claude” in the Vertex AI Model Garden or go to Use Claude 3 for the latest information.

API model IDs#

ModelVertex AI API model ID
Claude Opus 4.6claude-opus-4-6
Claude Sonnet 4.6claude-sonnet-4-6
Claude Sonnet 4.5claude-sonnet-4-5@20250929
Claude Sonnet 4claude-sonnet-4@20250514
Claude Sonnet 3.7 ⚠️claude-3-7-sonnet@20250219
Claude Opus 4.5claude-opus-4-5@20251101
Claude Opus 4.1claude-opus-4-1@20250805
Claude Opus 4claude-opus-4@20250514
Claude Haiku 4.5claude-haiku-4-5@20251001
Claude Haiku 3.5 ⚠️claude-3-5-haiku@20241022
Claude Haiku 3 ⚠️claude-3-haiku@20240307

Making requests#

Before running requests you may need to run gcloud auth application-default login to authenticate with GCP.

The following examples shows how to generate text from Claude on Vertex AI:

from anthropic import AnthropicVertex

project_id = "MY_PROJECT_ID"
region = "global"

client = AnthropicVertex(project_id=project_id, region=region)

message = client.messages.create(
    model="claude-opus-4-6",
    max_tokens=100,
    messages=[
        {
            "role": "user",
            "content": "Hey Claude!",
        }
    ],
)
print(message)
import { AnthropicVertex } from "@anthropic-ai/vertex-sdk";

const projectId = "MY_PROJECT_ID";
const region = "global";

// Goes through the standard `google-auth-library` flow.
const client = new AnthropicVertex({
  projectId,
  region
});

async function main() {
  const result = await client.messages.create({
    model: "claude-opus-4-6",
    max_tokens: 100,
    messages: [
      {
        role: "user",
        content: "Hey Claude!"
      }
    ]
  });
  console.log(JSON.stringify(result, null, 2));
}

main();
import com.anthropic.client.AnthropicClient;
import com.anthropic.client.okhttp.AnthropicOkHttpClient;
import com.anthropic.models.messages.Message;
import com.anthropic.models.messages.MessageCreateParams;
import com.anthropic.vertex.backends.VertexBackend;

public class VertexExample {

  public static void main(String[] args) {
    // Uses default Google Cloud credentials
    AnthropicClient client = AnthropicOkHttpClient.builder()
      .backend(VertexBackend.fromEnv())
      .build();

    Message message = client
      .messages()
      .create(
        MessageCreateParams.builder()
          .model("claude-opus-4-6")
          .maxTokens(100)
          .addUserMessage("Hey Claude!")
          .build()
      );

    System.out.println(message);
  }
}
package main

import (
	"context"
	"fmt"

	"github.com/anthropics/anthropic-sdk-go"
	"github.com/anthropics/anthropic-sdk-go/vertex"
)

func main() {
	// Uses default Google Cloud credentials
	client := anthropic.NewClient(
		vertex.WithGoogleAuth(context.Background(), "global", "MY_PROJECT_ID"),
	)

	message, err := client.Messages.New(context.Background(), anthropic.MessageNewParams{
		Model:     "claude-opus-4-6",
		MaxTokens: 100,
		Messages: []anthropic.MessageParam{
			anthropic.NewUserMessage(anthropic.NewTextBlock("Hey Claude!")),
		},
	})
	if err != nil {
		panic(err)
	}
	fmt.Printf("%+v\n", message)
}
require "anthropic"

client = Anthropic::VertexClient.new(
  region: "global",
  project_id: "MY_PROJECT_ID"
)

message = client.messages.create(
  model: "claude-opus-4-6",
  max_tokens: 100,
  messages: [{role: "user", content: "Hey Claude!"}]
)

puts message.content.first.text
MODEL_ID=claude-opus-4-6
LOCATION=global
PROJECT_ID=MY_PROJECT_ID

curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://$LOCATION-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/anthropic/models/${MODEL_ID}:streamRawPredict -d \
'{
  "anthropic_version": "vertex-2023-10-16",
  "messages": [{
    "role": "user",
    "content": "Hey Claude!"
  }],
  "max_tokens": 100,
}'

See the client SDKs and the official Vertex AI docs for more details.

Claude is also available through Amazon Bedrock and Microsoft Foundry.

Activity logging#

Vertex provides a request-response logging service that allows customers to log the prompts and completions associated with your usage.

Anthropic recommends that you log your activity on at least a 30-day rolling basis in order to understand your activity and investigate any potential misuse.

Turning on this service does not give Google or Anthropic any access to your content.

Feature support#

For all currently supported features on Vertex AI, see API features overview.

Global vs regional endpoints#

Starting with Claude Sonnet 4.5 and all future models, Google Vertex AI offers two endpoint types:

  • Global endpoints: Dynamic routing for maximum availability
  • Regional endpoints: Guaranteed data routing through specific geographic regions

Regional endpoints include a 10% pricing premium over global endpoints.

This applies to Claude Sonnet 4.5 and future models only. Older models (Claude Sonnet 4, Opus 4, and earlier) maintain their existing pricing structures.

When to use each option#

Global endpoints (recommended):

  • Provide maximum availability and uptime
  • Dynamically route requests to regions with available capacity
  • No pricing premium
  • Best for applications where data residency is flexible
  • Only supports pay-as-you-go traffic (provisioned throughput requires regional endpoints)

Regional endpoints:

  • Route traffic through specific geographic regions
  • Required for data residency and compliance requirements
  • Support both pay-as-you-go and provisioned throughput
  • 10% pricing premium reflects infrastructure costs for dedicated regional capacity

Implementation#

Using global endpoints (recommended):

Set the region parameter to "global" when initializing the client:

from anthropic import AnthropicVertex

project_id = "MY_PROJECT_ID"
region = "global"

client = AnthropicVertex(project_id=project_id, region=region)

message = client.messages.create(
    model="claude-opus-4-6",
    max_tokens=100,
    messages=[
        {
            "role": "user",
            "content": "Hey Claude!",
        }
    ],
)
print(message)

const projectId = "MY_PROJECT_ID";
const region = "global";

const client = new AnthropicVertex({
  projectId,
  region
});

const result = await client.messages.create({
  model: "claude-opus-4-6",
  max_tokens: 100,
  messages: [
    {
      role: "user",
      content: "Hey Claude!"
    }
  ]
});
import com.anthropic.client.AnthropicClient;
import com.anthropic.client.okhttp.AnthropicOkHttpClient;
import com.anthropic.models.messages.MessageCreateParams;
import com.anthropic.vertex.backends.VertexBackend;

// Uses default Google Cloud credentials
AnthropicClient client = AnthropicOkHttpClient.builder()
  .backend(VertexBackend.fromEnv())
  .build();

var message = client
  .messages()
  .create(
    MessageCreateParams.builder()
      .model("claude-opus-4-6")
      .maxTokens(100)
      .addUserMessage("Hey Claude!")
      .build()
  );
package main

import (
	"context"

	"github.com/anthropics/anthropic-sdk-go"
	"github.com/anthropics/anthropic-sdk-go/vertex"
)

func main() {
	// Uses default Google Cloud credentials
	client := anthropic.NewClient(
		vertex.WithGoogleAuth(context.Background(), "global", "MY_PROJECT_ID"),
	)

	message, _ := client.Messages.New(context.Background(), anthropic.MessageNewParams{
		Model:     "claude-opus-4-6",
		MaxTokens: 100,
		Messages: []anthropic.MessageParam{
			anthropic.NewUserMessage(anthropic.NewTextBlock("Hey Claude!")),
		},
	})
	_ = message
}
require "anthropic"

client = Anthropic::VertexClient.new(
  region: "global",
  project_id: "MY_PROJECT_ID"
)

message = client.messages.create(
  model: "claude-opus-4-6",
  max_tokens: 100,
  messages: [{role: "user", content: "Hey Claude!"}]
)

puts message.content.first.text

Using regional endpoints:

Specify a specific region like "us-east1" or "europe-west1":

from anthropic import AnthropicVertex

project_id = "MY_PROJECT_ID"
region = "us-east1"  # Specify a specific region

client = AnthropicVertex(project_id=project_id, region=region)

message = client.messages.create(
    model="claude-opus-4-6",
    max_tokens=100,
    messages=[
        {
            "role": "user",
            "content": "Hey Claude!",
        }
    ],
)
print(message)

const projectId = "MY_PROJECT_ID";
const region = "us-east1"; // Specify a specific region

const client = new AnthropicVertex({
  projectId,
  region
});

const result = await client.messages.create({
  model: "claude-opus-4-6",
  max_tokens: 100,
  messages: [
    {
      role: "user",
      content: "Hey Claude!"
    }
  ]
});
import com.anthropic.client.AnthropicClient;
import com.anthropic.client.okhttp.AnthropicOkHttpClient;
import com.anthropic.models.messages.MessageCreateParams;
import com.anthropic.vertex.backends.VertexBackend;

// Uses default Google Cloud credentials with specific region
AnthropicClient client = AnthropicOkHttpClient.builder()
  .backend(
    VertexBackend.builder()
      .region("us-east1") // Specify a specific region
      .project("MY_PROJECT_ID")
      .build()
  )
  .build();

var message = client
  .messages()
  .create(
    MessageCreateParams.builder()
      .model("claude-opus-4-6")
      .maxTokens(100)
      .addUserMessage("Hey Claude!")
      .build()
  );
package main

import (
	"context"

	"github.com/anthropics/anthropic-sdk-go"
	"github.com/anthropics/anthropic-sdk-go/vertex"
)

func main() {
	// Specify a specific region
	client := anthropic.NewClient(
		vertex.WithGoogleAuth(context.Background(), "us-east1", "MY_PROJECT_ID"),
	)

	message, _ := client.Messages.New(context.Background(), anthropic.MessageNewParams{
		Model:     "claude-opus-4-6",
		MaxTokens: 100,
		Messages: []anthropic.MessageParam{
			anthropic.NewUserMessage(anthropic.NewTextBlock("Hey Claude!")),
		},
	})
	_ = message
}
require "anthropic"

client = Anthropic::VertexClient.new(
  region: "us-east1", # Specify a specific region
  project_id: "MY_PROJECT_ID"
)

message = client.messages.create(
  model: "claude-opus-4-6",
  max_tokens: 100,
  messages: [{role: "user", content: "Hey Claude!"}]
)

puts message.content.first.text

Additional resources#

Link last verified June 7, 2026. View original ↗
Source: Anthropic Platform Docs
Link last verified: 2026-02-26