AIREITER

Guía de la API Message Threads de Claude (noviembre de 2026)

Última actualización: 2026-11-03 00:17:52

Para agentes con historiales enormes, Message Threads elimina buena parte del tráfico repetido hacia la API. Anthropic lo lanzó en beta pública el 2 de noviembre de 2026 y cifra en torno al 35% la reducción mediana del tiempo hasta el primer token en solicitudes de 500K a 1M de tokens. La contrapartida importante: Claude sigue procesando toda la conversación en cada turno, así que el coste de tokens permanece intacto. Es una mejora de transporte, no de facturación, y tiene un límite estricto de 5 minutos de inactividad.

Menos datos enviados, misma factura de tokens

Message Threads añade estado temporal de conversación en el servidor para la Messages API. En la primera llamada envías el historial completo mediante thread: { "type": "create" }; después, basta con mandar los mensajes nuevos y previous_message_id usando thread: { "type": "continue" }. Según el anuncio de Anthropic y la documentación de la plataforma, el estado se mantiene en memoria cifrada, nunca se escribe en disco, caduca tras 5 minutos sin actividad y se elimina como máximo 1 hora después del último uso.

Todas las solicitudes de un hilo deben incluir la cabecera beta anthropic-beta: message-threads-2026-08-12. Los precios y límites de tasa no cambian: Claude sigue leyendo la conversación completa en cada turno. En otras palabras, subes muchos menos bytes, pero pagas los mismos tokens de entrada y salida.

"Sí, muy bien, pero no reduce el coste de tokens :( Claude sigue leyendo toda la conversación en cada turno y el consumo de tokens no cambia" — @_navicstein, en respuesta al hilo oficial del lanzamiento

El anuncio oficial habla de aproximadamente un 35% menos de TTFT mediano en solicitudes de 500K a 1M de tokens, sin descuento alguno en tokens.

En qué se diferencia de prompt caching

Los threads reducen lo que envías; el prompt caching reduce la parte por la que pagas el precio completo. Un thread no activa la caché automáticamente: sigues necesitando definir los puntos de corte con cache_control. La interacción detallada con la caché, basada en este desglose de implementación, exige mantener un cache_control de nivel superior en cada continuación. Las lecturas de caché cuestan 0,1 veces la entrada base, o 0,05 veces en Claude Opus 5.5 y Sonnet 5.5.

No confundirlos con los session threads de agentes gestionados

En los resultados de búsqueda aparecen dos conceptos distintos llamados «threads». Los message threads de la Messages API —los de este artículo— son una optimización efímera del tamaño de las solicitudes y no tienen API para listar, leer ni eliminar. Los session threads de agentes gestionados (GET /v1/sessions/{session_id}/threads/{thread_id}) son hilos de ejecución dentro de la API managed-agents de Anthropic, con endpoints para listar, recuperar y archivar. Si la documentación habla de hilos secundarios, streams de eventos o archivado, estás consultando la API equivocada. Revisa la referencia de la API de session threads para identificar cuál necesitas.

Página de anuncio de Message Threads de Anthropic, que describe el estado de conversación en el servidor para agentes de larga ejecución

El ciclo de vida de un hilo: crear, continuar y reconstruir

En la práctica, un hilo solo admite anexar contenido: lo creas con todo el contexto, lo continúas con cambios incrementales y lo reproduces por completo si se pierde. No existe API para bifurcar, editar, rebobinar ni inspeccionar. Cada respuesta devuelve un nuevo id, y cada id solo puede usarse una vez para continuar. Las reglas de campos y errores de esta sección siguen la documentación de la plataforma, desarrollada en este análisis de implementación.

La creación incluye todo el contexto: messages, system y tools completos, además de:

{
  "model": "claude-opus-5-5",
  "system": "You are a support agent for Acme. Keep replies short.",
  "messages": [{ "role": "user", "content": "Hi! I have a question about an order." }],
  "thread": { "type": "create" }
}

Una continuación solo incorpora lo nuevo, normalmente un mensaje del usuario o bloques tool_result:

