Symptom: 'The sandbox mode enable param should be a boolean value.'
1. Send "mail_settings": {"sandbox_mode": {"enable": true}} with a real JSON boolean. The string "true" fails.
2. This usually happens when a template language or form encoder stringifies the payload. Check what actually goes on the wire, not what your object looks like.
3. A valid sandbox request returns 200 OK. A real send returns 202. If you see 202, sandbox mode was not applied and the mail went out.
4. Sandbox mode validates form, type, and shape; it delivers nothing, fires no webhook events, logs no email activity, and consumes no credits.
5. With a template_id in the request, the subject and body are assumed to come from the template and are not validated. A sandbox 200 does not prove the template renders.
Use sandbox mode in CI for every mail path. It is the cheapest contract test SendGrid offers.