tinyhumansai/openhuman · error · anyhow::Error

message_id is required

Error message

message_id is required

What it means

send_channel_edit requires the target message identifier; the message_id argument is empty, so there is no message to address the edit to and the call is rejected client-side.

Source

Thrown at src/api/rest.rs:995

    /// atomic-final delivery).
    ///
    /// **The deployed backend does not implement this route yet** (#5230): its
    /// channel router has `POST /:channel/messages` and `DELETE
    /// /:channel/messages/:messageId` only, so every call currently returns the
    /// unmatched-route 404, which [`authed_json`](Self::authed_json) surfaces as
    /// [`BackendApiError::ChannelEditUnsupported`]. Callers must degrade rather
    /// than treat that as the message having been deleted. Keep this method: it
    /// starts working unchanged the moment the backend adds the route.
    pub async fn send_channel_edit(
        &self,
        channel: &str,
        message_id: &str,
        bearer_jwt: &str,
        edit_body: Value,
    ) -> Result<Value> {
        let channel = channel.trim().trim_matches('/');
        anyhow::ensure!(!channel.is_empty(), "channel is required");
        anyhow::ensure!(!message_id.is_empty(), "message_id is required");
        let encoded_channel = urlencoding::encode(channel);
        let encoded_id = urlencoding::encode(message_id);
        self.authed_json(
            bearer_jwt,
            Method::PATCH,
            &format!("channels/{encoded_channel}/messages/{encoded_id}"),
            Some(edit_body),
        )
        .await
    }

    /// Deletes a message from a communication channel. Used to clean up
    /// ephemeral messages (e.g. thinking indicators) after the final
    /// response has been delivered.
    pub async fn send_channel_delete(
        &self,
        channel: &str,
        message_id: &str,

View on GitHub (pinned to 7491200858)

Solutions

  1. Pass the message_id of the previously sent message
  2. Verify the id was copied from the send response, not from a truncated field
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at src/api/rest.rs:995 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17). Data as JSON: /api/errors/7bf3ebb68739b673. Report an issue: GitHub.