zeroclaw-labs/zeroclaw · error · anyhow::Error
files.getUploadURLExternal failed: {err}
Error message
files.getUploadURLExternal failed: {err} What it means
Error "files.getUploadURLExternal failed: {err}" thrown in zeroclaw-labs/zeroclaw.
Source
Thrown at crates/zeroclaw-channels/src/slack.rs:1153
.unwrap_or_else(|| "attachment.bin".to_string());
let length = attachment.data.len().to_string();
let upload_resp = self
.http_client()
.post(self.slack_api_url("files.getUploadURLExternal"))
.bearer_auth(&self.bot_token)
.form(&[
("filename", file_name.as_str()),
("length", length.as_str()),
])
.send()
.await?;
let upload_body: serde_json::Value = upload_resp.json().await?;
if upload_body.get("ok") != Some(&serde_json::Value::Bool(true)) {
let err = upload_body
.get("error")
.and_then(|value| value.as_str())
.unwrap_or("unknown");
anyhow::bail!("files.getUploadURLExternal failed: {err}");
}
let upload_url = upload_body
.get("upload_url")
.and_then(|value| value.as_str())
.context("files.getUploadURLExternal response missing upload_url")?;
let file_id = upload_body
.get("file_id")
.and_then(|value| value.as_str())
.context("files.getUploadURLExternal response missing file_id")?;
let upload_status = self
.http_client()
.post(upload_url)
.body(attachment.data.clone())
.send()
.await?;
let status = upload_status.status();
if !status.is_success() {View on GitHub (pinned to 88bb9c8533)
Solutions
- Verify the Slack bot token has files:write scope and the workspace allows uploads; retry after fixing permissions.
When it happens
Trigger: Thrown at crates/zeroclaw-channels/src/slack.rs:1153 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of zeroclaw-labs/zeroclaw@88bb9c8533 (2026-08-23).
Data as JSON: /api/errors/cca29992a72bdc16.
Report an issue: GitHub.