tinyhumansai/openhuman · error · BackendApiError::ChannelEditUnsupported

channel message edit route not implemented by backend ({prov

Error message

channel message edit route not implemented by backend ({provider}, message {message_id})

What it means

A channel-message edit hit an unmatched-route 404 on a /channels/.../messages/... path, which the classifier reads as the backend not implementing the edit route for that provider. Mapped to the typed ChannelEditUnsupported error rather than a generic failure.

Source

Thrown at src/api/rest.rs:718

                    && (channel_message.is_some()
                        || (url.path().contains("/channels/") && url.path().contains("/messages/")))
                    && is_unmatched_route_404(&text)
                {
                    let (provider, message_id) = channel_message
                        .map(|(provider, id)| (provider.to_string(), id.to_string()))
                        .unwrap_or_else(|| ("unknown".to_string(), "unknown".to_string()));
                    tracing::warn!(
                        domain = "backend_api",
                        operation = "authed_json",
                        provider = provider,
                        message_id = message_id,
                        "[backend_api] channel-message edit 404 on {} {} — backend implements no \
                         edit route; surfacing ChannelEditUnsupported so callers degrade instead \
                         of forgetting the message id (#5230)",
                        method.as_str(),
                        url.path(),
                    );
                    return Err(anyhow::Error::new(
                        BackendApiError::ChannelEditUnsupported {
                            provider,
                            message_id,
                        },
                    ));
                }

                if let Some((provider, message_id)) = channel_message {
                    tracing::info!(
                        domain = "backend_api",
                        operation = "authed_json",
                        provider = provider,
                        message_id = message_id,
                        "[backend_api] message-not-found 404 on {} {} — surfacing typed error",
                        method.as_str(),
                        url.path(),
                    );
                    return Err(anyhow::Error::new(BackendApiError::MessageNotFound {

View on GitHub (pinned to 7491200858)

Solutions

  1. Fall back to a new message instead of editing on that provider
  2. Track the backend feature and retry once the edit route ships for the provider
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at src/api/rest.rs:718 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/ebf862de2cb13cb5. Report an issue: GitHub.