Tencent/WeKnora · error
marshal request body: %w
Error message
marshal request body: %w
What it means
json.Marshal of the outgoing Notion API request body failed in doRequest. Since bodies are struct/map values built in code, this indicates an unsupported type (e.g. channel, func, or cyclic data) was passed as the request body.
Source
Thrown at internal/datasource/connector/notion/client.go:69
select {
case <-t.C:
return nil
case <-ctx.Done():
return ctx.Err()
}
}
// doRequest performs an authenticated, rate-limited HTTP request to the Notion API.
func (c *notionClient) doRequest(ctx context.Context, method, path string, body interface{}) ([]byte, error) {
if err := c.limiter.Wait(ctx); err != nil {
return nil, fmt.Errorf("rate limiter: %w", err)
}
var bodyReader io.Reader
if body != nil {
bodyBytes, err := json.Marshal(body)
if err != nil {
return nil, fmt.Errorf("marshal request body: %w", err)
}
bodyReader = bytes.NewReader(bodyBytes)
}
req, err := http.NewRequestWithContext(ctx, method, c.baseURL+path, bodyReader)
if err != nil {
return nil, fmt.Errorf("create request: %w", err)
}
req.Header.Set("Authorization", "Bearer "+c.token)
req.Header.Set("Notion-Version", NotionAPIVersion)
req.Header.Set("Content-Type", "application/json")
var lastErr error
for attempt := 0; attempt <= maxRetries; attempt++ {
if attempt > 0 {
if body != nil {
bodyBytes, _ := json.Marshal(body)
req.Body = io.NopCloser(bytes.NewReader(bodyBytes))View on GitHub (pinned to 988cbb0330)
Solutions
- Check the body argument for unsupported value types
- Ensure nested values are JSON-serializable structs/maps
- Marshal the body once at construction to fail fast
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at internal/datasource/connector/notion/client.go:69 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of Tencent/WeKnora@988cbb0330 (2026-09-02).
Data as JSON: /api/errors/60bee9a1b7bc3ba8.
Report an issue: GitHub.