{
  "model": "claude-opus-5-5",
  "messages": [{ "role": "user", "content": "How long does standard shipping usually take?" }],
  "thread": { "type": "continue", "previous_message_id": "msg_xxx_from_create" }
}

No incluyas system ni tools al continuar: incluso "system": null provoca un error 400. En respuestas por streaming, espera a message_stop antes de continuar; el ID válido para continuar llega en message_start.

Campos que puedes modificar durante un hilo

Anthropic genera una huella de parte de la solicitud de creación. Si modificas un valor incluido en esa huella, recibirás thread_fingerprint_mismatch y tendrás que abrir un hilo nuevo.

GrupoEjemplosRegla al continuar
Solo al crearsystem, toolsNo los reenvíes; null también falla
Fijosmodel, tool_choice, thinking, mcp_servers, context_management, output_config, habilidades de contenedor, gestión de cache_control de nivel superiorDeben permanecer idénticos
Flexiblesmax_tokens, stop_sequences, stream, metadata, service_tierPueden cambiar en cada turno
Reenviar siempreURL y tokens de autenticación de servidores MCP, ID de containerNo se guardan en el servidor; inclúyelos cada vez que los uses

Los modelos con pensamiento extendido requieren especial cuidado: modificar system o tools puede invalidar bloques previos de thinking / redacted_thinking. Si una reproducción completa tras la caducidad devuelve un 400, elimina de ese historial los bloques de pensamiento obsoletos en lugar de reintentar el envío sin cambios.

La regla de los 5 minutos y el replay obligatorio

Trata los threads como una optimización de mejor esfuerzo: conserva localmente el historial completo, el system prompt, las herramientas y las referencias a archivos. El almacenamiento solo queda confirmado cuando la siguiente continuación se realiza correctamente. Los archivos se guardan por referencia; si eliminas uno a mitad del hilo, la continuación fallará.

El contador de caducidad se reinicia con cada respuesta almacenada. Tras 5 minutos de inactividad, la siguiente continuación devuelve 404 y debes reproducir la conversación completa con un nuevo create. Los datos se eliminan, como tarde, 1 hora después del último uso.

HTTPCódigoQué ha ocurridoQué hacer
404thread_not_foundHa caducado, no se almacenó, se usó una clave o workspace distinto, se añadió la primera imagen a un hilo solo de texto, lo atendió un modelo fallback o la respuesta aún se está generandoComprueba clave/workspace y configuración; después reproduce el historial completo con un nuevo create
400thread_fingerprint_mismatchHa cambiado un campo fijoRestaura el valor original o inicia un hilo nuevo
400thread_already_continuedEse previous_message_id ya se utilizóContinúa desde el id más reciente
400thread_continue_in_flightHay una continuación concurrente sobre el mismo IDEspera a que termine y usa su nuevo ID; si no, reproduce el hilo
400thread_unsupported_requestConfiguración no compatible, como más de 4 puntos de corte de caché o batchesElimina esa configuración o envía la solicitud sin thread

Según el resumen de la documentación, las solicitudes fallidas de threads se resuelven antes de ejecutar el modelo: no consumen tokens ni reinician el temporizador de caducidad. Guarda de forma atómica el ID de la última respuesta correcta antes de aceptar el siguiente turno y protege los replays con idempotencia cuando las acciones de herramientas tengan efectos secundarios.

Esquema de replay en Python: gestiona solo thread_not_found verificado; los errores de huella, concurrencia y solicitud no compatible requieren ramas independientes:

try:
    resp = client.beta.messages.create(
        model="claude-opus-5-5",
        messages=[new_msg],  # delta only
        thread={"type": "continue", "previous_message_id": last_id},
        extra_headers={"anthropic-beta": "message-threads-2026-08-12"},
    )
except NotFoundError:  # thread_not_found after checking identity/config
    resp = client.beta.messages.create(
        model="claude-opus-5-5",
        system=SYSTEM, tools=TOOLS,
        messages=full_history + [new_msg],  # you stored this
        thread={"type": "create"},
        extra_headers={"anthropic-beta": "message-threads-2026-08-12"},
    )

El problema de los 404 con proxies y rotación de claves

