Tu primera llamada a la API
Saludar a Claude puede alegrarte el corazón, pero no es realmente útil. En esta lección le enviaremos a Claude algo real y obtendremos información estructurada de vuelta — en apenas 20 líneas de código.
Prepárate
Primero, consigue una clave de API en platform.claude.com. Antes de tu primera llamada a la API, verifica que tengas crédito en la página de facturación(se abre en una pestaña nueva) de la Claude Console. Si no tienes nada, agrega crédito ahí.

Toma la clave de API y guárdala en un archivo .env.local para que quede fuera de tu control de versiones. Codificar claves directamente en los archivos fuente es la forma en que terminan filtradas en GitHub — guárdalas en archivos de entorno en su lugar.
A continuación, instala el SDK:
npm install @anthropic-ai/sdkLa anatomía de una solicitud
Cada llamada a la API pasa por la función messages.create. Especificas tres cosas:
- Un modelo — qué modelo de Claude maneja la solicitud
- Un límite de tokens máximos — un tope sobre cuánto puede durar la respuesta
- Una lista de mensajes — objetos con roles
useroassistant, estructurados de forma similar a cómo tendrías una conversación con Claude en otro lugar
Así es como se ve eso en su forma más básica:
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic();
const msg = await client.messages.create({
model: "claude-sonnet-5",
max_tokens: 2048,
messages: [{
role: "user",
content: "Hello, Claude",
}],
});Un ejemplo real: revisar código con errores
Démosle a Claude algo un poco más interesante que "hola". Lo apuntaremos hacia un código con errores y le pediremos una revisión. Esto es todo — un archivo, unas 20 líneas de código:
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic();
const buggyCode = `
function add(a, b) {
return a - b;
}
`;
const response = await client.messages.create({
model: "claude-sonnet-5",
max_tokens: 2048,
system: "You are a terse senior code reviewer. Give feedback in one paragraph.",
messages: [
{ role: "user", content: `Review this code:\n${buggyCode}` },
],
});
for (const block of response.content) {
if (block.type === "text") {
console.log(block.text);
}
}Dos cosas a notar aquí:
- La indicación
systemes donde defines la personalidad. Quiero un revisor senior conciso, no uno conversador — así que simplemente digo eso. - El
message.contenten la respuesta es un array de bloques, no una cadena de texto. Para una respuesta de texto básica generalmente hay solo un bloque de tipotext, pero Claude puede devolver múltiples bloques — texto, llamadas a herramientas, pensamiento — así que siempre iteramos y verificamos el tipo.
Ejecútalo, y Claude detecta que add está restando y te lo dice en un párrafo. Eso es todo. Esa es toda la llamada a la API.

De script a producto
En un producto real, esta misma estructura de messages.create es el motor detrás de algo como un endpoint de resumen. Extraes una transcripción de reunión de la base de datos, se la entregas a Claude con una indicación del sistema que dice "extrae información clave y riesgos", guardas el resultado de vuelta en la fila, y lo devuelves a la interfaz de usuario. Es la misma llamada — solo envuelta en un manejador de ruta.

Resumen
- Tu primera llamada a la API es una función
messages.createcon un modelo, un límite de tokens y mensajes. - Guarda tu clave de API en un archivo
.env.localpara mantenerla fuera del control de versiones. - Agrega una indicación del sistema para dar forma al comportamiento de Claude.
- El
contentde la respuesta es un array de bloques — itera y verifica eltypede cada bloque. - A partir de aquí, todo se construye sobre este patrón.