temporalio/temporal · error
failed to parse link header: invalid parameter format: %s
Error message
failed to parse link header: invalid parameter format: %s
What it means
Error "failed to parse link header: invalid parameter format: %s" thrown in temporalio/temporal.
Source
Thrown at common/nexus/nexusrpc/api.go:199
params := strings.Split(encodedLink[urlEnd+1:], ";")
// must contain at least one semi-colon, and first param must be empty since
// it corresponds to the url part parsed above.
if len(params) < 2 {
return link, fmt.Errorf("failed to parse link header: invalid format: %s", encodedLink)
}
if strings.TrimSpace(params[0]) != "" {
return link, fmt.Errorf("failed to parse link header: invalid format: %s", encodedLink)
}
typeKeyFound := false
for _, param := range params[1:] {
param = strings.TrimSpace(param)
if len(param) == 0 {
return link, fmt.Errorf("failed to parse link header: parameter is empty: %s", encodedLink)
}
kv := strings.SplitN(param, "=", 2)
if len(kv) != 2 {
return link, fmt.Errorf("failed to parse link header: invalid parameter format: %s", param)
}
key := strings.TrimSpace(kv[0])
val := strings.TrimSpace(kv[1])
if strings.HasPrefix(val, `"`) != strings.HasSuffix(val, `"`) {
return link, fmt.Errorf(
"failed to parse link header: parameter value missing double-quote: %s",
param,
)
}
if strings.HasPrefix(val, `"`) {
val = val[1 : len(val)-1]
}
if key == linkTypeKey {
if err := validateLinkType(val); err != nil {
return link, fmt.Errorf("failed to parse link header: %w", err)
}
link.Type = val
typeKeyFound = trueView on GitHub (pinned to bde624efd1)
When it happens
Trigger: Thrown at common/nexus/nexusrpc/api.go:199 when the library encounters an invalid state.
Common situations: See trigger scenarios.
Understand the failure class
- Parsing and encoding errors: unexpected token, malformed input — why parsers reject input and how to find the real culprit.
AI-assisted analysis of temporalio/temporal@bde624efd1 (2026-09-01).
Data as JSON: /api/errors/0b5728b1bce6d509.
Report an issue: GitHub.