Este comportamiento procede de informes de operadores y todavía no aparece en la documentación oficial: un thread queda vinculado a la organización, el workspace y la credencial que lo creó. Un relay que rota claves de API en cada solicitud creará el hilo con la clave A y tratará de continuarlo con la clave B. El resultado se parece exactamente a una caducidad: 404 continuos y reenvío completo del historial, sin ganancia de latencia.

"Un thread queda vinculado a la key y al workspace que lo crearon; al cambiar de key devuelve 404 thread_not_found. Los servicios de retransmisión que rotan keys primero reciben un 404 y luego reenvían todo el historial." — @ak12kpoot (nota de un desarrollador chino sobre el comportamiento de proxies)

Fija cada hilo a una única clave o prescinde de threads en rutas con un pool de credenciales.

Compatibilidad, limitaciones y cuándo conviene activarlos

Message Threads está disponible en la Claude API, Claude Platform on AWS, Anthropic-managed Google Cloud Claude Models y Claude in Microsoft Foundry. Todos los modelos incluidos en la beta son compatibles; no hay una lista de modelos separada ni una lista de espera anunciada.

Para planificar el lanzamiento, las exclusiones son aún más relevantes:

ÁreaEstado
Amazon BedrockNo compatible
Message BatchesNo compatible: los elementos de thread en lote fallan
Endpoint de conteo de tokensNo compatible: debes contar tú mismo el historial completo
Compaction / edición de contextoNo compatible, salvo clear_thinking con keep all
Retención cero de datos, HIPAA-ready, inference hooksNo elegible
API de gestión de threadsNo existe: no puedes listar, leer ni eliminar threads

Checklist para decidir

  • Actívalos ya: en agentes de programación activos, bucles de computer use con capturas de pantalla o flujos con muchos documentos que realizan decenas de turnos sin pausas de más de 5 minutos. Combínalos con prompt caching y una ruta de replay.
  • Mejor esperar: en chats al ritmo de una persona, flujos pausados, pipelines por lotes, cargas ZDR/HIPAA o despliegues sobre Bedrock.
  • Combínalos solo si compensa: el cache_control de nivel superior de cada solicitud cuenta para el límite de 4 puntos de corte. Los puntos de corte de system/tools durante la creación vuelven a contar en cada continuación. Si superas el límite, recibirás thread_unsupported_request; consolida los puntos de corte antes de activar ambas funciones.

Consulta también: guía de precios de la API de Claude 2026, guía de la API Claude Skills.

Preguntas frecuentes

¿Qué cabecera beta y qué parámetro necesito?

Envía anthropic-beta: message-threads-2026-08-12 en cada solicitud del hilo. En la primera llamada, añade thread: { "type": "create" }; en las posteriores, usa thread: { "type": "continue", "previous_message_id": "<last response id>" }.

¿Qué ocurre cuando caduca un thread?

La siguiente continuación devuelve 404 thread_not_found. Reenvía todos los messages junto con los system/tools originales mediante un nuevo create. La caducidad llega tras 5 minutos de inactividad y los datos se eliminan como máximo 1 hora después del último uso.

¿Puedo listar, inspeccionar o eliminar threads?

No. No existe una API de gestión para los threads de la Messages API. El historial que guardes localmente es el único registro persistente.

¿Funciona en Amazon Bedrock?

No. Las superficies compatibles son la Claude API, AWS Claude Platform, Microsoft Foundry y Google Cloud gestionado por Anthropic. Las solicitudes de Bedrock deben seguir enviando el historial completo.

¿Puedo cambiar el system prompt o las herramientas a mitad del hilo?

No. Crea un hilo nuevo con los nuevos system/tools. Enviar valores modificados en una continuación provoca thread_fingerprint_mismatch. Lo mismo se aplica a model, tool_choice y la configuración de pensamiento.

¿Es compatible con streaming, herramientas y MCP?

Sí, con algunas reglas: espera a message_stop antes de continuar, reenvía en cada turno las URL/tokens MCP y los ID de container, y envía fallbacks en todas las solicitudes o en ninguna. Una respuesta de un modelo fallback no se almacena y debe reproducirse.