tonhowtf/omniget · error · anyhow::Error

Instagram GQL retornou HTTP

Error message

Instagram GQL retornou HTTP {}

What it means

The Instagram GraphQL query (PolarisPostActionLoadPostQueryQuery, sent with scraped LSD/CSRF/Bloks tokens) returned a non-success HTTP status; the {} is the raw code. Typically 4xx rate limiting of the anonymous session or stale scraped tokens — the request never produced JSON to inspect.

Solutions

  1. Wait and retry — anonymous GQL access is aggressively rate limited
  2. Refresh the post page to obtain new tokens/cookies before retrying
  3. Provide logged-in cookies if the post requires an account
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at src-tauri/src/platforms/instagram/mod.rs:415 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of tonhowtf/omniget@8600b91f42 (2026-09-12). Data as JSON: /api/errors/466465ebce7e70f3. Report an issue: GitHub.

Appendix: source

Thrown at src-tauri/src/platforms/instagram/mod.rs:415

            .header("Content-Type", "application/x-www-form-urlencoded")
            .header("Sec-Fetch-Dest", "empty")
            .header("Sec-Fetch-Mode", "cors")
            .header("Sec-Fetch-Site", "same-origin")
            .header("X-Requested-With", "XMLHttpRequest")
            .header("x-ig-app-id", &params.app_id)
            .header("X-FB-LSD", &params.lsd_token)
            .header("X-CSRFToken", &params.csrf_token)
            .header("X-FB-Friendly-Name", "PolarisPostActionLoadPostQueryQuery")
            .header("x-asbd-id", "129477")
            .header("X-Bloks-Version-Id", &params.bloks_version_id)
            .header("Referer", "https://www.instagram.com/")
            .header("Cookie", &anon_cookie)
            .body(body)
            .send()
            .await?;

        if !response.status().is_success() {
            return Err(anyhow!("Instagram GQL retornou HTTP {}", response.status()));
        }

        let json: serde_json::Value = response.json().await?;

        let data = json
            .get("data")
            .ok_or_else(|| anyhow!("Resposta GQL sem data"))?;

        let media = data
            .get("xdt_shortcode_media")
            .or_else(|| data.get("shortcode_media"));

        match media {
            Some(m) if !m.is_null() => Ok(m.clone()),
            _ => Err(anyhow!("Post not found via GQL")),
        }
    }

View on GitHub (pinned to 8600b91f42)