tonhowtf/omniget · error

Pinterest: (HTTP )

Error message

Pinterest: {} (HTTP {})

What it means

Catch-all for Pinterest error responses that are neither 404 nor 401/403: the client throws "Pinterest: {message} (HTTP {code})" carrying Pinterest's error message and status. It signals an upstream API failure outside the specifically handled cases.

Solutions

  1. Read the HTTP code in the message: retry with exponential backoff for 429/5xx, fix the request for 4xx.
  2. Throttle request rate and add jitter if you see 429 repeatedly.
  3. Check Pinterest's status/platform for ongoing incidents on 5xx.
  4. Validate request parameters/URLs for 400 responses.
Defensive patterns

Strategy: retry

Try / catch

match fetch() {
    Err(e) if e.to_string().contains("(HTTP 429)") || e.to_string().contains("(HTTP 5") => {
        tokio::time::sleep(backoff).await; // exponential backoff + jitter
        retry();
    }
    other => other?,
}

Prevention

When it happens

Trigger: Pinterest responding with any other error status — 429 rate limiting, 5xx server errors, 400 bad request — with a JSON body containing an error message.

Common situations: Request bursts hitting Pinterest rate limits (429); temporary Pinterest outages (5xx); malformed parameters rejected with 400; region-blocked requests.

Related errors


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

Appendix: source

Thrown at src-tauri/omniget-core/src/core/tools/pinterest/api.rs:923

                    .as_str()
                    .or_else(|| rr["error"]["message"].as_str())
                    .unwrap_or("resposta sem status de sucesso");
                let code = rr["error"]["http_status"]
                    .as_u64()
                    .unwrap_or(status.as_u16() as u64);
                if code == 404 {
                    return Err(anyhow!(
                        "nao encontrado no Pinterest (privado, removido ou URL errada): {}",
                        msg
                    ));
                }
                if code == 401 || code == 403 {
                    return Err(anyhow!(
                        "o Pinterest negou o acesso ({}); para boards secretos informe os cookies",
                        msg
                    ));
                }
                return Err(anyhow!("Pinterest: {} (HTTP {})", msg, code));
            }
            let bookmark = body["resource"]["options"]["bookmarks"]
                .as_array()
                .and_then(|a| a.first())
                .and_then(|b| b.as_str())
                .map(|b| b.to_string())
                .or_else(|| rr["bookmark"].as_str().map(|b| b.to_string()))
                .filter(|b| b != "-end-" && !b.starts_with("Y2JOb25lO"));
            return Ok((rr["data"].clone(), bookmark));
        }
    }

    pub async fn pin(&self, id: &str) -> anyhow::Result<Pin> {
        let (data, _) = self
            .resource(
                "Pin",
                json!({ "id": id, "field_set_key": "detailed" }),
                &format!("/pin/{}/", id),

View on GitHub (pinned to 8600b91f42)