tonhowtf/omniget · error · anyhow::Error

Twitch GQL retornou HTTP

Error message

Twitch GQL retornou HTTP {}

What it means

The Twitch GQL endpoint answered the clip-metadata query with a non-success HTTP status; the {} is the raw code. The request was well-formed but rejected — usually rate limiting or a transient Twitch-side error, since the client-id is fixed.

Solutions

  1. Wait a moment and retry the clip request
  2. Check Twitch status pages for GQL/API incidents
  3. Fall back to yt-dlp based metadata fetching for this clip
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at src-tauri/src/platforms/twitch/mod.rs:139 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/15926eacdf897e03. Report an issue: GitHub.

Appendix: source

Thrown at src-tauri/src/platforms/twitch/mod.rs:139

    async fn fetch_clip_metadata(&self, slug: &str) -> anyhow::Result<ClipMetadata> {
        let query = format!(
            r#"{{ clip(slug: "{}") {{ broadcaster {{ login }} curator {{ login }} durationSeconds id medium: thumbnailURL(width: 480, height: 272) title videoQualities {{ quality sourceURL }} }} }}"#,
            slug
        );

        let body = serde_json::json!({ "query": query });

        let response = self
            .client
            .post(GQL_URL)
            .header("client-id", CLIENT_ID)
            .json(&body)
            .send()
            .await?;

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

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

        let clip = json
            .pointer("/data/clip")
            .ok_or_else(|| anyhow!("Clip not found: {}", slug))?;

        if clip.is_null() {
            return Err(anyhow!("Clip not found: {}", slug));
        }

        let title = clip
            .get("title")
            .and_then(|v| v.as_str())
            .unwrap_or("Untitled")
            .to_string();

View on GitHub (pinned to 8600b91f42)