> ## Documentation Index
> Fetch the complete documentation index at: https://portkey-docs-add-third-party-integration-issues-fixes.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Claude Code with Google Vertex AI

> Route Claude Code through Google Vertex AI via Portkey for observability, governance, and reliability

Route [Claude Code](https://code.claude.com/docs/en/overview) through Google Vertex AI via Portkey. Get full observability, cost tracking, and budget controls with your existing GCP infrastructure.

See [Claude Code overview](/integrations/libraries/claude-code) for why platform teams use Portkey.

<Note>
  **Important:** Always use the latest version of Claude Code. Older versions may not work with Portkey's gateway.
</Note>

## Quick Start

<Steps>
  <Step title="Add Vertex AI Provider in Portkey">
    Go to [AI Providers](https://app.portkey.ai/ai-providers) → **Add Provider** → Select **Google Vertex AI**.

    Enter your GCP credentials:

    * Service Account JSON key
    * GCP Project ID
    * Region (e.g., `us-central1`)

    Create a slug like `vertex-prod`.

    <Frame>
      <img src="https://mintcdn.com/portkey-docs-add-third-party-integration-issues-fixes/9m2__JsviRgGAg35/images/product/model-catalog/create-provider-page.png?fit=max&auto=format&n=9m2__JsviRgGAg35&q=85&s=f635c14fcb9a0f4261c853b9497fecea" width="500" data-path="images/product/model-catalog/create-provider-page.png" />
    </Frame>
  </Step>

  <Step title="Get Your Portkey API Key">
    Go to [API Keys](https://app.portkey.ai/api-keys) → Generate a new key.
  </Step>

  <Step title="Configure Claude Code">
    Edit `~/.claude/settings.json` (user-level) or `.claude/settings.json` (project-level):

    ```json theme={null}
    {
      "env": {
        "ANTHROPIC_BASE_URL": "https://api.portkey.ai",
        "ANTHROPIC_AUTH_TOKEN": "YOUR_PORTKEY_API_KEY",
        "ANTHROPIC_CUSTOM_HEADERS": "x-portkey-api-key: YOUR_PORTKEY_API_KEY\nx-portkey-provider: @vertex-prod",
        "ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-4-20250514",
        "ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-4-20250514",
        "ANTHROPIC_DEFAULT_HAIKU_MODEL": "claude-haiku-4-20250514"
      },
      "model": "claude-sonnet-4-20250514"
    }
    ```

    Replace:

    * `YOUR_PORTKEY_API_KEY` with your Portkey API key
    * `@vertex-prod` with your provider slug

    <Warning>
      **Model names are required.** Without these settings, Claude Code will use Anthropic Direct API model names which may fail on Vertex AI.
    </Warning>
  </Step>
</Steps>

That's it! All Claude Code requests now route through Vertex AI via Portkey. Monitor usage in the [Portkey Dashboard](https://app.portkey.ai/logs).

<Info>
  Portkey automatically handles `anthropic-beta` headers for Vertex AI: unsupported beta flags are filtered, provider-specific values are remapped, and supported flags are forwarded upstream. You do not need `forward_headers` in your config for Claude Code to work.

  To bypass this filtering and pass `anthropic-beta` through unchanged, add `"forward_headers": ["anthropic-beta"]` to your [Portkey Config](/product/ai-gateway/configs).
</Info>

## Trace Requests

Add trace IDs to group and debug requests in the Portkey Dashboard:

```json theme={null}
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.portkey.ai",
    "ANTHROPIC_AUTH_TOKEN": "YOUR_PORTKEY_API_KEY",
    "ANTHROPIC_CUSTOM_HEADERS": "x-portkey-api-key: YOUR_PORTKEY_API_KEY\nx-portkey-provider: @vertex-prod\nx-portkey-trace-id: claude-code-session-123"
  }
}
```

Use trace IDs to:

* Group all requests from a coding session
* Debug issues by filtering logs
* Track usage per project or task

## Advanced Configuration

### Fallbacks

Route to backup providers when Vertex AI fails. Create a config with fallback targets:

```json theme={null}
{
  "strategy": { "mode": "fallback" },
  "targets": [
    { "provider": "@vertex-prod" },
    { "provider": "@anthropic-prod" },
    { "provider": "@bedrock-prod" }
  ]
}
```

### Load Balancing

Distribute requests across multiple regions:

```json theme={null}
{
  "strategy": { "mode": "loadbalance" },
  "targets": [
    { "provider": "@vertex-us-central", "weight": 0.5 },
    { "provider": "@vertex-us-east", "weight": 0.5 }
  ]
}
```

### Caching

Reduce costs and latency for repeated queries:

```json theme={null}
{
  "provider": "@vertex-prod",
  "cache": { "mode": "simple" }
}
```

### Retries

Automatically retry failed requests:

```json theme={null}
{
  "provider": "@vertex-prod",
  "retry": { "attempts": 3, "on_status_codes": [429, 500, 502, 503] }
}
```

## Budget Limits

Set spending controls at the provider level:

1. Go to [Model Catalog](https://app.portkey.ai/model-catalog) → Select your Vertex integration
2. Click **Set Now**

<Frame>
  <img src="https://mintcdn.com/portkey-docs-add-third-party-integration-issues-fixes/9m2__JsviRgGAg35/images/product/model-catalog/budget-and-limits-set-now.png?fit=max&auto=format&n=9m2__JsviRgGAg35&q=85&s=9449590677f62a2063b4a2e2805cb9df" width="500" data-path="images/product/model-catalog/budget-and-limits-set-now.png" />
</Frame>

3. Configure:
   * **Cost limit**: Maximum spend (e.g., \$500/month)
   * **Token limit**: Maximum tokens (e.g., 10M tokens/week)
   * **Rate limit**: Requests per minute/hour

<Frame>
  <img src="https://mintcdn.com/portkey-docs-add-third-party-integration-issues-fixes/9m2__JsviRgGAg35/images/product/model-catalog/budget-and-limits-page-model-catalog.png?fit=max&auto=format&n=9m2__JsviRgGAg35&q=85&s=bf95204b7a3014605cd4c7b6e7d1ccfc" width="500" data-path="images/product/model-catalog/budget-and-limits-page-model-catalog.png" />
</Frame>

Budget limits prevent runaway costs from agentic coding sessions.

## Troubleshooting

### Error: `API Error: 500 Message: fetch failed`

**Cause:** Using the wrong base URL or environment variables.

**Fix:** Ensure you're using:

* `ANTHROPIC_BASE_URL` (not `ANTHROPIC_VERTEX_BASE_URL`)
* `https://api.portkey.ai` (not `https://api.portkey.ai/v1`)

❌ **Wrong:**

```json theme={null}
{
  "env": {
    "ANTHROPIC_VERTEX_BASE_URL": "https://api.portkey.ai/v1",
    "CLAUDE_CODE_USE_VERTEX": "1"
  }
}
```

✅ **Correct:**

```json theme={null}
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.portkey.ai",
    "ANTHROPIC_AUTH_TOKEN": "YOUR_PORTKEY_API_KEY",
    "ANTHROPIC_CUSTOM_HEADERS": "x-portkey-api-key: YOUR_PORTKEY_API_KEY\nx-portkey-provider: @vertex-prod"
  }
}
```

### Lightning Symbol (⚡) in Logs

**Cause:** Requests are going through as passthrough, meaning Portkey isn't handling them properly.

**Fix:**

1. Remove `/v1` from the base URL — use `https://api.portkey.ai`
2. Ensure `x-portkey-provider` or `x-portkey-config` is set in headers
3. Verify your Portkey API key is correct

### Claude Code Version Issues

**Cause:** Older versions of Claude Code may not be compatible.

**Fix:** Update to the latest version:

```bash theme={null}
claude update
```

Or reinstall:

```bash theme={null}
curl -fsSL https://claude.ai/install.sh | bash
```

## Complete Example

Full configuration with all features enabled:

```json theme={null}
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.portkey.ai",
    "ANTHROPIC_AUTH_TOKEN": "YOUR_PORTKEY_API_KEY",
    "ANTHROPIC_CUSTOM_HEADERS": "x-portkey-api-key: YOUR_PORTKEY_API_KEY\nx-portkey-config: YOUR_CONFIG_ID\nx-portkey-trace-id: my-project",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-4-20250514",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-4-20250514",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "claude-haiku-4-20250514"
  },
  "model": "claude-sonnet-4-20250514"
}
```

With Portkey Config:

```json theme={null}
{
  "strategy": { "mode": "fallback" },
  "targets": [
    { "provider": "@vertex-prod" },
    { "provider": "@anthropic-prod" }
  ],
  "cache": { "mode": "simple" },
  "retry": { "attempts": 3, "on_status_codes": [429, 500, 502, 503] }
}
```

# 3. Set Up Enterprise Governance

**Why Enterprise Governance?**

* **Cost Management**: Controlling and tracking AI spending across teams
* **Access Control**: Managing team access and workspaces
* **Usage Analytics**: Understanding how AI is being used across the organization
* **Security & Compliance**: Maintaining enterprise security standards
* **Reliability**: Ensuring consistent service across all users
* **Model Management**: Managing what models are being used in your setup

Portkey adds a comprehensive governance layer to address these enterprise needs.

**Enterprise Implementation Guide**

<AccordionGroup>
  <Accordion title="Step 1: Implement Budget Controls & Rate Limits">
    ### Step 1: Implement Budget Controls & Rate Limits

    Model Catalog enables you to have granular control over LLM access at the team/department level. This helps you:

    * Set up [budget limits](/product/model-catalog/budget-limits)
    * Prevent unexpected usage spikes using Rate limits
    * Track departmental spending

    #### Setting Up Department-Specific Controls:

    1. Navigate to [Model Catalog](https://app.portkey.ai/model-catalog) in Portkey dashboard
    2. Create new Provider for each engineering team with budget limits and rate limits
    3. Configure department-specific limits

    <Frame>
      <img src="https://mintcdn.com/portkey-docs-add-third-party-integration-issues-fixes/9m2__JsviRgGAg35/images/product/model-catalog/create-provider-page.png?fit=max&auto=format&n=9m2__JsviRgGAg35&q=85&s=f635c14fcb9a0f4261c853b9497fecea" width="500" data-path="images/product/model-catalog/create-provider-page.png" />
    </Frame>
  </Accordion>

  <Accordion title="Step 2: Define Model Access Rules">
    ### Step 2: Define Model Access Rules

    As your AI usage scales, controlling which teams can access specific models becomes crucial. You can simply manage AI models in your org by provisioning model at the top integration level.

    <Frame>
      <img src="https://mintcdn.com/portkey-docs-add-third-party-integration-issues-fixes/9m2__JsviRgGAg35/images/product/model-catalog/model-provisioning-page.png?fit=max&auto=format&n=9m2__JsviRgGAg35&q=85&s=f4b8dca7028bd84504acaf6b663404c5" width="500" data-path="images/product/model-catalog/model-provisioning-page.png" />
    </Frame>
  </Accordion>

  <Accordion title="Step 4: Set Routing Configuration">
    Portkey allows you to control your routing logic very simply with it's Configs feature. Portkey Configs provide this control layer with things like:

    * **Data Protection**: Implement guardrails for sensitive code and data
    * **Reliability Controls**: Add fallbacks, load-balance, retry and smart conditional routing logic
    * **Caching**: Implement Simple and Semantic Caching. and more....

    #### Example Configuration:

    Here's a basic configuration to load-balance requests to OpenAI and Anthropic:

    ```json theme={null}
    {
    	"strategy": {
    		"mode": "load-balance"
    	},
    	"targets": [
    		{
    			"override_params": {
    				"model": "@YOUR_OPENAI_PROVIDER_SLUG/gpt-model"
    			}
    		},
    		{
    			"override_params": {
    				"model": "@YOUR_ANTHROPIC_PROVIDER/claude-sonnet-model"
    			}
    		}
    	]
    }
    ```

    Create your config on the [Configs page](https://app.portkey.ai/configs) in your Portkey dashboard. You'll need the config ID for connecting.

    <Note>
      Configs can be updated anytime to adjust controls without affecting running applications.
    </Note>
  </Accordion>

  <Accordion title="Step 4: Implement Access Controls">
    ### Step 3: Implement Access Controls

    Create User-specific API keys that automatically:

    * Track usage per developer/team with the help of metadata
    * Apply appropriate configs to route requests
    * Collect relevant metadata to filter logs
    * Enforce access permissions

    Create API keys through:

    * [Portkey App](https://app.portkey.ai/)
    * [API Key Management API](/api-reference/admin-api/control-plane/api-keys/create-api-key)

    Example using Python SDK:

    ```python theme={null}
    from portkey_ai import Portkey

    portkey = Portkey(api_key="YOUR_ADMIN_API_KEY")

    api_key = portkey.api_keys.create(
        name="frontend-engineering",
        type="organisation",
        workspace_id="YOUR_WORKSPACE_ID",
        defaults={
            "config_id": "your-config-id",
            "metadata": {
                "environment": "development",
                "department": "engineering",
                "team": "frontend"
            }
        },
        scopes=["logs.view", "configs.read"]
    )
    ```

    For detailed key management instructions, see our [API Keys documentation](/api-reference/admin-api/control-plane/api-keys/create-api-key).
  </Accordion>

  <Accordion title="Step 5: Deploy & Monitor">
    ### Step 4: Deploy & Monitor

    After distributing API keys to your engineering teams, your enterprise-ready setup is ready to go. Each developer can now use their designated API keys with appropriate access levels and budget controls.
    Apply your governance setup using the integration steps from earlier sections
    Monitor usage in Portkey dashboard:

    * Cost tracking by engineering team
    * Model usage patterns for AI agent tasks
    * Request volumes
    * Error rates and debugging logs
  </Accordion>
</AccordionGroup>

<Check>
  ### Enterprise Features Now Available

  **You now have:**

  * Departmental budget controls
  * Model access governance
  * Usage tracking & attribution
  * Security guardrails
  * Reliability features
</Check>

# Portkey Features

Now that you have an enterprise-grade setup, let's explore the comprehensive features Portkey provides to ensure secure, efficient, and cost-effective AI operations.

### 1. Comprehensive Metrics

Using Portkey you can track 40+ key metrics including cost, token usage, response time, and performance across all your LLM providers in real time. You can also filter these metrics based on custom metadata that you can set in your configs. Learn more about metadata here.

<Frame>
  <img src="https://mintcdn.com/portkey-docs-add-third-party-integration-issues-fixes/iw8u5vDH8VX-5kWU/images/integrations/observability.png?fit=max&auto=format&n=iw8u5vDH8VX-5kWU&q=85&s=aff355af05efa0aa0168bde9e5c2de4d" width="600" data-path="images/integrations/observability.png" />
</Frame>

### 2. Advanced Logs

Portkey's logging dashboard provides detailed logs for every request made to your LLMs. These logs include:

* Complete request and response tracking
* Metadata tags for filtering
* Cost attribution and much more...

<Frame>
  <img src="https://mintcdn.com/portkey-docs-add-third-party-integration-issues-fixes/iw8u5vDH8VX-5kWU/images/llms/openai/logs.png?fit=max&auto=format&n=iw8u5vDH8VX-5kWU&q=85&s=2436bacd45bba4732dfb4d19fe806edc" width="3040" height="1764" data-path="images/llms/openai/logs.png" />
</Frame>

### 3. Unified Access to 1600+ LLMs

You can easily switch between 1600+ LLMs. Call various LLMs such as Anthropic, Gemini, Mistral, Azure OpenAI, Google Vertex AI, AWS Bedrock, and many more by simply changing the `provider` slug in your default `config` object.

### 4. Advanced Metadata Tracking

Using Portkey, you can add custom metadata to your LLM requests for detailed tracking and analytics. Use metadata tags to filter logs, track usage, and attribute costs across departments and teams.

<Card title="Custom Metata" icon="coins" href="/product/observability/metadata" />

### 5. Enterprise Access Management

<CardGroup cols={2}>
  <Card title="Budget Controls" icon="coins" href="/product/model-catalog/budget-limits">
    Set and manage spending limits across teams and departments. Control costs with granular budget limits and usage tracking.
  </Card>

  <Card title="Single Sign-On (SSO)" icon="key" href="/product/enterprise-offering/org-management/sso">
    Enterprise-grade SSO integration with support for SAML 2.0, Okta, Azure AD, and custom providers for secure authentication.
  </Card>

  <Card title="Organization Management" icon="building" href="/product/enterprise-offering/org-management">
    Hierarchical organization structure with workspaces, teams, and role-based access control for enterprise-scale deployments.
  </Card>

  <Card title="Access Rules & Audit Logs" icon="shield-check" href="/product/enterprise-offering/access-control-management#audit-logs">
    Comprehensive access control rules and detailed audit logging for security compliance and usage tracking.
  </Card>
</CardGroup>

### 6. Reliability Features

<CardGroup cols={3}>
  <Card title="Fallbacks" icon="life-ring" href="/product/ai-gateway/fallbacks">
    Automatically switch to backup targets if the primary target fails.
  </Card>

  <Card title="Conditional Routing" icon="route" href="/product/ai-gateway/conditional-routing">
    Route requests to different targets based on specified conditions.
  </Card>

  <Card title="Load Balancing" icon="key" href="/product/ai-gateway/load-balancing">
    Distribute requests across multiple targets based on defined weights.
  </Card>

  <Card title="Caching" icon="database" href="/product/ai-gateway/cache-simple-and-semantic">
    Enable caching of responses to improve performance and reduce costs.
  </Card>

  <Card title="Smart Retries" icon="database" href="/product/ai-gateway/automatic-retries">
    Automatic retry handling with exponential backoff for failed requests
  </Card>

  <Card title="Budget Limits" icon="shield-check" href="/product/model-catalog/budget-limits">
    Set and manage budget limits across teams and departments. Control costs with granular budget limits and usage tracking.
  </Card>
</CardGroup>

### 7. Advanced Guardrails

Protect your Project's data and enhance reliability with real-time checks on LLM inputs and outputs. Leverage guardrails to:

* Prevent sensitive data leaks
* Enforce compliance with organizational policies
* PII detection and masking
* Content filtering
* Custom security rules
* Data compliance checks

<Card title="Guardrails" icon="shield-check" href="/product/guardrails">
  Implement real-time protection for your LLM interactions with automatic detection and filtering of sensitive content, PII, and custom security rules. Enable comprehensive data protection while maintaining compliance with organizational policies.
</Card>

# FAQs

<AccordionGroup>
  <Accordion title="How do I update my AI Provider limits after creation?">
    Update AI Provider limits at any time from [Model Catalog](https://app.portkey.ai/model-catalog): 1. Open the provider you want to modify. 2. Update the budget or rate limits. 3. Save your changes.
  </Accordion>

  <Accordion title="Can I use multiple LLM providers with the same API key?">
    Yes! Add multiple AI Providers to Model Catalog (one for each provider) and attach them to a single config. This config can then be connected to your API key, allowing you to use multiple providers through a single API key.
  </Accordion>

  <Accordion title="How do I track costs for different teams?">
    Portkey provides several ways to track team costs:

    * Create separate AI Providers for each team
    * Use metadata tags in your configs
    * Set up team-specific API keys
    * Monitor usage in the analytics dashboard
  </Accordion>

  <Accordion title="What happens if a team exceeds their budget limit?">
    When a team reaches their budget limit:

    1. Further requests will be blocked
    2. Team admins receive notifications
    3. Usage statistics remain available in dashboard
    4. Limits can be adjusted if needed
  </Accordion>
</AccordionGroup>

# Next Steps

**Join our Community**

* [Discord Community](https://portkey.sh/discord-report)
* [GitHub Repository](https://github.com/Portkey-AI)

<Note>
  For enterprise support and custom features, contact our [enterprise team](https://calendly.com/portkey-ai).
</Note>
