multica-ai/multica · error
download URL %q is relative but client has no BaseURL
Error message
download URL %q is relative but client has no BaseURL
What it means
Error "download URL %q is relative but client has no BaseURL" thrown in multica-ai/multica.
Source
Thrown at server/internal/cli/client.go:724
}
return json.NewDecoder(resp.Body).Decode(out)
}
// DownloadFile downloads a file from the given URL and returns the response body.
// This is used for downloading attachments via their signed download_url.
// Downloads are limited to 100 MB to match the upload size limit.
//
// The URL may be absolute (a signed CloudFront/S3 URL) or relative
// (a server-relative path like "/api/attachments/{id}/download" or
// "/uploads/...") depending on how the
// server is configured. Relative URLs are resolved against the client's
// BaseURL and sent with the standard auth headers; absolute URLs are
// used as-is so that their query-string signatures are not disturbed.
func (c *APIClient) DownloadFile(ctx context.Context, downloadURL string) ([]byte, error) {
isRelative := !strings.HasPrefix(downloadURL, "http://") && !strings.HasPrefix(downloadURL, "https://")
if isRelative {
if c.BaseURL == "" {
return nil, fmt.Errorf("download URL %q is relative but client has no BaseURL", downloadURL)
}
downloadURL = c.BaseURL + downloadURL
}
req, err := http.NewRequestWithContext(ctx, http.MethodGet, downloadURL, nil)
if err != nil {
return nil, err
}
if isRelative {
c.setHeaders(req)
}
resp, err := c.HTTPClient.Do(req)
err = wrapTransport(req, err)
if err != nil {
return nil, err
}
defer resp.Body.Close()View on GitHub (pinned to 2c0912b6ec)
Solutions
- Configure the client BaseURL, or use a server that returns absolute download URLs.
When it happens
Trigger: Thrown at server/internal/cli/client.go:724 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of multica-ai/multica@2c0912b6ec (2026-08-15).
Data as JSON: /api/errors/5e177d979eac3ee9.
Report an issue: GitHub.