Inicio / La API de Claude para quienes construyen
La petición, una única puerta de entrada
Toda interacción con Claude pasa por un único punto de entrada HTTP, la petición POST /v1/messages, que recibe un array de turnos y siempre devuelve la misma estructura de respuesta.
La API de Claude cuenta con una única puerta de entrada: la petición POST /v1/messages, llamada la API Messages. Cada intercambio, ya se resuelva en un solo turno o encadene una conversación larga, pasa por ese mismo punto de entrada, con un cuerpo que lleva un array messages y un modelo elegido. Basta un cliente HTTP corriente: ninguna otra ruta que memorizar, sea cual sea el modelo consultado o la naturaleza de la petición.
Un campo obligatorio, sin valor por defecto
El cuerpo de la petición lleva un campo llamado exactamente max_tokens, que fija el número máximo de tokens que el modelo puede generar antes de detenerse. Este campo no tiene valor por defecto: es obligatorio en cada petición, al mismo título que el modelo y el array messages. Este campo también condiciona el coste y la duración de la generación, sin por ello imponerla: el modelo puede perfectamente detenerse antes de alcanzar ese límite, en cuanto considera su respuesta terminada. Existe un caso particular: enviar max_tokens a 0 no solicita ninguna generación, solo el prerrellenado de la caché de prompt de cara a una petición siguiente.
// Corps minimal d'une requête à l'API Messages
{
"model": "claude-sonnet-5",
"max_tokens": 300,
"messages": [
{ "role": "user", "content": "Résume ce texte en une phrase." }
]
}
Una respuesta siempre estructurada de la misma manera
La respuesta devuelta por la API sigue siempre la misma forma, sea cual sea el modelo consultado. El campo content lleva un array de bloques, el campo model confirma el modelo realmente utilizado, y el campo stop_reason indica por qué se detuvo la generación: end_turn para una respuesta terminada de forma natural, max_tokens para un corte por el límite fijado, stop_sequence para una secuencia de parada encontrada, y según el contexto de la petición, tool_use, refusal, pause_turn o model_context_window_exceeded. Cuando una secuencia de parada ha provocado el corte, se repite en el campo stop_sequence.
El campo usage cierra la respuesta con cuatro contadores: input_tokens, output_tokens, cache_creation_input_tokens y cache_read_input_tokens. Estos cuatro números bastan para calcular el coste exacto de un intercambio sin consultar ninguna otra fuente, y aparecen en cada petición, incluso la más simple. Leer input_tokens antes de enviar el turno siguiente también permite saber cuánto margen queda disponible en la conversación en curso.
Esta misma estructura de respuesta reaparece en la declaración de una herramienta, donde el campo stop_reason toma el valor tool_use para señalar una solicitud de uso en lugar de una respuesta terminada.
El trayecto de una petición a la API Messages
Un desarrollador construye el cuerpo de una petición a la API Messages con el campo model y el campo messages, y luego la envía a la API. El servidor devuelve un código de error 400 antes de que empiece la generación.
Escribe en una frase lo que esta situación establece, y en una frase lo que no establece.
Lo que esto establece: Esto establece que el campo max_tokens es necesario en el cuerpo de una petición a la API Messages, puesto que un cuerpo que solo incluye model y messages es rechazado antes de cualquier generación.
Lo que esto no establece: Esto no establece qué valor de max_tokens conviene a este caso de uso, puesto que el desarrollador todavía no ha proporcionado ningún valor que probar.
Los tres calibrados falsos más frecuentes
- Demasiado amplio Esta situación prueba que todos los campos posibles del cuerpo de una petición a la API Messages son obligatorios.
- Demasiado estrecho Esta situación no prueba nada puesto que solo se ha enviado una petición.
- Fuera de lugar Esta situación muestra que la API Messages tarda más en responder cuando el cuerpo de la petición está incompleto.
- El único punto de entrada de la API de Claude es la petición POST /v1/messages, sea cual sea la longitud de la conversación intercambiada.
- El campo max_tokens no tiene valor por defecto: es obligatorio en cada petición, al mismo título que el modelo y el array messages.
- El modelo puede detenerse antes de alcanzar el límite fijado por max_tokens, en cuanto considera su respuesta terminada.
- El campo stop_reason de la respuesta lleva valores distintos según el contexto, entre ellos end_turn, max_tokens, stop_sequence, tool_use, refusal, pause_turn y model_context_window_exceeded.
- Los cuatro contadores del campo usage, input_tokens, output_tokens, cache_creation_input_tokens y cache_read_input_tokens, bastan para calcular el coste exacto de una respuesta.
Abre un archivo vacío y escribe el cuerpo JSON de una petición a la API Messages para tu propio proyecto, con el modelo que usas, un campo max_tokens y un array messages que contenga un único mensaje de usuario. No lo envíes: reléelo y comprueba que los tres campos obligatorios figuran en él.
Cada afirmación datable de esta lección remite aquí al texto público que la respalda. Una fuente que no se abre no prueba nada.
- Anthropic, API Messages, referencia de los parámetros de la petición consultée le 2026-09-02