tonhowtf/omniget · error · anyhow

esse recurso é só para contas VIP do Trakt

Error message

esse recurso é só para contas VIP do Trakt

What it means

Thrown by TraktLists::get_page when Trakt returns HTTP 426 (Upgrade Required) for an authenticated list request. Trakt restricts certain resources (notably some list/watchlist features) to VIP accounts, so a free account cannot access them.

Solutions

  1. Upgrade to Trakt VIP or use an account with VIP status
  2. Avoid requesting VIP-only endpoints/resources with free accounts (feature-gate in the UI)
  3. If you believe the resource should be accessible, verify the exact endpoint's requirements in Trakt's API docs
Defensive patterns

Strategy: validation

Validate before calling

// feature-gate VIP-only resources before requesting them
if !account.is_vip && resource.requires_vip {
    return Err("este recurso exige Trakt VIP".into());
}

Try / catch

match get_page(url).await {
    Err(e) if e.to_string().contains("VIP") => {
        // hide the feature or show an upsell message
    }
    other => other?,
}

Prevention

When it happens

Trigger: Requesting a VIP-only Trakt resource with a free-account token and receiving HTTP 426.

Common situations: Free Trakt users syncing lists that require VIP; a resource that used to be free became VIP-only; testing with a non-VIP account.

Understand the failure class

Background: "API error: {status}" and "HTTP 401/403/404/429/5xx" errors: non-2xx HTTP responses explained — this error's family across 27 libraries.

Related errors


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

Appendix: source

Thrown at src-tauri/omniget-core/src/core/tools/lists/trakt.rs:485

                .http
                .get(&url)
                .header("Content-Type", "application/json")
                .header("trakt-api-version", "2")
                .header("trakt-api-key", &self.client_id)
                .header(
                    reqwest::header::AUTHORIZATION,
                    format!("Bearer {}", self.token),
                )
                .send()
                .await?;
            let status = r.status();
            if status.as_u16() == 401 {
                return Err(anyhow!(
                    "o Trakt recusou o token (401). Reconecte a conta no botão acima"
                ));
            }
            if status.as_u16() == 426 {
                return Err(anyhow!("esse recurso é só para contas VIP do Trakt"));
            }
            if status.as_u16() == 420 {
                return Err(anyhow!(
                    "a conta do Trakt bateu no limite do plano gratuito (HTTP 420)"
                ));
            }
            if status.as_u16() == 423 {
                return Err(anyhow!(
                    "a conta do Trakt está bloqueada; fale com o suporte deles"
                ));
            }
            if status.as_u16() == 429 || status.is_server_error() {
                if attempt == 4 {
                    return Err(anyhow!("o Trakt está limitando o acesso (HTTP {})", status));
                }
                let retry = r
                    .headers()
                    .get(reqwest::header::RETRY_AFTER)

View on GitHub (pinned to 8600b91f42)