When you send an embed to a Discord channel using a bot or a webhook, you may see the error 50035 Invalid Form Body. This error means the embed data you provided does not match what Discord expects. The problem is almost always caused by a field that is too long, missing a required property, or using an incorrect data type. This article explains the exact causes of the 50035 error and gives you step-by-step fixes to correct your embed payload.
Key Takeaways: Fixing Discord Error 50035 on Embed Send
- Embed field character limits: Title max 256 characters, description max 4096 characters, each field name max 256 characters, each field value max 1024 characters.
- Embed object structure: The embed object must be a JSON object with valid keys like
title,description,fields,color— no extra or misspelled keys. - Webhook execute endpoint: When using a webhook, the embed must be wrapped in an array under the
embedskey, not sent as a top-level object.
Why Discord Returns Error 50035 for Embed Sends
Discord’s API validates every embed payload against strict rules. The 50035 error is a validation failure. The API returns this error when at least one of the following conditions is true:
Field Length Limits Exceeded
Each embed field has a maximum character count. If you send a title longer than 256 characters, a description longer than 4096 characters, a field name longer than 256 characters, or a field value longer than 1024 characters, the API rejects the embed. The error message usually specifies which field is too long, for example “title: Must be 256 or fewer in length.”
Missing Required Fields or Incorrect Data Types
The embed object requires a valid structure. You cannot send a string where an object is expected. For example, the author field must be an object with a name property, not a plain string. Similarly, the footer field must be an object with a text property. If you omit the name property from the author object, the API returns 50035.
Incorrect Embed Wrapping for Webhooks
When sending an embed via a webhook, the embed must be placed inside an array under the embeds key. Sending the embed directly as the top-level JSON object causes a 50035 error. The correct payload structure is {"content": "optional message", "embeds": [{"title": "My Embed"}]}.
Steps to Fix Discord Error 50035 Invalid Form Body
Follow these steps in order. After each step, test your embed send again.
- Check the Exact Error Message
Look at the full error response. The API returns a message like “title: Must be 256 or fewer in length.” or “footer: Must be an object.” This tells you exactly which field is invalid. Copy the error message for reference. - Validate Field Character Limits
Count characters in every string field of your embed. Use an online character counter or a script. Ensure:
– Title ≤ 256 characters
– Description ≤ 4096 characters
– Each field name ≤ 256 characters
– Each field value ≤ 1024 characters
– Footer text ≤ 2048 characters
– Author name ≤ 256 characters
If any field exceeds its limit, shorten it. - Verify Embed Object Structure
Your embed must be a JSON object with valid keys. Allowed keys are:title,description,url,color,timestamp,footer,image,thumbnail,video,author,fields. Do not include any other keys. Each sub-object must have its required properties:
–footermust containtext(string)
–authormust containname(string)
–fieldsmust be an array of objects, each withnameandvalue(both strings) and optionalinline(boolean) - Wrap Embed in an Array for Webhooks
If you are using a webhook, ensure the embed is inside an array under theembedskey. Correct example:{"content": "Hello", "embeds": [{"title": "Test", "description": "This works"}]}
Incorrect:{"content": "Hello", "title": "Test"}— this will fail with 50035. - Check for Trailing Commas or Invalid JSON
If you are writing the embed manually, ensure the JSON is valid. Use a JSON validator (like jsonlint.com) to catch trailing commas, missing quotes, or extra commas in arrays. A single syntax error causes the entire payload to be rejected. - Test with a Minimal Embed
Create the simplest possible embed to isolate the issue. Send only{"embeds": [{"title": "Test"}]}. If that works, add fields one at a time until the error returns. This pinpoints the problematic field.
If Discord Still Returns Error 50035 After the Main Fix
Embed Color Value Is Invalid
The color field must be an integer representing a decimal color value. Do not use hex strings like “#FF0000”. Convert hex to decimal. For red, use 16711680. For blue, use 255. Sending a string or a float causes 50035.
Timestamp Format Is Wrong
The timestamp field must be an ISO 8601 string, for example “2025-01-15T14:30:00Z”. Sending a Unix timestamp, a different date format, or an invalid date string triggers the error. Use a date library to generate the correct ISO string.
Embed Array Contains Non-Object Elements
The embeds array must contain only JSON objects. If you accidentally include a string, number, or null inside the array, the API returns 50035. Ensure every element in the array is a valid embed object.
Common Embed Payload Mistakes: Valid vs Invalid
| Payload Element | Valid Format | Invalid Format |
|---|---|---|
| Title length | “title”: “My Short Title” (≤256 chars) | “title”: “A very long title that exceeds 256 characters…” |
| Author object | “author”: {“name”: “Bot”} | “author”: “Bot” |
| Footer object | “footer”: {“text”: “Footer text”} | “footer”: “Footer text” |
| Fields array | “fields”: [{“name”: “Field1”, “value”: “Value1”}] | “fields”: [“Field1”, “Value1”] |
| Color value | “color”: 16711680 | “color”: “#FF0000” |
| Webhook embed | {“embeds”: [{“title”: “Test”}]} | {“title”: “Test”} |
After correcting your embed payload, the 50035 error should disappear. Always validate your JSON structure and character counts before sending. For automated bots, add error handling that logs the full API response to identify which field fails. If you use a library like discord.js, update it to the latest version because older versions may produce invalid embed structures.