curl - command line tool for sending web requests.
Also, you can download executable from their website and run it from a directory or make it discoverable through PATH
, so it can be run from anywhere. Using a package manager is preferable as it simplifies the process of installing and updating the tool.
curl -H "Content-Type: application/json" -d <body> <link>
# -H "Content-Type: application/json" - adds header that tells server you're sending JSON data.
# -d '{"username": "test", "content": "hello"}' - sets request data.
# Using -d also sets method to POST, so -X POST can be ommited.
curl -H "Content-Type: application/json" -d '{"username": "test", "content": "hello"}' "https://discord.com/api/webhooks/123/w3bh00k_t0k3n"
# To make command more readable you can split it to multiple lines using backslash `\`
# and set webhook url as variable, so you don't need to paste it over and over again.
# Also you can add the variable to your `.*rc` file, so it persists on console reloads.
export WEBHOOK_URL="https://discord.com/api/webhooks/123/w3bh00k_t0k3n"
curl \
-H "Content-Type: application/json" \
-d '{"username": "test", "content": "hello"}' \
$WEBHOOK_URL
# In PowerShell you have to escape " with \ inside strings, so body string be parsed correctly.
$WEBHOOK_URL = "https://discord.com/api/webhooks/123/w3bh00k_t0k3n"
curl -H "Content-Type: application/json" -d '{\"username\": \"test\", \"content\": \"hello\"}' $WEBHOOK_URL
# ` is used for making command multiline
curl `
-H "Content-Type: application/json" `
-d '{\"username\": \"test\", \"content\": \"hello\"}' `
$WEBHOOK_URL
REM Notice double quotes around body and none around link.
SET WEBHOOK_URL=https://discord.com/api/webhooks/123/w3bh00k_t0k3n
curl -H "Content-Type: application/json" -d "{\"username\": \"test\", \"content\":\"hello\"}" %WEBHOOK_URL%
REM ^ is multiline splitter in cmd.
curl ^
-H "Content-Type: application/json" ^
-d "{\"username\": \"test\", \"content\": \"hello\"}" ^
%WEBHOOK_URL%
# -F 'payload_json={}' - sets json body.
# -F "file1=@cat.jpg" - adds cat.jpg file as attachment.
# -F "file2=@images/dog.jpg" - adds dog.jpg file from images directory.
# Using -F also sets "Content-Type: multipart/form-data" header specifying it can be ommited.
curl \
-F 'payload_json={"username": "test", "content": "hello"}' \
-F "file1=@cat.jpg" \
-F "file2=@images/dog.jpg" \
$WEBHOOK_URL