n8n HTTP POST to api.follow.is returns 400 (“{}”); JSON body not accepted
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 39k
- Forks
- 2.1k
- Avg merge
- 1d 4h
- Merged PRs (30d)
- 10
Description
Platform
Desktop - macOS
Describe the bug
Hello Folo Team,
I’m trying to push content into my Folo inbox via HTTP as per the Webhook docs, but the server consistently returns 400. Could you please help diagnose?
Context
- Goal: Push a test item into my Folo inbox
- Endpoint: POST https://api.follow.is/
- X-Follow-Handle: [33123@follow.re](mailto:33123@follow.re)
- X-Follow-Secret: FkqSR66lKq_l1eGymDkO6
- Client: n8n v1.107.3 (self‑hosted)
Error observed
- n8n error summary:
- errorMessage: "Bad request - please check your parameters"
- errorDescription: "400 - "{}""
- httpCode: "400"
- When body validation fails locally in n8n:
- "JSON parameter needs to be valid JSON"
Requests I sent (two reproducible cases)
- cURL (Windows quoting; Mac/Linux equivalent works with single quotes)
curl -X POST "https://api.follow.is/" ^
-H "Content-Type: application/json" ^
-H "X-Follow-Handle: [33123@follow.re](mailto:33123@follow.re)" ^
-H "X-Follow-Secret: FkqSR66lKq_l1eGymDkO6" ^
-d "{"guid":"demo-2025-10-25-063700Z","publishedAt":"2025-10-25T06:37:00Z","title":"Minimal test","url":"https://example.com/","content":"hello","language":"zh-CN","categories":["test"]}"
- n8n HTTP Request node
- Method: POST
- URL: https://api.follow.is/
- Headers: Content-Type=application/json; [X-Follow-Handle=33123@follow.re](mailto:X-Follow-Handle=33123@follow.re); X-Follow-Secret=FkqSR66lKq_l1eGymDkO6
- Send Body: ON; Body type: JSON
- Raw JSON (single line):
{"guid":"demo-2025-10-25-063800Z","publishedAt":"2025-10-25T06:38:00Z","title":"Minimal test","url":"https://example.com/","content":"hello","language":"zh-CN","categories":["test"]}
Behavior
- Server responds 400 with body shown as "{}". It looks like the JSON body isn’t being accepted, or I may be missing a required field/format or using outdated endpoint/headers.
Questions
-
Is the endpoint and header usage (X-Follow-Handle / X-Follow-Secret) correct? Any newer/recommended hostname/path?
-
For WebhookPayload, are there mandatory fields or strict formats (e.g., publishedAt timezone/format, categories as array) that would trigger a 400?
-
Does the server intentionally return "{}" for invalid/empty bodies, and can more specific error details be surfaced?
-
Any constraints on body size, charset, or escaping (e.g., HTML/newlines in content)?
-
Is there a sample Postman collection or echo endpoint to verify requests?
I can provide full raw HTTP logs, timestamps, and request IDs if needed. Thanks for your help!
Best regards,
Changmao Lin
Email: [7350021@qq.com](mailto:7350021@qq.com)
Time: 2025-10-25 14:36 (Asia/Shanghai)
Entry ID
No response
Relevant Information
No response
Reproduction Video
No response
Environment
No response
Validations
- Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
- Check that this is a concrete bug. For Q&A, please open a GitHub Discussion instead.
- This issue is valid
Contributions
- I am willing to submit a PR to fix this issue
- I am willing to submit a PR with failing tests (actually just go ahead and do it, thanks!)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The reported entry point is POST https://api.follow.is/; begin by reading the Webhook docs and tracing how WebhookPayload is validated. Reproduce the supplied cURL and n8n requests, then determine the required fields and whether invalid payloads return useful error details.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- api, backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100