¡Gracias, eso lo ha solucionado! No, ya que la documentación de la API no listaba archetype como obligatorio (ni siquiera como “obligatorio para mensajes privados” como lo está target_usernames) ni decía nada sobre su propósito, no lo estaba modificando.
De todos modos, esto ahora funciona. Y como referencia para cualquiera que se encuentre con el mismo problema (especialmente si usa POST), los elementos del cuerpo codificados en JSON en mi solicitud que funciona son:
| clave | valor |
|---|---|
| raw | el texto sin procesar del mensaje |
| title | el título del mensaje/hilo |
| target_usernames | lista de nombres de usuario separados por comas |
| archetype | la cadena literal private_message |
Esto se envía como el cuerpo de una solicitud POST a /posts.json con los campos de encabezado personalizados:
| clave | valor |
|---|---|
| Content-Type | application/json; charset=UTF-8 |
| Api-Key | datos de la clave |
| Api-Username | el nombre de usuario |