Symptom: 400 invalid request with errors entries pointing at personalizations.
1. Every personalization object must contain a to array, and every object in that array must contain an email address. A missing or empty to is the classic 400.
2. Keep personalizations under 1000 items per request. Batch larger sends.
3. Validate addresses before building the request. A malformed address fails the request instead of bouncing quietly.
4. If you set per-personalization from, subject, or send_at, each one must be valid on its own; one bad entry fails the whole request.
5. When the errors array is vague, run the same body through sandbox mode: it returns the same validation errors without delivering anything.
Shape to aim for: personalizations is an array of {to: [{email}], subject?, send_at?}, with from/content/template_id at the top level.