When you send a webhook request to Discord with the ?wait=true query parameter, the API should return a full message object including the message ID, timestamp, and content. However, many developers report that the response is empty or returns only a minimal status code instead of the expected object. This usually happens because of a misconfigured request, incorrect HTTP method, or a missing required header. This article explains why the wait parameter fails and provides step-by-step fixes to get the full message object back.
Key Takeaways: Fixing the Discord Webhook Wait Parameter
- POST method with
?wait=truequery string: The webhook endpoint must use POST and include the?wait=trueparameter in the URL, not in the JSON body. - Content-Type header set to
application/json: The request must include this header for Discord to parse the message payload correctly. - Discord API response object fields: A successful response returns
id,channel_id,content,timestamp, and other fields.
Why the Wait Parameter Returns an Empty Response
The Discord webhook API uses a RESTful interface. When you send a POST request to /api/webhooks/{webhook.id}/{webhook.token}?wait=true, the server processes the message and returns a JSON object representing the created message. If the wait parameter is missing or not correctly appended, Discord returns a 204 No Content status with no body. This is by design — without wait, the API acknowledges the request but does not return the message object to save bandwidth.
The most common root causes for the parameter not working are:
- The
?wait=trueis placed in the request body instead of the URL query string. - The HTTP method used is GET, PUT, or PATCH instead of POST.
- The
Content-Typeheader is missing or set tomultipart/form-datawithout proper encoding. - The webhook URL is malformed or includes extra slashes.
- The request library or tool automatically strips query parameters from POST requests.
Understanding these causes helps you pinpoint the exact misconfiguration in your code or testing tool.
Steps to Fix the Wait Parameter and Get the Message Object
- Verify the webhook URL format
Ensure your webhook URL looks exactly like this:https://discord.com/api/webhooks/1234567890/abcdefg?wait=true. The?wait=truemust be appended directly after the webhook token, with no extra spaces or line breaks. If you are using a variable, concatenate the base URL and the query string. - Use the POST HTTP method
Discord only returns the message object on POST requests. If you send a GET request to the webhook URL, you will receive a405 Method Not Allowederror. In your code, explicitly set the method to POST. - Set the correct Content-Type header
Add the headerContent-Type: application/jsonto your request. For multipart messages with file attachments, usemultipart/form-databut still include?wait=truein the URL. Discord ignores thewaitparameter if the header is missing. - Send a valid JSON body
The request body must be a valid JSON object with at least acontentfield. Example:{"content": "Hello from webhook"}. An empty body or invalid JSON causes Discord to return400 Bad Requestwithout the message object. - Check for trailing slashes in the URL
If your webhook URL ends with a slash (/), remove it before adding?wait=true. A trailing slash changes the endpoint and the parameter may be ignored. Correct:https://discord.com/api/webhooks/123/abc?wait=true. Incorrect:https://discord.com/api/webhooks/123/abc/?wait=true. - Test with a raw HTTP client
Use a tool like curl or Postman to isolate the issue. Run this curl command:curl -X POST -H "Content-Type: application/json" -d '{"content":"test"}' "https://discord.com/api/webhooks/1234567890/abcdefg?wait=true"
If this returns the full message object, the problem is in your application code.
If Discord Still Returns No Message Object
Webhook token contains special characters
If your webhook token includes characters like +, /, or =, the URL must be percent-encoded. However, Discord tokens are base64-encoded and usually safe. If you copy the token manually, ensure no extra spaces or invisible characters are included.
Request library strips query parameters
Some HTTP libraries (like Python’s requests or Node.js axios) allow you to pass query parameters as a separate object. If you pass params: {wait: true} separately, the library may not append it to the URL for POST requests. Always concatenate the parameter directly into the URL string before making the request.
Rate limiting or API outage
If you send many requests in a short time, Discord may rate-limit your webhook and return 429 Too Many Requests with no body. Check the X-RateLimit-Remaining header. If you suspect an API outage, visit the Discord status page at status.discord.com.
Webhook deleted or invalid
If the webhook was deleted from the server, Discord returns 404 Not Found. Confirm the webhook still exists by going to Server Settings > Integrations > Webhooks and checking the URL. You may need to create a new webhook.
Discord Webhook Response: With Wait vs Without Wait
| Item | With wait=true | Without wait |
|---|---|---|
| HTTP status code | 200 OK | 204 No Content |
| Response body | Full message object (id, channel_id, content, timestamp, author, etc) | Empty |
| Use case | When you need the message ID for logging, editing, or deleting | When you only need to send a message and do not care about the response |
| API overhead | Slightly higher due to object serialization | Lower — minimal processing |
By using the wait parameter correctly, you can retrieve the message object and perform actions like editing or deleting the message later. Remember to store the returned id field for those operations. If you are building a bot or integration that needs to track messages, always include ?wait=true in your POST request.