---
title: Claude en Microsoft Foundry
url: https://platform.claude.com/docs/es/build-with-claude/claude-in-microsoft-foundry
description: Accede a los modelos Claude a través de Microsoft Foundry con endpoints y autenticación nativos de Azure.
---

Esta guía te muestra cómo configurar y realizar llamadas a la API de Claude en Microsoft Foundry usando uno de los SDK de cliente de Anthropic o solicitudes HTTP directas. Cuando accedes a Claude en Microsoft Foundry, se te factura el uso de Claude en Azure Marketplace. Puedes usar modelos de Claude como Claude Fable 5.1, Claude Opus 5.5, Claude Opus 5, Claude Opus 4.8, Claude Sonnet 5.5, Claude Sonnet 5 y Claude Haiku 5.5, y funciones como la ["context window" (ventana de contexto) de 1M de tokens](https://platform.claude.com/docs/es/build-with-claude/context-windows), mientras administras los costos a través de tu suscripción de Azure.

Claude está disponible en los tipos de implementación Global Standard y US Data Zone Standard en recursos de Foundry, y se factura en Claude Consumption Units a través de Azure Marketplace. Visita [precios de Claude en Microsoft Foundry](https://platform.claude.com/docs/es/about-claude/pricing#claude-in-microsoft-foundry-pricing) para obtener más detalles.

## Opciones de alojamiento

Los modelos de Claude en Microsoft Foundry están disponibles en dos opciones de alojamiento. Eliges la opción de alojamiento cuando configuras la implementación.

|                                | Alojado en Azure                                                          | Alojado en Anthropic                                                                                                                                                                                        |
| ------------------------------ | ------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Dónde se ejecuta la inferencia | Servicio operado por Anthropic que se ejecuta en infraestructura de Azure | Servicio operado por Anthropic que se ejecuta en infraestructura de Anthropic                                                                                                                               |
| Disponibilidad de modelos      | Los modelos más recientes de las familias Opus, Sonnet y Haiku            | Todos los modelos de Claude disponibles en Microsoft Foundry                                                                                                                                                |
| Tipos de implementación        | Global Standard, US Data Zone Standard                                    | Global Standard                                                                                                                                                                                             |
| Recomendado para               | La mayoría de las cargas de trabajo                                       | [Acceso a funciones o modelos que aún no están alojados en Azure](https://platform.claude.com/docs/es/build-with-claude/claude-in-microsoft-foundry#additional-features-not-supported-when-hosted-on-azure) |

Claude Sonnet 5.5 solo admite implementaciones Global Standard.

<Note>
  Anthropic actúa como procesador independiente para Microsoft. Los clientes que usan Claude a través de Microsoft Foundry están sujetos a los términos de uso de datos de Anthropic. Para las implementaciones alojadas en Azure, los prompts y las respuestas permanecen dentro de Azure. Solo los metadatos de uso y el contenido marcado por los sistemas de seguridad de Anthropic salen hacia Anthropic. Anthropic sigue cumpliendo sus compromisos de seguridad y de datos.
</Note>

## Requisitos previos

Antes de comenzar, asegúrate de tener:

* Una suscripción activa de Azure
* Acceso al [portal de Foundry](https://ai.azure.com/)
* La [CLI de Azure](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) instalada (necesaria para los ejemplos de cURL y CLI con Entra ID, opcional en los demás casos)
* Un rol de Azure RBAC que te permita usar el recurso, como **Foundry User** (anteriormente Azure AI User) o **Cognitive Services User**

## Instalar un SDK

Los [SDK de cliente](https://platform.claude.com/docs/es/cli-sdks-libraries/overview) de Anthropic admiten Foundry mediante un paquete o una clase de cliente específicos de la plataforma. Los ejemplos de esta página también muestran solicitudes con cURL y la CLI ant. Para configurar la CLI, consulta el [inicio rápido de la CLI](https://platform.claude.com/docs/es/cli-sdks-libraries/cli/quickstart).

<Note>
  Foundry es compatible con los SDK de C#, Go, Java, PHP, Python y TypeScript. Foundry no está disponible actualmente en el SDK de Ruby.
</Note>

<Tabs>
  <Tab title="Python">
    ```bash
    pip install -U "anthropic"

    # Para la autenticación con Entra ID, instala también la biblioteca Azure Identity
    pip install azure-identity
    ```
  </Tab>

  <Tab title="TypeScript">
    ```bash
    npm install @anthropic-ai/foundry-sdk

    # Para la autenticación con Entra ID, instala también la biblioteca Azure Identity
    npm install @azure/identity
    ```
  </Tab>

  <Tab title="C#">
    ```bash
    dotnet add package Anthropic.Foundry
    ```
  </Tab>

  <Tab title="Go">
    ```bash
    go get github.com/anthropics/anthropic-sdk-go/foundry

    # Para la autenticación con Entra ID, instala también la biblioteca Azure Identity
    go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
    ```
  </Tab>

  <Tab title="Java">
    <Tabs>
      <Tab title="Gradle">
        ```kotlin
        implementation("com.anthropic:anthropic-java:2.73.0")
        implementation("com.anthropic:anthropic-java-foundry:2.73.0")

        // Para la autenticación con Entra ID, agrega también la biblioteca Azure Identity
        implementation("com.azure:azure-identity:1.18.3")
        ```
      </Tab>

      <Tab title="Maven">
        ```xml
        <dependency>
            <groupId>com.anthropic</groupId>
            <artifactId>anthropic-java</artifactId>
            <version>2.73.0</version>
        </dependency>
        <dependency>
            <groupId>com.anthropic</groupId>
            <artifactId>anthropic-java-foundry</artifactId>
            <version>2.73.0</version>
        </dependency>
        <!-- For Entra ID authentication, also add the Azure Identity library -->
        <dependency>
            <groupId>com.azure</groupId>
            <artifactId>azure-identity</artifactId>
            <version>1.18.3</version>
        </dependency>
        ```
      </Tab>
    </Tabs>
  </Tab>

  <Tab title="PHP">
    ```bash
    composer require "anthropic-ai/sdk" "guzzlehttp/guzzle:^7"
    ```
  </Tab>

  <Tab title="Ruby">
    ```bash
    # El SDK de Ruby aún no admite Foundry de forma nativa (consulta los ejemplos
    # de Authentication para usar el SDK estándar de Ruby como alternativa)
    # Gemfile
    gem "anthropic"
    ```
  </Tab>
</Tabs>

## Aprovisionamiento

Foundry usa una jerarquía de dos niveles: los **recursos** contienen tu configuración de seguridad y facturación, mientras que las **implementaciones** son las instancias de modelo que llamas a través de la API. Primero crearás un recurso de Foundry y luego crearás una o más implementaciones de Claude dentro de él.

### Aprovisionamiento de recursos de Foundry

Crea un recurso de Foundry, que es necesario para usar y administrar servicios en Azure. Puedes seguir estas instrucciones para crear un [recurso de Foundry](https://learn.microsoft.com/en-us/azure/ai-services/multi-service-resource?pivots=azportal#create-a-new-azure-ai-foundry-resource). Alternativamente, puedes comenzar creando un [proyecto de Foundry](https://learn.microsoft.com/en-us/azure/foundry/how-to/create-projects), lo que implica crear un recurso de Foundry.

Para aprovisionar tu recurso:

1. Navega al [portal de Foundry](https://ai.azure.com/).
2. Crea un nuevo recurso de Foundry o selecciona uno existente.
3. Configura la administración de acceso usando claves de API emitidas por Azure o Entra ID (anteriormente Azure Active Directory) para el control de acceso basado en roles.
4. Opcionalmente, configura el recurso para que forme parte de una red privada (Azure Virtual Network) para restringir el acceso de red a tu recurso.
5. Anota el nombre de tu recurso. Lo usarás como `{resource}` en los endpoints de la API (por ejemplo, `https://{resource}.services.ai.azure.com/anthropic/v1/*`).

### Crear implementaciones de Foundry

Después de crear tu recurso, implementa un modelo de Claude para que esté disponible para llamadas a la API. Estos pasos describen el nuevo portal de Foundry (el interruptor **New Foundry** está activado):

1. Inicia sesión en el portal de Foundry. Desde la página de inicio del portal, selecciona **Discover** en la navegación superior derecha y luego **Models** en el panel izquierdo para abrir el catálogo de modelos.

2. Busca y selecciona un modelo de Claude (por ejemplo, claude-opus-5-5). Cada modelo aparece una sola vez en el catálogo, independientemente de cuántas opciones de alojamiento admita.

3. En la tarjeta del modelo, selecciona **Deploy** y luego **Custom settings** para abrir el panel de configuración de la implementación. Si eliges **Default settings** en su lugar, la implementación se configura automáticamente como Alojado en Azure para los modelos disponibles en ambas opciones de alojamiento.

4. En tu primera implementación de Claude, revisa los términos de Azure Marketplace, selecciona una industria y selecciona **Agree and Proceed** para aceptar los términos y suscribirte a la oferta de Azure Marketplace.

5. Configura la implementación:

   * **Deployment name:** De forma predeterminada es el ID del modelo, pero puedes personalizarlo (por ejemplo, `my-claude-deployment`). El nombre de la implementación no se puede cambiar después de crearla.
   * **Region scope:** Selecciona Global o, para los modelos alojados en Azure, Data Zone. Seleccionar Data Zone crea una implementación US Data Zone Standard, que mantiene la inferencia dentro de los Estados Unidos y equivale a establecer [`inference_geo: "us"`](https://platform.claude.com/docs/es/manage-claude/data-residency#inference-geo) en la Claude API. Para Claude Sonnet 5.5, selecciona Global.
   * **Model version:** Expande **Model version settings** y selecciona una versión en el menú desplegable **Model version**. Cada [opción de alojamiento](https://platform.claude.com/docs/es/build-with-claude/claude-in-microsoft-foundry#hosting-options) aparece como una versión de modelo independiente, etiquetada con su opción de alojamiento (por ejemplo, la versión 1 para Alojado en Anthropic y la versión 2 para Alojado en Azure).

6. Selecciona **Deploy** y espera a que se complete el aprovisionamiento.

7. Una vez implementado, selecciona **Build** en la navegación superior derecha, luego **Models** en el panel izquierdo, y abre tu implementación. La pestaña **Details** muestra el **Target URI** (la URL de tu endpoint) y la **Key** (tu clave de API).

Si el interruptor **New Foundry** está desactivado, estás en el diseño clásico del portal. Allí, abre **Model catalog** en el panel izquierdo para buscar e implementar un modelo, y abre **Models + endpoints** (en **My assets**) para ver tus implementaciones y los detalles de sus endpoints.

<Note>
  El nombre de implementación que elijas se convierte en el valor que pasas en el parámetro `model` de tus solicitudes a la API. Puedes crear varias implementaciones del mismo modelo con nombres diferentes para administrar configuraciones o "rate limits" (límites de velocidad) separados.
</Note>

## Autenticación

Claude en Microsoft Foundry admite dos métodos de autenticación: claves de API y tokens de Entra ID. Ambos métodos usan endpoints alojados en Azure con el formato `https://{resource}.services.ai.azure.com/anthropic/v1/*`.

### Autenticación con clave de API

Después de aprovisionar tu recurso de Claude en Foundry, puedes obtener una clave de API desde el portal de Foundry:

1. En el portal de Foundry, selecciona **Build** en la navegación superior derecha y luego **Models** en el panel izquierdo.
2. Abre tu implementación de Claude y selecciona la pestaña **Details**.
3. Copia el valor de **Key** (y anota el **Target URI** de tu endpoint).
4. Usa el encabezado `api-key` o `x-api-key` en tus solicitudes, o proporciónala al SDK.

El cliente de Foundry del SDK requiere una clave de API y un nombre de recurso o una URL base, y los lee automáticamente de las siguientes variables de entorno si están definidas:

* `ANTHROPIC_FOUNDRY_API_KEY` - Tu clave de API
* `ANTHROPIC_FOUNDRY_RESOURCE` - El nombre de tu recurso (por ejemplo, `example-resource`)
* `ANTHROPIC_FOUNDRY_BASE_URL` - Alternativa al nombre del recurso: la URL base completa (por ejemplo, `https://example-resource.services.ai.azure.com/anthropic/`). El SDK de C# no lee esta variable: siempre construye la URL base a partir del nombre del recurso.

<Note>
  Los parámetros `resource` y `base_url` son mutuamente excluyentes. Proporciona el nombre del recurso (que el SDK usa para construir la URL como `https://{resource}.services.ai.azure.com/anthropic/`) o la URL base completa directamente.
</Note>

**Ejemplo usando clave de API:**

<CodeGroup>
  ```bash cURL
  curl https://{resource}.services.ai.azure.com/anthropic/v1/messages \
    -H "content-type: application/json" \
    -H "api-key: YOUR_AZURE_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -d '{
      "model": "claude-opus-5-5",
      "max_tokens": 1024,
      "messages": [
        {"role": "user", "content": "Hello!"}
      ]
    }'
  ```

  ```bash CLI
  # ant lee ANTHROPIC_API_KEY y la envía como x-api-key, que Foundry acepta
  export ANTHROPIC_API_KEY="YOUR_AZURE_API_KEY"

  ant messages create \
    --base-url https://example-resource.services.ai.azure.com/anthropic \
    --model claude-opus-5-5 \
    --max-tokens 1024 \
    --message '{role: user, content: "Hello!"}' \
    --transform content
  ```

  ```python Python
  import os
  from anthropic import AnthropicFoundry

  client = AnthropicFoundry(
      api_key=os.environ.get("ANTHROPIC_FOUNDRY_API_KEY"),
      resource="example-resource",  # your resource name
  )

  message = client.messages.create(
      model="claude-opus-5-5",
      max_tokens=1024,
      messages=[{"role": "user", "content": "Hello!"}],
  )
  print(message.content)
  ```

  ```typescript TypeScript
  import AnthropicFoundry from "@anthropic-ai/foundry-sdk";

  const client = new AnthropicFoundry({
    apiKey: process.env.ANTHROPIC_FOUNDRY_API_KEY,
    resource: "example-resource" // your resource name
  });

  const message = await client.messages.create({
    model: "claude-opus-5-5",
    max_tokens: 1024,
    messages: [{ role: "user", content: "Hello!" }]
  });
  console.log(message.content);
  ```

  ```csharp C#
  using Anthropic.Foundry;
  using Anthropic.Models.Messages;

  // El cliente de C# siempre construye la URL base a partir del nombre del recurso.
  // No lee ANTHROPIC_FOUNDRY_BASE_URL.
  var client = new AnthropicFoundryClient(
      new AnthropicFoundryApiKeyCredentials(
          Environment.GetEnvironmentVariable("ANTHROPIC_FOUNDRY_API_KEY")!,
          "example-resource"
      )
  );

  var response = await client.Messages.Create(new MessageCreateParams
  {
      Model = "claude-opus-5-5",
      MaxTokens = 1024,
      Messages = [new() { Role = Role.User, Content = "Hello!" }],
  });

  Console.WriteLine(
      string.Join("", response.Content
          .Select(block => block.Value)
          .OfType<TextBlock>()
          .Select(textBlock => textBlock.Text)));
  ```

  ```go Go
  package main

  import (
  	"context"
  	"fmt"
  	"os"

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

  func main() {
  	client, err := foundry.NewClient(foundry.ClientConfig{
  		APIKey:   os.Getenv("ANTHROPIC_FOUNDRY_API_KEY"),
  		Resource: "example-resource", // your resource name
  	})
  	if err != nil {
  		panic(err)
  	}

  	message, err := client.Messages.New(context.Background(), anthropic.MessageNewParams{
  		Model:     "claude-opus-5-5",
  		MaxTokens: 1024,
  		Messages: []anthropic.MessageParam{
  			anthropic.NewUserMessage(anthropic.NewTextBlock("Hello!")),
  		},
  	})
  	if err != nil {
  		panic(err)
  	}
  	fmt.Println(message.Content)
  }
  ```

  ```java Java
  import com.anthropic.client.AnthropicClient;
  import com.anthropic.client.okhttp.AnthropicOkHttpClient;
  import com.anthropic.foundry.backends.FoundryBackend;
  import com.anthropic.models.messages.MessageCreateParams;

  void main() {
      // Requiere las variables de entorno: ANTHROPIC_FOUNDRY_API_KEY, ANTHROPIC_FOUNDRY_RESOURCE
      AnthropicClient client = AnthropicOkHttpClient.builder()
          .backend(FoundryBackend.fromEnv())
          .build();

      MessageCreateParams params = MessageCreateParams.builder()
          .model("claude-opus-5-5")
          .maxTokens(1024)
          .addUserMessage("Hello!")
          .build();

      client.messages().create(params).content().stream()
          .flatMap(block -> block.text().stream())
          .forEach(textBlock -> IO.println(textBlock.text()));
  }
  ```

  ```php PHP
  use Anthropic\Foundry;

  $client = Foundry\Client::withCredentials(
      apiKey: getenv('ANTHROPIC_FOUNDRY_API_KEY'),
      baseUrl: 'https://example-resource.services.ai.azure.com/anthropic',
  );

  $message = $client->messages->create(
      maxTokens: 1024,
      messages: [
          ['role' => 'user', 'content' => 'Hello!']
      ],
      model: 'claude-opus-5-5',
  );
  echo array_find($message->content, fn ($block) => $block->type === 'text')->text;
  ```

  ```ruby Ruby
  # El SDK de Ruby aún no es compatible de forma nativa con Foundry. Este ejemplo usa el
  # SDK estándar de Ruby como solución alternativa. Pasa las credenciales explícitamente: sin
  # ellas, el cliente recurre a las variables de entorno ANTHROPIC_API_KEY o
  # ANTHROPIC_AUTH_TOKEN y podría enviar una credencial de la API de Claude
  # a tu endpoint de Foundry. Las funciones que Foundry
  # no admite fallan en el servidor en lugar de en el cliente. Para compatibilidad total
  # con Foundry, usa los SDK de C#, Go, Java, PHP, Python o TypeScript.
  require "anthropic"

  client = Anthropic::Client.new(
    base_url: "https://example-resource.services.ai.azure.com/anthropic",
    api_key: ENV.fetch("ANTHROPIC_FOUNDRY_API_KEY")
  )

  message = client.messages.create(
    model: "claude-opus-5-5",
    max_tokens: 1024,
    messages: [{role: "user", content: "Hello!"}]
  )

  puts message.content.find { it.type == :text }.text
  ```
</CodeGroup>

<Warning>
  Mantén tus claves de API seguras. Nunca las incluyas en el control de versiones ni las compartas públicamente. Cualquier persona con acceso a tu clave de API puede realizar solicitudes a Claude a través de tu recurso de Foundry.
</Warning>

### Autenticación con Microsoft Entra

La autenticación con Entra ID te permite administrar el acceso con Azure RBAC, integrarte con la administración de identidades de tu organización y evitar manejar claves de API manualmente. Para usar tokens de Entra ID:

1. Habilita la [autenticación con Microsoft Entra ID](https://learn.microsoft.com/en-us/azure/ai-foundry/model-inference/how-to/configure-entra-id) para tu recurso de Foundry.
2. Obtén un token de acceso de Entra ID.
3. Usa el token en el encabezado `Authorization: Bearer {TOKEN}`.

**Ejemplo usando Entra ID:**

<CodeGroup>
  ```bash cURL
  # Obtén el token de Microsoft Entra ID
  ACCESS_TOKEN=$(az account get-access-token --resource https://ai.azure.com --query accessToken -o tsv)

  # Haz la solicitud con el token. Reemplaza {resource} con el nombre de tu recurso
  curl https://{resource}.services.ai.azure.com/anthropic/v1/messages \
    -H "content-type: application/json" \
    -H "Authorization: Bearer $ACCESS_TOKEN" \
    -H "anthropic-version: 2023-06-01" \
    -d '{
      "model": "claude-opus-5-5",
      "max_tokens": 1024,
      "messages": [
        {"role": "user", "content": "Hello!"}
      ]
    }'
  ```

  ```bash CLI
  # Obtén el token de Microsoft Entra ID
  ACCESS_TOKEN=$(az account get-access-token --resource https://ai.azure.com --query accessToken -o tsv)

  # Haz la solicitud con el token. Reemplaza {resource} con el nombre de tu recurso
  # env -u elimina ANTHROPIC_API_KEY, que la CLI enviaría en lugar del token
  env -u ANTHROPIC_API_KEY ANTHROPIC_AUTH_TOKEN="$ACCESS_TOKEN" ant messages create \
    --base-url https://{resource}.services.ai.azure.com/anthropic \
    --model claude-opus-5-5 \
    --max-tokens 1024 \
    --message '{role: user, content: "Hello!"}'
  ```

  ```python Python
  from anthropic import AnthropicFoundry
  from azure.identity import DefaultAzureCredential, get_bearer_token_provider

  # Obtén el token de Microsoft Entra ID usando el patrón de proveedor de tokens
  token_provider = get_bearer_token_provider(
      DefaultAzureCredential(), "https://ai.azure.com/.default"
  )

  # Crea el cliente con autenticación de Entra ID
  client = AnthropicFoundry(
      resource="example-resource",  # your resource name
      azure_ad_token_provider=token_provider,  # Use token provider for Entra ID auth
  )

  # Realiza la solicitud
  message = client.messages.create(
      model="claude-opus-5-5",
      max_tokens=1024,
      messages=[{"role": "user", "content": "Hello!"}],
  )
  print(message.content)
  ```

  ```typescript TypeScript
  import AnthropicFoundry from "@anthropic-ai/foundry-sdk";
  import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";

  // Obtén el token de Entra ID usando el patrón de proveedor de tokens
  const credential = new DefaultAzureCredential();
  const tokenProvider = getBearerTokenProvider(credential, "https://ai.azure.com/.default");

  // Crea el cliente con autenticación de Entra ID
  const client = new AnthropicFoundry({
    resource: "example-resource", // your resource name
    azureADTokenProvider: tokenProvider // Use token provider for Entra ID auth
  });

  // Realiza la solicitud
  const message = await client.messages.create({
    model: "claude-opus-5-5",
    max_tokens: 1024,
    messages: [{ role: "user", content: "Hello!" }]
  });
  console.log(message.content);
  ```

  ```csharp C#
  using Anthropic.Foundry;
  using Anthropic.Models.Messages;
  using Azure.Identity;

  var client = new AnthropicFoundryClient(
      new AnthropicFoundryIdentityTokenCredentials(
          new DefaultAzureCredential(),
          "example-resource"
      )
  );

  var response = await client.Messages.Create(new MessageCreateParams
  {
      Model = "claude-opus-5-5",
      MaxTokens = 1024,
      Messages = [new() { Role = Role.User, Content = "Hello!" }],
  });

  Console.WriteLine(
      string.Join("", response.Content
          .Select(block => block.Value)
          .OfType<TextBlock>()
          .Select(textBlock => textBlock.Text)));
  ```

  ```go Go
  package main

  import (
  	"context"
  	"fmt"

  	"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
  	"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
  	"github.com/anthropics/anthropic-sdk-go"
  	"github.com/anthropics/anthropic-sdk-go/foundry"
  )

  func main() {
  	credential, err := azidentity.NewDefaultAzureCredential(nil)
  	if err != nil {
  		panic(err)
  	}

  	tokenProvider := func(ctx context.Context) (string, error) {
  		token, err := credential.GetToken(ctx, policy.TokenRequestOptions{
  			Scopes: []string{foundry.EntraIDScope},
  		})
  		return token.Token, err
  	}

  	client, err := foundry.NewClient(foundry.ClientConfig{
  		Resource:             "example-resource", // your resource name
  		AzureADTokenProvider: tokenProvider,
  	})
  	if err != nil {
  		panic(err)
  	}

  	message, err := client.Messages.New(context.Background(), anthropic.MessageNewParams{
  		Model:     "claude-opus-5-5",
  		MaxTokens: 1024,
  		Messages: []anthropic.MessageParam{
  			anthropic.NewUserMessage(anthropic.NewTextBlock("Hello!")),
  		},
  	})
  	if err != nil {
  		panic(err)
  	}
  	fmt.Println(message.Content)
  }
  ```

  ```java Java
  import com.anthropic.client.AnthropicClient;
  import com.anthropic.client.okhttp.AnthropicOkHttpClient;
  import com.anthropic.foundry.backends.FoundryBackend;
  import com.anthropic.models.messages.MessageCreateParams;
  import com.azure.identity.AuthenticationUtil;
  import com.azure.identity.DefaultAzureCredentialBuilder;
  import java.util.function.Supplier;

  void main() {
      Supplier<String> bearerTokenSupplier = AuthenticationUtil.getBearerTokenSupplier(
          new DefaultAzureCredentialBuilder().build(),
          "https://ai.azure.com/.default"
      );

      AnthropicClient client = AnthropicOkHttpClient.builder()
          .backend(FoundryBackend.builder()
              .bearerTokenSupplier(bearerTokenSupplier)
              .resource("example-resource")
              .build())
          .build();

      MessageCreateParams params = MessageCreateParams.builder()
          .model("claude-opus-5-5")
          .maxTokens(1024)
          .addUserMessage("Hello!")
          .build();

      client.messages().create(params).content().stream()
          .flatMap(block -> block.text().stream())
          .forEach(textBlock -> IO.println(textBlock.text()));
  }
  ```

  ```php PHP
  use Anthropic\Foundry;

  // Obtén un token de acceso de Entra ID, por ejemplo con la CLI de Azure:
  //   az account get-access-token --resource https://ai.azure.com \
  //     --query accessToken -o tsv
  $token = getenv('AZURE_ACCESS_TOKEN');

  $client = Foundry\Client::withCredentials(
      authToken: $token,
      baseUrl: 'https://example-resource.services.ai.azure.com/anthropic',
  );

  $message = $client->messages->create(
      maxTokens: 1024,
      messages: [
          ['role' => 'user', 'content' => 'Hello!']
      ],
      model: 'claude-opus-5-5',
  );
  echo array_find($message->content, fn ($block) => $block->type === 'text')->text;
  ```

  ```ruby Ruby
  # El SDK de Ruby aún no es compatible con Foundry de forma nativa. Este ejemplo usa el
  # SDK estándar de Ruby como solución alternativa, con un token estático de Entra ID: la
  # actualización automática de tokens no está integrada, así que tu aplicación debe renovarlos
  # por sí misma (suelen caducar tras 1 hora). Pasa las credenciales explícitamente:
  # sin ellas, el cliente recurre a las variables de entorno ANTHROPIC_API_KEY o
  # ANTHROPIC_AUTH_TOKEN. Para compatibilidad completa con Foundry, usa
  # los SDK de C#, Go, Java, PHP, Python o TypeScript.
  require "anthropic"

  # Obtén un token de acceso de Entra ID, por ejemplo con la CLI de Azure:
  #   az account get-access-token --resource https://ai.azure.com \
  #     --query accessToken -o tsv
  client = Anthropic::Client.new(
    base_url: "https://example-resource.services.ai.azure.com/anthropic",
    auth_token: ENV.fetch("AZURE_ACCESS_TOKEN")
  )

  message = client.messages.create(
    model: "claude-opus-5-5",
    max_tokens: 1024,
    messages: [{role: "user", content: "Hello!"}]
  )

  puts message.content.find { it.type == :text }.text
  ```
</CodeGroup>

## IDs de solicitud de correlación

Foundry incluye identificadores de solicitud en los encabezados de respuesta HTTP para depuración y seguimiento. Al contactar con soporte, proporciona tanto el valor de `request-id` como el de `apim-request-id` (Azure API Management) para ayudar a los equipos a localizar e investigar rápidamente tu solicitud en los sistemas de Anthropic y Azure.

## Compatibilidad de funciones

Claude en Microsoft Foundry admite la mayoría de las funciones de Claude. Puedes encontrar todas las funciones actualmente admitidas en [Descripción general de funciones](https://platform.claude.com/docs/es/build-with-claude/overview).

### Ventana de contexto

Claude Fable 5.1, Claude Fable 5, Claude Opus 5.5, Claude Opus 5, Claude Opus 4.8, Claude Opus 4.7, Claude Opus 4.6, Claude Sonnet 5.5, Claude Sonnet 5, Claude Sonnet 4.6 y Claude Haiku 5.5 tienen una [ventana de contexto de 1M de tokens](https://platform.claude.com/docs/es/build-with-claude/context-windows) en Microsoft Foundry. Otros modelos de Claude, incluido Claude Sonnet 4.5 (obsoleto), tienen una ventana de contexto de 200k tokens.

### Funciones de Claude no admitidas para Claude en Microsoft Foundry

* Admin API
* Herramienta Advisor
* Claude Managed Agents
* Compliance API
* Models API
* Message Batches API
* Fallback del lado del servidor (el [parámetro `fallbacks`](https://platform.claude.com/docs/es/build-with-claude/refusals-and-fallback#server-side-fallback); usa en su lugar el [patrón de fallback del lado del cliente](https://platform.claude.com/docs/es/build-with-claude/refusals-and-fallback#client-side-fallback))
* Conjuntos de herramientas de [uso de computadora](https://platform.claude.com/docs/es/agents-and-tools/tool-use/computer-use-tool) y [uso de navegador](https://platform.claude.com/docs/es/agents-and-tools/tool-use/browser-use-tool) (`computer_toolset_20260801` y `browser_toolset_20260801` no están disponibles actualmente en Microsoft Foundry; las versiones beta de la herramienta de uso de computadora siguen disponibles para los modelos indicados en [Versiones anteriores de la herramienta](https://platform.claude.com/docs/es/agents-and-tools/tool-use/computer-use-tool#earlier-tool-versions))

### Funciones adicionales no admitidas cuando se aloja en Azure

Las siguientes funciones están disponibles para implementaciones alojadas en Anthropic, pero no son compatibles con implementaciones alojadas en Azure:

* [Ejecución de código](https://platform.claude.com/docs/es/agents-and-tools/tool-use/code-execution-tool)
* Versiones de las herramientas de [búsqueda web](https://platform.claude.com/docs/es/agents-and-tools/tool-use/web-search-tool) y [web fetch](https://platform.claude.com/docs/es/agents-and-tools/tool-use/web-fetch-tool) posteriores a `web_search_20250305` y `web_fetch_20250910`. Las implementaciones alojadas en Azure solo admiten estas versiones básicas, por lo que el filtrado dinámico, la inclusión de respuestas y la omisión de caché no están disponibles.
* [Agent Skills](https://platform.claude.com/docs/es/agents-and-tools/agent-skills/overview)
* [Llamada programática de herramientas](https://platform.claude.com/docs/es/agents-and-tools/tool-use/programmatic-tool-calling)
* [Files API](https://platform.claude.com/docs/es/build-with-claude/files)

Las solicitudes que usan estas funciones contra una implementación alojada en Azure devuelven un error `400 Bad Request` por diseño. Claude Code detecta las implementaciones alojadas en Azure y adapta automáticamente su conjunto de funciones.

## Respuestas de la API

Las respuestas de la API de Claude en Microsoft Foundry siguen el [formato de respuesta estándar de la Claude API](https://platform.claude.com/docs/es/api/messages/create). Esto incluye el objeto `usage` en los cuerpos de respuesta, que proporciona información detallada sobre el consumo de tokens de tus solicitudes. El objeto `usage` es consistente en todas las plataformas (Claude API, Amazon Bedrock, Claude Platform en AWS, Foundry y Google Cloud).

Para detalles sobre los encabezados de respuesta específicos de Foundry, consulta [IDs de solicitud de correlación](https://platform.claude.com/docs/es/build-with-claude/claude-in-microsoft-foundry#correlation-request-ids).

## IDs de modelo de la API e implementaciones

Los términos del ciclo de vida (Deprecated, Retired) se definen en [Obsolescencia de modelos](https://platform.claude.com/docs/es/about-claude/model-deprecations). Microsoft Foundry sigue el calendario de ciclo de vida de la Claude API.

Los siguientes modelos Claude están disponibles a través de Foundry:

| Model                                                                                                 | Default deployment name | Hosted on Azure | Hosted on Anthropic |
| :---------------------------------------------------------------------------------------------------- | :---------------------- | :-------------: | :-----------------: |
| Claude Fable 5.1                                                                                      | `claude-fable-5-1`      |                 |          ✓          |
| Claude Mythos 5.1 ([limited availability](https://support.claude.com/en/articles/14604842))           | `claude-mythos-5-1`     |                 |          ✓          |
| Claude Fable 5                                                                                        | `claude-fable-5`        |                 |          ✓          |
| Claude Mythos 5 ([limited availability](https://support.claude.com/en/articles/14604842))             | `claude-mythos-5`       |                 |          ✓          |
| Claude Opus 5.5                                                                                       | `claude-opus-5-5`       |        ✓        |          ✓          |
| Claude Opus 5                                                                                         | `claude-opus-5`         |        ✓        |          ✓          |
| Claude Opus 4.8                                                                                       | `claude-opus-4-8`       |        ✓        |          ✓          |
| Claude Opus 4.7                                                                                       | `claude-opus-4-7`       |                 |          ✓          |
| Claude Opus 4.6                                                                                       | `claude-opus-4-6`       |                 |          ✓          |
| Claude Opus 4.5                                                                                       | `claude-opus-4-5`       |                 |          ✓          |
| Claude Sonnet 5.5                                                                                     | `claude-sonnet-5-5`     |        ✓        |          ✓          |
| Claude Sonnet 5                                                                                       | `claude-sonnet-5`       |        ✓        |          ✓          |
| Claude Sonnet 4.6                                                                                     | `claude-sonnet-4-6`     |                 |          ✓          |
| Claude Sonnet 4.5 ([deprecated](https://platform.claude.com/docs/es/about-claude/model-deprecations)) | `claude-sonnet-4-5`     |                 |          ✓          |
| Claude Haiku 5.5                                                                                      | `claude-haiku-5-5`      |        ✓        |          ✓          |
| Claude Haiku 4.5                                                                                      | `claude-haiku-4-5`      |        ✓        |          ✓          |

De forma predeterminada, los nombres de implementación coinciden con los IDs de modelo que se muestran en la tabla anterior. Sin embargo, puedes crear implementaciones personalizadas con nombres diferentes en el portal de Foundry para administrar distintas configuraciones, versiones o límites de velocidad. Usa el nombre de la implementación (no necesariamente el ID del modelo) en tus solicitudes a la API.

<Info>
  [Claude Mythos Preview](https://anthropic.com/glasswing) es una vista previa de investigación disponible para clientes invitados en Microsoft Foundry.
</Info>

<Tip>
  ¿Estás actualizando a un modelo de Claude más reciente? En Claude Code, ejecuta `/claude-api migrate` para aplicar los cambios de ID de modelo y los cambios de parámetros incompatibles en toda tu base de código. La skill detecta a qué plataforma en la nube apunta tu código y ajusta los formatos de ID de modelo y los cambios de funcionalidades para esa plataforma. Consulta [Migrar a un modelo de Claude más reciente](https://platform.claude.com/docs/es/agents-and-tools/agent-skills/claude-api-skill#migrating-to-a-newer-claude-model).
</Tip>

## Facturación

Claude en Microsoft Foundry se factura a través del [Azure Marketplace](https://azuremarketplace.microsoft.com/). El uso se denomina en Claude Consumption Units (CCUs), se mide por hora y se factura mensualmente a posteriori en tu factura de Azure. Las CCUs no son créditos prepagados. No existe un saldo ni un compromiso de CCUs.

Para conocer el precio de las CCUs, la mecánica de conversión y las tarifas de tokens por modelo, consulta [precios de Claude en Microsoft Foundry](https://platform.claude.com/docs/es/about-claude/pricing#claude-in-microsoft-foundry-pricing).

## Migración entre opciones de alojamiento

Para mover una implementación existente de una opción de alojamiento a la otra:

1. Crea una nueva implementación de la otra versión de alojamiento del modelo (Alojado en Azure o Alojado en Anthropic). Puede estar en el mismo recurso de Foundry o en uno nuevo.
2. Actualiza tu aplicación para pasar el nuevo nombre de implementación en el parámetro `model`.
3. Elimina la implementación anterior una vez que el tráfico se haya trasladado.

Si la nueva implementación está en el mismo recurso de Foundry, la URL de tu endpoint y la autenticación no cambian. Si creaste un nuevo recurso, actualiza el endpoint y las credenciales de tu aplicación para que apunten a él.

## Monitoreo y registro

Azure proporciona monitoreo y registro para tu uso de Claude a través de patrones estándar de Azure:

* **Azure Monitor:** Rastrea el uso de la API, la latencia y las tasas de error
* **Azure Log Analytics:** Consulta y analiza los registros de solicitudes/respuestas
* **Cost Management:** Monitorea y pronostica los costos asociados con el uso de Claude

Anthropic recomienda registrar tu actividad al menos de forma continua durante 30 días para comprender los patrones de uso e investigar cualquier posible problema.

<Note>
  Los servicios de registro de Azure se configuran dentro de tu suscripción de Azure. Habilitar el registro no proporciona a Microsoft ni a Anthropic acceso a tu contenido más allá de lo necesario para la facturación y la operación del servicio.
</Note>

## Solución de problemas

### Errores de autenticación

**Error:** `401 Unauthorized` o `Invalid API key`

* **Solución:** Verifica que tu clave de API sea correcta. Puedes encontrarla en el portal de Foundry en la pestaña **Details** de tu implementación (en **Build** > **Models**).
* **Solución:** Si usas Microsoft Entra ID, asegúrate de que tu token de acceso sea válido y no haya expirado. Los tokens normalmente expiran después de 1 hora.

**Error:** `403 Forbidden`

* **Solución:** Es posible que tu cuenta de Azure no tenga los permisos necesarios. Asegúrate de tener asignado el rol de Azure RBAC apropiado (por ejemplo, **Foundry User** (anteriormente Azure AI User) o **Cognitive Services User**).

### Limitación de velocidad

**Error:** `429 Too Many Requests`

* **Solución:** Has excedido tu límite de velocidad. Implementa lógica de retroceso exponencial y reintentos en tu aplicación.
* **Solución:** Considera solicitar aumentos del límite de velocidad a través del portal de Azure o del soporte de Azure.

#### Encabezados de límite de velocidad

Foundry no incluye los encabezados estándar de límite de velocidad de Anthropic (`anthropic-ratelimit-tokens-limit`, `anthropic-ratelimit-tokens-remaining`, `anthropic-ratelimit-tokens-reset`, `anthropic-ratelimit-input-tokens-limit`, `anthropic-ratelimit-input-tokens-remaining`, `anthropic-ratelimit-input-tokens-reset`, `anthropic-ratelimit-output-tokens-limit`, `anthropic-ratelimit-output-tokens-remaining` y `anthropic-ratelimit-output-tokens-reset`) en las respuestas. En su lugar, administra la limitación de velocidad a través de las herramientas de monitoreo de Azure.

### Errores de modelo e implementación

**Error:** `Model not found` o `Deployment not found`

* **Solución:** Verifica que estés usando el nombre de implementación correcto. Si no has creado una implementación personalizada, usa el ID de modelo predeterminado (por ejemplo, claude-opus-5-5).
* **Solución:** Asegúrate de que el modelo/implementación esté disponible en tu región de Azure.

**Error:** `Invalid model parameter`

* **Solución:** El parámetro model debe contener el nombre de tu implementación, que se puede personalizar en el portal de Foundry. Verifica que la implementación exista y esté configurada correctamente.

## Próximos pasos

<CardGroup cols={2}>
  <Card title="Descripción general de funciones" icon="stack" href="https://platform.claude.com/docs/es/build-with-claude/overview">
    Explora las funciones y capacidades avanzadas de Claude.
  </Card>

  <Card title="Precios" icon="chart" href="https://platform.claude.com/docs/es/about-claude/pricing#claude-in-microsoft-foundry-pricing">
    Conoce la estructura de precios de Anthropic para modelos y funciones.
  </Card>

  <Card title="Obsolescencia de modelos" icon="arrow-clockwise" href="https://platform.claude.com/docs/es/about-claude/model-deprecations">
    A medida que se lanzan modelos más seguros y capaces, Anthropic retira regularmente los más antiguos. Consulta todas las obsolescencias de la API, junto con los reemplazos recomendados.
  </Card>
</CardGroup>

## Recursos adicionales

<CardGroup cols={2}>
  <Card title="Catálogo de modelos de Foundry" icon="grid" href="https://ai.azure.com/catalog/publishers/anthropic">
    Explora los modelos de Anthropic en el catálogo de Foundry.
  </Card>

  <Card title="Precios de Azure AI Foundry" icon="calculator" href="https://azure.microsoft.com/en-us/pricing/details/ai-foundry/#pricing">
    Consulta los detalles de precios de Microsoft para Azure AI Foundry.
  </Card>

  <Card title="Precios de modelos" icon="table" href="https://platform.claude.com/docs/es/about-claude/pricing#model-pricing">
    Consulta los detalles de precios por modelo de Anthropic.
  </Card>

  <Card title="Portal de Azure" icon="cloud" href="https://portal.azure.com/">
    Administra tus recursos de Azure.
  </Card>
</CardGroup>
