Proxy Community
How to properly use curl POST JSON in my API requests? or What's the correct syntax for a curl POST J - Printable Version

+- Proxy Community (https://proxycommunity.com/forum)
+-- Forum: Technical Community Support (https://proxycommunity.com/forum/forum-technical-community-support)
+--- Forum: API and Development (https://proxycommunity.com/forum/forum-api-and-development)
+--- Thread: How to properly use curl POST JSON in my API requests? or What's the correct syntax for a curl POST J (/thread-how-to-properly-use-curl-post-json-in-my-api-requests-or-what-s-the-correct-syntax-for-a-curl-post-j)

Pages: 1 2


How to properly use curl POST JSON in my API requests? or What's the correct syntax for a curl POST J - dataDashX77 - 26-07-2024

"Help! Can't figure out curl post json syntax for my API..."

Hey folks, struggling to get my curl post json request working. Tried a bunch of stuff but keep getting errors or empty responses.

Here's what I'm trying:
```bash
curl -X POST https://api.example.com/data -d '{"name": "test", "value": 123}'
```
But the server acts like it's not even JSON? Am I missing headers or something?

Also, seen people use `-H "Content-Type: application/json"`—is that *always* needed for curl post json?

Would love a *simple* example that actually works. Bonus points if you explain why my version fails.

Thanks in advance! (and pls no "RTFM" replies, I did... kinda 😅)

---
*PS: Using Windows cmd, if that matters. Quotes always mess me up.*


“” - deepNomadX - 29-12-2024

Hey! Yeah, the `-H "Content-Type: application/json"` header is *usually* required for curl post json requests. Some APIs are strict about it.

Try this:
```bash
curl -X POST https://api.example.com/data -H "Content-Type: application/json" -d '{"name":"test","value":123}'
```

If you're on Windows cmd, escaping quotes can be a pain. Use double quotes outside and escape inner ones with backslashes:
```bash
curl -X POST https://api.example.com/data -H "Content-Type: application/json" -d "{\"name\":\"test\",\"value\":123}"
```

Also, check out Postman or Insomnia for testing APIs—way easier than wrestling with curl post json syntax!


“” - vpnStorm_88 - 13-01-2025

Dude, Windows cmd is the worst for curl post json. Powershell might save you here. Try this:

```powershell
curl.exe -X POST https://api.example.com/data -H "Content-Type: application/json" -d '{\"name\":\"test\",\"value\":123}'
```

Or just use WSL if you can.

Pro tip: Add `-v` to your curl command to see the raw request/response. Might show why the server’s ignoring your JSON.


“” - WebVeil - 07-02-2025

Your curl post json is *almost* right, but yeah, missing headers. Some APIs also expect `Accept: application/json`. Here’s a bulletproof version:

```bash
curl -X POST https://api.example.com/data \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"name":"test","value":123}'
```

If it still fails, the API might need auth (like an API key). Check their docs!


“” - MaskerOne - 01-03-2025

Windows cmd hates JSON quotes. Try this monstrosity:

```bash
curl -X POST https://api.example.com/data -H "Content-Type: application/json" -d "{\"name\":\"test\",\"value\":123}"
```

Or, honestly? Use `curl --data @file.json` and save the JSON to a file. Less headache.

For debugging, `curl -i` shows headers in the response—might clue you in on what’s wrong.


“” - dataDashX77 - 01-03-2025

OP here—wow, thanks everyone! The header was the issue, and escaping quotes in cmd *sucked*, but this worked:

```bash
curl -X POST https://api.example.com/data -H "Content-Type: application/json" -d "{\"name\":\"test\",\"value\":123}"
```

Still got a 401 though... do I need an API key in the headers too? Docs are vague.

Also, gonna try Postman like someone suggested. Cheers!


“” - AnonOrbitX - 03-03-2025

Not all APIs are the same, but 99% of the time, curl post json needs `Content-Type: application/json`. Some APIs also freak out if you don’t include `-X POST` (even though `-d` implies POST).

Try:
```bash
curl https://api.example.com/data -H "Content-Type: application/json" -d '{"name":"test","value":123}'
```

If it’s still broken, the API might want nested JSON or different fields. Check their docs or post the error here.


“” - ProxyStorm99 - 06-03-2025

For curl post json, headers are non-negotiable. Also, Windows cmd butchers quotes. Two fixes:

1. Use double quotes *outside*, escape inner ones:
```bash
curl -X POST https://api.example.com/data -H "Content-Type: application/json" -d "{\"name\":\"test\",\"value\":123}"
```

2. Or use `curl --data-binary` to avoid quote chaos:
```bash
curl -X POST https://api.example.com/data -H "Content-Type: application/json" --data-binary "@data.json"
```

Save your JSON to `data.json` first. Lifesaver for Windows users.