tinyhumansai/openhuman · error

No redirect URL in Composio v3 response

Error message

No redirect URL in Composio v3 response

What it means

The Composio v3 connect call succeeded (2xx, JSON decoded) but the response contains no redirect URL where extract_redirect_url can find it — a malformed/unexpected response shape from the v3 endpoint.

Source

Thrown at src/openhuman/integrations/composio/tools/direct.rs:578

        let resp = self
            .client()
            .post(&url)
            .header("x-api-key", &self.api_key)
            .json(&body)
            .send()
            .await?;

        if !resp.status().is_success() {
            let err = response_error(resp).await;
            anyhow::bail!("Composio v3 connect failed: {err}");
        }

        let result: serde_json::Value = resp
            .json()
            .await
            .context("Failed to decode Composio v3 connect response")?;
        extract_redirect_url(&result)
            .ok_or_else(|| anyhow::anyhow!("No redirect URL in Composio v3 response"))
    }

    async fn get_connection_url_v2(
        &self,
        app_name: &str,
        entity_id: &str,
    ) -> anyhow::Result<String> {
        let url = format!("{}/connectedAccounts", self.base_v2);

        let body = json!({
            "integrationId": app_name,
            "entityId": entity_id,
        });

        let resp = self
            .client()
            .post(&url)
            .header("x-api-key", &self.api_key)

View on GitHub (pinned to 7491200858)

Solutions

  1. Retry — v3 occasionally returns a success envelope without the OAuth redirect
  2. Fall back to the v2 flow by supplying an app_name
  3. Inspect the raw response body to see where Composio moved the redirect field
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at src/openhuman/integrations/composio/tools/direct.rs:578 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/f286821dfec4463e. Report an issue: GitHub.